ServerAction subclass: #ServletApp instanceVariableNames: 'counter ' classVariableNames: '' poolDictionaries: '' category: 'ServletApp'! !ServletApp commentStamp: 'vj 3/9/2003 03:01' prior: 0! Velmi jednoducha webova aplikace. Spusteni: "pro jistotu inicializujeme web server" PWS actions keys do: [ :a | PWS actions removeKey: a ifAbsent: []]. "zaregistrujeme nasi aplikaci" PWS link: 'default' to: (ServletApp new). "nastartujeme web server" "[ PWS serveShowingErrorsOnPort: 8888 ] " [ PWS serveOnPort: 8888 loggingTo: 'WWWlog.txt' ] forkAt: Processor userBackgroundPriority. Zastaveni: PWS actions removeKey: 'default' ifAbsent: []. PWS stopServer. "Paranoidní kontrola, zda nekde neco nevisi:" Smalltalk garbageCollect. ServletApp allInstances inspect. PWS actions inspect. ! !ServletApp methodsFor: 'URL processing' stamp: 'vj 3/8/2003 17:22'! process: request | command message theLast | "napred osetrime obrazky - pozname to podle pripony" request message size > 0 ifTrue: [ theLast _ request message last asLowercase ] ifFalse: [ theLast _ '' ]. theLast = 'gif' ifTrue: [^ self process: request MIMEtype: 'image/gif']. theLast = 'jpeg' ifTrue: [^ self process: request MIMEtype: 'image/jpeg']. theLast = 'jpg' ifTrue: [^ self process: request MIMEtype: 'image/jpeg']. "dale predpokladame, ze je to html" request reply: (PWS success), (PWS contentHTML), (PWS crlf). request message size > 0 ifTrue: [ command _ request message at: 1] ifFalse: [ command _ 'index' ]. message _ ('WWW', command, ':') asSymbol. (self respondsTo: message) ifTrue: [ self perform: message with: request ] ifFalse: [ request reply: 'Chyba URL']. ! ! !ServletApp methodsFor: 'URL processing' stamp: 'vj 4/30/2003 11:32'! process: request MIMEtype: type request reply: (PWS success), (PWS content: type), PWS crlf. "request reply: xxxxxx" "string/ByteArray obsahujici prislusny gif nebo jpg" "neco jako: (FileStream readOnlyFileNamed: fName) contentsOfEntireFile" "nebo" request reply: PWS crlfcrlf, 'file not found' ! ! !ServletApp methodsFor: 'dynamic web pages' stamp: 'vj 3/9/2003 01:43'! WWWcounter2: request | action | counter ifNil: [ counter _ 0 ]. [ counter _ Integer readFrom: (ReadStream on: (request fields at: 'state' ifAbsent: [counter printString])). ] ifError: []. [ action _ (request fields at: 'action' ifAbsent: [' ']). action = '++' ifTrue: [ counter _ counter + 1 ]. action = '--' ifTrue: [ counter _ counter - 1 ]. ] ifError: []. request reply: '
State: ', counter printString, '
Action: ', '++', ' ', '--', ' ', 'set', ''. ! ! !ServletApp methodsFor: 'dynamic web pages' stamp: 'vj 3/8/2003 23:52'! WWWcounterSet: request request reply: '