You are on page 1of 9

Hn1epne1 nporpaunpane c 1ava - uac1 7

Aemop. Cnernnn Haxon,


CV 'Cn. Knnmenr Oxpncxn
Web-site. http://www.nakov.com
Hoc.eoua npo+ua. 26.10.2002

B npexonara uacr or xypca ce sanosnaxme c ocnonnnre xonnennnn n Web-nporpamnpanero,
oxcnnxme xaxno e Java cpnner, xax ce csanar cpnnern n xax ce nsnnnxnar cc cpnp Tomcat.
B rasn uacr me nponxnm nsyuananero na Java cpnnernre, me noxaxem xax cpnnernre morar a
npnemar annn nneenn or norpenrenx nn nn na napamerpn, me oxcnnm xnsnennx nnxn na
cpnnernre n xax re morar a paorxr c mnoro norpenrenn enonpemenno xaro nsnonsnar HTTP
cecnn.

HTML qopun n nsnnnuane na annn1e o1 1nx
Bcnuxn cme nsnonsnann mamnnn sa rpcene n Hnrepner xaro Google n AltaVista n snaem, ue re
npecrannxnar Web-npnnoxennx, xonro npnemar or norpenrenx nxxonxo xnmuonn ymn n my
namnpar crpannnnre, n xonro resn ymn ce cpemar. Bepoxrno ncexn e saenxsan ue cne saanane na
saxnxara sa rpcene n nonero sa apec na payspa ce noxnxna nono URL cpxamo nneenara
]pasa sa rpcene samacxnpana cpe mnoxecrno crpannn cnmnonn. Hanpnmep axo n Google saaem
rpcene na ]pasara 'Svetlin Nakov, me nonyunm URL noono na rona:
http://www.google.com/search?qSvetlinNakov&iewindows-1251&hlbg&lr. uacrra or URL-ro
cne nnpocnrennnx snax cpxa annnre, nsnparenn xaro napamerpn xm rona URL, xonpann no
cnennanen naunn, napeuen URL-encoding. annnre or HTML ]opma morar a ar npeaenn xm
cpnpa no na naunna c GET nnn POST saxnxa. Hpn GET HTTP saxnxn, re ce npeanar cne URL-
ro xaro ce orenxr or nero c nnpocnrenen snax, a npn POST HTTP saxnxn ce npeanar saeno cc
saxnxara, orenenn or URL-ro na orenen pe.
Java cpnnernre nmar nrpaena nsmoxnocr sa nsnnnuane na nsnparennre or norpenrenx
annn. 3a nenra ce nsnonsna meror getParameter() na xnaca HttpServletRequest. Tosn mero npma
cronocrra na napamerp no saaeno nme nnn null axo raxn napamerp ne e nsnparen or payspa
na norpenrenx. Hapcnanero na napamerpnre n exonpanero nm or URL-encoded ]opmar n uncr
rexcr crana nannno anromarnuno, r.e. nporpamncrr ne e neoxonmo a ce rpnxn sa orenxnero na
napamerpnre enn or pyr, sa orenxnero nm or URL-ro n sa exonpanero na cnmnonnre, xonro ca
nnn samenenn c pyrn crnacno c nen a ce nsernar (escaped symbols). Ero enn npnmepen
cpnner, xoro emoncrpnpa necnorara c xoxro ce nonyuanar napamerpnre. To nonyuana xaro nxo
nme na norpenren (napamerp c nme username) n my xasna 'spane.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {
public void doGet (HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html");
ServletOutputStream out = resp.getOutputStream();
String userName = req.getParameter("user_name");
out.println("<HTML>");
out.println("<HEAD><TITLE>Hello Servlet</TITLE></HEAD>");
out.println("<BODY>");
out.println("<H1>Hello, " + userName + "</H1>");
out.println("</BODY></HTML>");
}
}
Ero n pesynrarr or nsnnnennero na rosn cpnner c napamerp 'Svetlin Nakov :

Moxem a nanpannm HTML ]opma, n xoxro norpenrenx cn nnme nmero n cne narncxane na
'submit yrona rona nme ce noana xaro napamerp na cpnnera HelloServlet. Ero enn npnmep:
<html>
<head> <title> Hello Form </title> </head>
<body>

<form method="GET" action="/servlet/HelloServlet">
Please enter your name:
<input type="text" name="user_name">
<input type="submit" value="OK">
</form>

</body></html>
Hpnmepnara HTML ]opma saana sa mero na HTTP sxnxara GET. Taxa npn narncxane na 'submit
yrona nneennx n nonero username rexcr ce npeana xaro onenen o URL-ro napamerp c nme
'username n cronocr nneenara n rexcronoro none. Ero xax nsrnexa ]opmara n payspa:

Ho nex HTML ]opmnre cnyxar sa anromarnsannx na nponeca na npeanane na napamerpn mexy
norpenrencxnx paysp xm cpnpcxn cxpnnrone, xonro opaornar resn napamerpn. Hmero na
cxpnnra, xoro payspr nsnnxna npn submit-nane na ]opmara, ce saana n arpnyra 'action, a
meror na HTTP saxnxara n arpnyra 'method na rara Iorm~. Bn ]opmara ce saanar pasnnunn
rexcronn n pyrn nonera, xaro nm ce saanar nmena. 3aaennre nmena cnnaar c nmenara na
napamerpnre, xonro ce renepnpar npn csanane na HTTP saxnxara xm cpnpa. Cnennannnxr yron
'submit cnyxn sa nsnpamane na annnre, nneenn nn ]opmara, xm nocouennx cxpnnr. Hpn
nsnpamanero na nonnnennre nn ]opmara annn paysepr ce rpnxn a rn xonpa no cranapra
'URL-encoding n a rn nsnparn npes URL-ro nnn xaro uacr or saxnxara n sanncnmocr ann merop
na ]opmara e GET nnn POST. Hpn nsnonsnanero na GET mero ncnuxn napamerpn ce onennar n
URL-ro, nopan xoero oemr nm ne moxe a e mnoro ronxm. Hpn nsnonsnanero na POST mero
ncnuxn napamerpn ce npeanar cxpnro, ne npes URL-ro n norpenrenxr nnxa camo nmero na
cxpnnna, xoro e opaornn annnre, no ne n camnre annn. Ko or nara meroa a ce nsnonsna e
nnpoc na npenenxa or crpana na Web-paspaorunxa.
3a yocrno na nporpamncra xnacr HttpServletRequest nma n mero sa nspoxnane na ncnuxn
nsnparenn napamerpn getParameterNames(). Tpxna a ce snae, ue npn nmenara na napamerpnre
manxnre n rnannnre yxnn ce pasnnuanar.

nsnen nnxsn na cspnne1n1e
Xnsnennxr nnxn na cpnnernre onncna rxxnoro noneenne or momenra, n xoro re ar
csaenn xaro oexrn na cpnpa (nncrannnpann) o momenra na rxxnoro npemaxnane or nero. Ha
xaprnnxara ca noxasann ocnonnnre meron, xoro peannsnpar xnsnennx nnxn na cpnnernre n
nocneonarennocrra na rxxnoro nsnnxnane:
init()
...()
service()
doGet()
doPost()
doDelete()
destroy()
doPut()

Hpn npno nsnnxnane na cpnnera cpnpr, xoro nsnnnxna cpnnernre n JSP cxpnnronere
(raxa napeuennx Web-xonrenep), nsnnxna meroa init(), e]nnnpan n xnaca HttpServet. Cpnnernre,
xonro nmar nyxa or enoxparna npnonauanna nnnnnannsannx npen sanounane na paorara cn,
rpxna a npnnoxpnxr rosn mero n a peannsnpar rasn cnox nnnnnannsannx. Hanpnmep enn
cpnner moxe a npouere or cpnpa nnn or nxxaxn ]an xon]nrypannonna nn]opmannx, xoxro a
nsnonsna no-nararx.
Hpn nacrnnane na saxnxa sa ocrn o cpnnera, noaena or Web-payspa na nxxo xnnenr,
cpnpr nsnnxna meroa service() or xnaca HttpServlet. Tosn mero anannsnpa rnna na saxnxara n
nsanncnmocr or rona ann saxnxara e GET, POST, PUT, DELETE nnn pyra, nsnnxna cornerno enn
or meronre doGet(), doPost(), doPut(), doDelete() n r.n. Honexe HTTP meronre PUT, DELETE,
HEAD, TRACE, OPTIONS n r.n. ce nsnonsnar mnoro pxxo n ne ca rnnnunn sa noneuero cpnnern,
nxma a rn pasrnexame. Meror doGet(), rpxna a e peannsnpan or cpnnernre, xonro
opaornar saxnxn noaenn no mero GET, nanpnmep axo opaornar annnre, nonyuenn or HTML
]opmn, sa xonro e saaeno method'GET. Ananornuno doPost() meror rpxna a e
peannsnpan, xoraro rpxna a ce opaorxr annn nonyuenn or HTML ]opmn, sa xonro meror e
POST. Axo ncxame a nanpannm cpnner, xoro opaorna enonpemenno n GET n POST saxnxn, ne e
xyano a npnnoxpnname npexrno meroa service(), samoro ro ce rpnxn sa npannnnara opaorxa
na HEAD saxnxnre n sa ome pyrn naxnn nema. Bmecro rona moxem a nmnnemenrnpane
opaorxara na annnre n meroa doGet(), a or doPost() npocro a nsnnxname doGet(). Tona e
npenopunrennnxr naunn sa opaorxa na annn, xonro ce ouaxna a npncrnrar n upes GET n upes
POST saxnxn.
Cne xaro cpnnerr e nsnnnen nenx, ro ocrana xaro oexr n namerra na nnpryannara
mamnna na Java n npn cnenamn nsnnxnannx ce nsnnnxna nenara, es a ce sapexa or .class ]ana
ornono. B pamxnre na eno Web-npnnoxenne enn cpnner ce nncrannnpa camo nenx. Koraro
nxxonxo xnnenra noncxar enn cpnner enonpemenno, Web-xonrenepr craprnpa enonpemenno
nxxonxo nnmxn (threads) n nsnnxna or ncxxa or rxx cpnnera n enn n cm momenr. Honexe ncexn
cpnner nma camo ena nncrannnx n cpnpa, ro xnacr, xoro peannsnpa rosn cpnner, saeno c
unen-npomennnnnre, xonro ca e]nnnpann n nero, ce nncrannnpar camo nenx n pamxnre na Web-
npnnoxennero. Cneonarenno paorara c resn unen-npomennnnn ne e thread-saIe, r.e. ne e
oesonacena or nponemn c xonxypenrnnx ocrn npn saxnxn or nxxonxo norpenrenx
enonpemenno. 3arona e neoxonmo nporpamncrr a nma npenn, ue e nsmoxno xor na
enncrnenara nncrannnx na nanncannx or nero cpnner a ce nsnnnxna enonpemenno or nxxonxo
nnmxn (threads) n sarona rpxna a ce rpnxn sa cnnxponnsannx na ocrna o unen-npomennnnnre na
cpnnera, xaxro n pyrnre pecypcn, xonro nsnonsna.
Koraro cpnpr no nxxaxna npnunna pemn a npemaxne or namerra enn cpnner (nanpnmep
npn nameca na amnnncrparopa), ce nsnnxna meroa destroy() na xnaca HttpServet. B peannsannxra na
rosn mero cpnnernre rpxna a ocnooxr saernre or rxx pecypcn n a ]nnannsnpar paorara cn.
Tnnnuen npnmep sa nsnonsnane na init() n destroy() meronre npn npocrn npnnoxennx e sa ornapxne
n sarnapxne na npsxara xm asara annn, xoraro ce nsnonsna raxana. Hpn no-cnoxnn npnnoxennx
npsxara xm asara annn ce ynpannxna or cnennanna xomnonenra na cncremara nsnecrna xaro
'connection pool. Meror destroy() ce nsnonsna no-pxxo or meroa init(), samoro Java
ocnooxana anromarnuno nxxon rnnone pecypcn, xaro nanpnmep namerra, npn ynnmoxananero na
oexr. Ero enn npnmep sa cpnner, xoro nsnonsna meronre init(), destroy(), doGet() n doPost() n
cmenpemenno emoncrpnpa xax or cpnner moxe a ce renepnpa nnamnuno JPEG nsopaxenne n
a ce npne xaro orronop na xnnenrcxara saxnxa:
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;
import java.io.*;
import java.util.Date;

public class ImageServlet extends HttpServlet {
private int mVisitCounter;
private String mStartDate;

public void init() {
mStartDate = new Date().toString();
mVisitCounter = 0;
}

public BufferedImage createImage(String msg) {
Font font = new Font("Serif", Font.BOLD, 24);
FontMetrics fm =
new Canvas().getFontMetrics(font);
int width = fm.stringWidth(msg) + 20;
int height = fm.getHeight();
BufferedImage image = new BufferedImage(
width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setColor(Color.red);
g.fillRect(0, 0, width, height);
g.setFont(font);
g.setColor(Color.black);
g.drawString(msg, 12, fm.getAscent()+2);
g.setColor(Color.yellow);
g.drawString(msg, 10, fm.getAscent());
return image;
}

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
String msg;
synchronized(mStartDate) {
mVisitCounter++;
msg = "Page visited " + mVisitCounter +
" times since " + mStartDate;
}
BufferedImage image = createImage(msg);
response.setContentType("image/jpeg");
OutputStream out = response.getOutputStream();
JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam jpegParams =
encoder.getDefaultJPEGEncodeParam(image);
jpegParams.setQuality(1, false);
encoder.setJPEGEncodeParam(jpegParams);
encoder.encode(image);
out.close();
}

public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
doGet(request, response);
}
}
Hpn nnnnnannsannx, n meroa init(), cpnnerr sanomnx nn nrpemna unen-npomennnna arara n
uaca, n xoro e nnnnnannsnpan. B pyra nrpemna unen-npomennnna ro nomnn n pox nrn, xonro e
nn nsnnxnan upes GET nnn POST saxnxa. Hpn nsnnxnane na doGet() meroa, cpnnerr renepnpa
rexcrono comenne, xoero comana xonxo nrn e nna nocerena crpannnara or npnoro nsnnxnane
na cpnnera. 3apan nsmoxnocrra nxxonxo norpenrenx enonpemenno a noncxar crpannnara, e
neoxonmo ocrnr o unen-npomennnnnre na cpnnera a e cnnxponnsnpan. Kaxro snaem or
remara sa mnoronnmxono nporpamnpane n cnnxponnsannx, n Java cnnxponnsannxra moxe a ce npann
no monnropa na nponsnonen oexr. B namnx cnyua cnnxponnsnpame no oexra, cpxam arara n
uaca na nnnnnannsannx na cpnnera. Honexe, xaxro cnomenaxme no-rope, cpnnernre ce
nncrannnpar camo nenx n pamxnre na eno Web-npnnoxenne, unen-npomennnnnre nm cmo ce
nncrannnpar camo nenx n sarona poxur na nocernrenn nma camo eno xonne n namerra, nnpexn,
ue ne e oxnen xaro static. Fnaroapenne na cnnxponnsnpannx ocrn o nero, ro orunra
nocernrennre npannnno, opn npn xonxyperno nsnnxnane or mnoro norpenrenn enonpemenno. 3a
nnamnunoro renepnpane na nsopaxennero ce nsnonsnar cranaprnnre cpecrna na jawa.awt.
Hsuncnxnar ce pasmepnre na rexcra npn mpn]ra, xoro me e nsnonsnan, cne rona ce csana
nsopaxenne or xnaca BuIIeredImage, nsema ce neronnx oexr sa rpa]nuna mannnynannx Graphics n
ce nsopasxna rexcra. Hpno nsopaxennero ce sannna c uepnen nnxr, cne rona ce neuara rexcra,
manxo ormecren c uepen nnxr, a cne rona ce neuara c xnro cmnx rexcr na ncrnncxara my nosnnnx.
Taxa ce nonyuana rexcr cc cxnxa. Cne xaro nsopaxennero e nsrorneno, ro ce xonneprnpa n JPEG
norox or annn xaro ce nsnonsna xoexr na Sun sa JPEG xonpane n my ce saana a paorn c
maxcnmanno nnno na xauecrno. Honyuennxr norox or annn ce nsnpama xaro nsxo or cpnnera. 3a
a moxe Web-payspr a pasnosnae nsnparennx norox or annn xaro JPEG xaprnnxa, a ne xaro
rexcr, n header-a na HTTP orronopa na saxnxara ce cnara 'Content-type: image/jpeg. Ho
nopasnpane, axo cpnnerr ne yxaxe pyro, sa rnn na nsnparennre annn ce cnara 'Content-type:
text/html. Peannsannxra na meroa doPost() npocro nsnnxna meroa doGet(), xoero nosnonxna na
cpnnera a orronapx xaxro na GET, raxa n na POST saxnxn no nporoxona HTTP. Ero n npnmepen
pesynrar or nsnnxnanero na cpnnera:


Hopsaxa na no1pen1encxn cecnn
Koraro ronopnxme sa Web-npnnoxennx, cnomenaxme, ue re nmar nsmoxnocr a ocnyxnar
enonpemenno mnoro norpenrenn, nesanncnmo enn or pyr. Kax snaem, HTTP nporoxonr nma
nececnen xapaxrep, r.e. ne nn npeocranx nsmoxnocr a pasnnuaname norpenrennre enn or pyr n
a npocnexname xox saxnxa or xo norpenren nna. Ero samo sa npocnexnane n pasrpannuanane na
norpenrennre enn or pyr ca neoxonmn onnnnrennn ycnnnx, xonro Web-npnnoxennxra
rpxna a nonarar. Horpenrencxa cecnx napnuame nepnoa, n xoro enn norpenren cn
nsanmoecrna c eno Web-npnnoxenne. Hpocnexnanero na nocneonarennocrra or saxnxn,
nsnpmenn or enn norpenren ce napnua npocnexnane na neronara cecnx. Axo na norpenrenx
paorar enonpemenno c ena Web-cncrema, re nmar ne pasnnunn cecnn. Hpnmep sa Web-
npnnoxenne, xoero npocnexna norpenrencxara cecnx, e Web-asnpanara cncrema sa enexrponna
noma na Yahoo. Bcnuxn snaem, ue e nsmoxno oxaro enn norpenren cn uere nomara or
mail.yahoo.com, pyr norpenren, nannno nesanncnmo or nero cmo a cn uere nomara or cmnx
car. Web-npnnoxennero sa enexrponna noma, paoremo na mamnnara c nme mail.yahoo.com
pasnosnana pasnnunnre norpenrenn n npocnexna rexnnre cecnn. Bsanncnmocr or rona xo
norpenren e an HTTP saxnxa xm Web-npnnoxennero, cpnpr pasnosnana neronara cecnx n ana
ocrn o neronnre email-n, a ne o resn na ocranannre norpenrenn, paoremn n cmnx momenr.
Bsmoxno e or enn n cm xomnmrp a ce ocmecrnxr nxxonxo nesanncnmn cecnn xm eno n cmo
Web-npnnoxenne. Hanpnmep norpenrenxr moxe a ornopn na pasnnunn Web-payspa enn
Netscape n enn Opera n a nnese n eno Web-npnnoxenne xaro na pasnnunn norpenrenx. B
pamxnre na payspa Netscape, ro me nma csaena ena cecnx cc cpnpa, a n pamxnre na
payspa Opera ro me nma csaena ome ena, nesanncnma or npnara cecnx cc cmnx cpnp.
Tona osnauana, ue sa cpnpa norpenrennre ca pasnnunmn enn or pyr, opn xoraro nnar or enn
n cm xomnmrp. Tona ce oxcnxna c mexannsma, no xoro cpnpr pasnnuana norpenrennre enn
or pyr. Hma na ocnonnn naunna sa npocnexnane na norpenrencxara cecnx c cookies n c
oanxne na onnnnrenen napamerp xm URL-ro. Cookies e nsmoxnocr eno Web-npnnoxenne a
uere n sanncna nn]opmannx na mamnnara na xnnenra. Hn]opmannxra or cookies moxe a ce uere
camo or npnnoxennero, xoero x e sanncano n moxe a nsuesna axo ne ce nonsna nro npeme,
nsanncnmocr or napamerpnre saaenn npn csananero . Hocpecrnom cookies Web-npnnoxennxra
morar a sanncnar na mamnnara na norpenrenx nxxaxn nenrn]nxarop na cecnx n cne rona xaro x
npounrar npn ncxxa saxnxa, a pasnosnanar norpenrenx. pyrnxr naunn sa cneene na
norpenrencxnre cecnn e upes oanxne na onnnnrenen napamerp xm URL-ro. Hpn sanounane na
paora na norpenrenx ce renepnpa ynnxanen xnmu n ro ce oanx xaro napamerp npn ncxxa GET
nnn POST saxnxa. Tosn noxo nsncxna onnnnrennn ycnnnx sa oanxne na cxpnrn nonera nn
ncxxa HTML ]opma n oanxne na napamerpn xm ncexn hyperlink n sarona ce nsnonsna pxxo,
onxnoneno xoraro xnnenrcxnxr paysp ne nopxa cookies nnn norpenrenxr rn e sapannn. C
cookies ycnnnxra sa npocnexnane na norpenrennre ca snaunrenno no-manxn.
B Java cpnnernre n JSP cxpnnronere nopxxara na norpenrencxn cecnn e nannno
anromarnuna. Hporpamncrr ne e nyxno a nsnpama n uere cookies nnn a oanx n pasnosnana cne
rona onnnnrennn napamerpn xm URL-ro. ocraruno e a ce nsnonsna API-ro sa paora cc
cecnn, xoero ce ana or Iramework-a sa Web-npnnoxennx. Ocnonen e xnacr HttpSession, xoro
npecranx norpenrencxara cecnx. Honyuananero na oexr, aconnnpan c rexymara cecnx moxem a
nsemem or HttpRequest oexra no cnennx naunn:
HttpSession session = request.getSession();
Axo cecnx ne cmecrnyna raxana me e csaena. Bsnmanero na cecnxra sa enn n cm
norpenren npma enn n cm oexr, a sa pasnnunn norpenrenn npma pasnnunn oexrn. 3a ncexn
non norpenren ce csana non oexr or xnaca HttpSession n ce npma rosn oexr. B oexra session
morar a ce cxpanxnar nponsnonnn annn sa norpenrenx nocpecrnom meronre cerAttribute(key,
value) n getAttribute(key). Benx cxpanenn n cecnxra, resn oexrn ca ocrnnn no npeme na ncxxa
saxnxa or norpenrenx n pamxnre na rasn cecnx. Ero enn rnnnuen npnmep sa nsnonsnane na cecnx e
xoraro na ncexn norpenren ce npeocranxr pasnnunn pecypcn n sanncnmocr or rona xaro xaxn ce e
anrenrnxnpan, a neanrenrnxnpannre norpenrenn ne ce onycxar. Hpecranxme cn copconere na
cpnnera LoginServlet:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class LoginServlet extends HttpServlet {

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
String user =
request.getParameter("user");
String password =
request.getParameter("password");
PrintWriter out = response.getWriter();
if ((user==null) || (password==null)) {
showLoginForm("", out);
} else if (user.equals(password)) {
HttpSession session =
request.getSession();
session.setAttribute("USER", user);
response.sendRedirect(
"/servlet/MainServlet");
} else {
showLoginForm(
"Invalid login.<br>", out);
}
}

private void showLoginForm(
String captionText, PrintWriter out)
{
out.println(
"<html><title>Login</title>\n" +
"<form method=\"GET\" action=" +
"\"/servlet/LoginServlet\">\n" +
captionText +
"<input type=\"text\"" +
" name=\"user\"><br>\n" +
"<input type=\"text\"" +
" name=\"password\"><br>\n" +
"<input type=\"submit\">\n" +
"</form></html>"
);
}
}
n cpnnera MainServlet:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class MainServlet extends HttpServlet {

public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
HttpSession session =
request.getSession();
String user = (String)
session.getAttribute("USER");
PrintWriter out = response.getWriter();
if (user==null) {
showMainForm("Not authenticated." +
" Please <a href=\""+
"/servlet/LoginServlet\">" +
"login</a> first.", out);
} else {
showMainForm(
"Welcome, " + user + "!", out);
}

}

private void showMainForm(
String captionText, PrintWriter out)
{
out.println(
"<html><title>Main</title>\n" +
captionText + "</html>"
);
}
}
Hpnnxr cpnner (LoginServlet) cnyxn sa anrenrnxannx na norpenrennre. Koraro ce nsnnxa es
napamerpn, ro noxasna HTML ]opma sa nonnnane na nme na norpenren n napona:

Koraro ce nonnnn n nsnparn ]opmara, ce nsnnxna cmnxr cpnner, no nneennre nme na
norpenren n napona ce nsnpamar xm nero xaro napamerpn. Koraro cpnnerr pasnosnae nannna
xomnnannx or norpenrencxo nme n napona, sanncna n anromarnuno csaenara sa rexymnx
norpenren cecnx no xnmu 'USER nneenoro norpenrencxo nme. 3a npocrora n namnx npnmep
nannnn xomnnannn or norpenrencxo nme n napona ca ncnuxn, n xonro norpenrencxoro nme
cnnaa c naponara. Cne ycnemna anrenrnxannx norpenrenxr ce npenpama xm ocnonnnx cpnner
(MainServlet) upes response.sendRedirect(URL). Ocnonnnxr cpnner pasnosnana neronara cecnx no
cmecrnynanero cronocr no xnmua 'USER, npounra or nex nmero na anrenrnxnpannx norpenren
n ro nospanxna c xparxo comenne:

Axo n cmnx momenr pyr norpenren ce onnra a sapen MainServlet-a, xaro nannme apeca my n
payspa cn, ro me e pasnosnar or cncremara xaro pasnnuen or npnnx. B neronnx HttpSession
oexr nxma a nma nnxaxna cronocr no xnmu 'USER n raxa ocnonnnxr cpnner me pasepe, ue
rosn norpenren ne e anrenrnxnpan:

Kaxro nnxxme npocnexnanero na norpenrencxara cecnx crana anromarnuno n n nex morar a ce
sanncnar pasnnunn oexrn no pasnnunn xnmuone, xaro ce rapanrnpa, ue HttpSession oexra sa ncexn
pasnnuen norpenren e pasnnuen. Moxem a saaname npemero na neaxrnnnocr n mnnncexynn, sa
xoero ena cecnx nsrnua n ce nsrpnna or cpnpa upes meroa setMaxInactiveInterval() na xnaca
HttpSession. Hsrnuanero na cecnnre (session expiration) e nonesno or copaxennx sa cnrypnocr.
Cne xaro enn norpenren e anrenrnxnpan nenx, neronara anrenrnxannx naxn camo onpeeneno
npeme, sa a ne moxe cne xaro crane or xomnmrpa nxxo pyr a cene na nerono mxcro n a
nsnonsna cecnxra my. Horpenrencxnxr nnrep]ec na Web-npnnoxennxra onxnoneno ocnen
anrenrnxannx n oropnsannx (login) npenara n nsxo or cncremara (logout), xoero npexparxna
norpenrencxara cecnx. Hpexparxnanero na cecnxra na norpenren n namnx npnmep moxe a crane
xaro ce nsrpne cronocrra c xnmu 'USER or cecnxra upes session.removeAttribute('USER).

You might also like