You are on page 1of 9

API ,

service( ), ,
init( ) destroy( ),
( ).

public interface Servlet {


public void init(ServletConfig config)
throws ServletException;
public ServletConfig getServletConfig();
public void service(ServletRequest req,
ServletResponse res)
throws ServletException, IOException;
public String getServletInfo();
public void destroy();
}
getServletConfig( ) ,
ServletConfig,
. getServletInfo( ) ,
, , , .
GenericServlet
. HttpServlet
GenericServlet HTTP
HttpServlet , .
API ,
HttpServlet .
service( ) Servlet, ,
: ServletRequest ServletResponse. HttpServlet
HTTP: HttpServletRequest HttpServletResponse.
, HttpServletResponse:

//: c15:servlets:ServletsRule.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class ServletsRule extends HttpServlet {
int i = 0; // Servlet "persistence"
public void service(HttpServletRequest req,
HttpServletResponse res) throws IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.print("<HEAD><TITLE>");
out.print("A server-side strategy");
out.print("</TITLE></HEAD><BODY>");

out.print("<h1>Servlets Rule! " + i++);


out.print("</h1></BODY>");
out.close();
}
} ///:~
ServletsRule , .
init( )
, .
URL, ,
service( ),
HttpServletRequest HttpServletResponse.
service( ) HTTP ,
, HTTP , ,
. ServletsRule
, .
(
Writer OutputStream), getWriter( )
PrintWriter,
( : getOutputStream( )
OutputStream, ,
).
HTML (
, HTML, )
String. ,
, i.
String print( ).
, , i
. :
,
( , ,
, ),
! ,
,
CGI ,
, ,
- .
Web , ,
- .

init( ) destroy( )
,
.
destroy( ), ,
.

HttpServlet.
doGet( ) doPost( ), GET CGI
, CGI POST. GET POST
, ,
. , , ,
doGet( ) doPost( )
service( ), .
, ,
,
CGI , , GET
POST. [75],
service( ) , GET'
POST'. , - , , ,
doGet( ) doPost( ).
, , HttpServletRequest
, . ,
getParameter( ) .
Enumeration ( Iterator) ,
.
,
, ( ,
JSP). Enumeration , . ,
. ,
. ,
.

//: c15:servlets:EchoForm.java
// - HTML
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class EchoForm extends HttpServlet {
public void service(HttpServletRequest req,
HttpServletResponse res) throws IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
Enumeration flds = req.getParameterNames();
if(!flds.hasMoreElements()) {
// - :
out.print("<html>");
out.print("<form method=\"POST\"" +
" action=\"EchoForm\">");
for(int i = 0; i < 10; i++)
out.print("<b>Field" + i + "</b> " +
"<input type=\"text\""+
" size=\"20\" name=\"Field" + i +

"\" value=\"Value" + i + "\"><br>");


out.print("<INPUT TYPE=submit name=submit"+
" Value=\"Submit\"></form></html>");
} else {
out.print("<h1>Your form contained:</h1>");
while(flds.hasMoreElements()) {
String field= (String)flds.nextElement();
String value= req.getParameter(field);
out.print(field + " = " + value+ "<br>");
}
}
out.close();
}
} ///:~
, , Java

- ,
+, String.
HTML
Java. - ,
Web .
, , Java
. , ,
(Python .
, Java, JPython)
.


,
. , ,
, service( ).
service( )
. (,
)
synchronized.
synchronized
sleep( ). (
), . ,
,
, ,
.

//: c15:servlets:ThreadServlet.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class ThreadServlet extends HttpServlet {


int i;
public void service(HttpServletRequest req,
HttpServletResponse res) throws IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
synchronized(this) {
try {
Thread.currentThread().sleep(5000);
} catch(InterruptedException e) {
System.err.println("Interrupted");
}
}
out.print("<h1>Finished " + i++ + "</h1>");
out.close();
}
} ///:~
,
synchronized service( ). ,
synchronized , ,
.
, synchronized.
,
(synchronize) .


HTTP , ,
,
,
. , Web
. ,
,
.
,
cookies, Internet.
HTTP Internet Engineering Task Force cookies
RFC 2109 (ds.internic.net/rfc/rfc2109.txt
www.cookiecentral.com).
Cookie - , , Web
. cookie ,
URL, cookie, cookie
,
( - , ,
). ,
cookies.
cookie, ( URL

), ,
API cookies.
Cookie
API ( 2.0 ) Cookie.
HTTP cookie.
cookie .
cookie ,
. Cookies ,
.

Cookie oreo = new Cookie("TIJava", "2000");


res.addCookie(cookie);
Cookies getCookies( )
HttpServletRequest, cookie.

Cookie[] cookies = req.getCookies();


getValue( ) cookie
(String) cookie.
getValue("TIJava") (String), 2000.
Session
Web
. ,
, , ,

.
HTTP ,
, .

cookie, .
Session .
,
.
, ,
, ,
Web ,
.
Session API Cookie, .
Session
, . Web
,
, API
( , ,
cookies).

,
API:

//: c15:servlets:SessionPeek.java
// HttpSession.
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SessionPeek extends HttpServlet {
public void service(HttpServletRequest req,
HttpServletResponse res)
throws ServletException, IOException {
// Session
// .
HttpSession session = req.getSession();
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<HEAD><TITLE> SessionPeek ");
out.println(" </TITLE></HEAD><BODY>");
out.println("<h1> SessionPeek </h1>");
// .
Integer ival = (Integer)
session.getAttribute("sesspeek.cntr");
if(ival==null)
ival = new Integer(1);
else
ival = new Integer(ival.intValue() + 1);
session.setAttribute("sesspeek.cntr", ival);
out.println("You have hit this page <b>"
+ ival + "</b> times.<p>");
out.println("<h2>");
out.println("Saved Session Data </h2>");
// :
Enumeration sesNames =
session.getAttributeNames();
while(sesNames.hasMoreElements()) {
String name =
sesNames.nextElement().toString();
Object value = session.getAttribute(name);
out.println(name + " = " + value + "<br>");
}
out.println("<h3> Session Statistics </h3>");
out.println("Session ID: "
+ session.getId() + "<br>");
out.println("New Session: " + session.isNew()

+ "<br>");
out.println("Creation Time: "
+ session.getCreationTime());
out.println("<I>(" +
new Date(session.getCreationTime())
+ ")</I><br>");
out.println("Last Accessed Time: " +
session.getLastAccessedTime());
out.println("<I>(" +
new Date(session.getLastAccessedTime())
+ ")</I><br>");
out.println("Session Inactive Interval: "
+ session.getMaxInactiveInterval());
out.println("Session ID in Request: "
+ req.getRequestedSessionId() + "<br>");
out.println("Is session id from Cookie: "
+ req.isRequestedSessionIdFromCookie()
+ "<br>");
out.println("Is session id from URL: "
+ req.isRequestedSessionIdFromURL()
+ "<br>");
out.println("Is session id valid: "
+ req.isRequestedSessionIdValid()
+ "<br>");
out.println("</BODY>");
out.close();
}
public String getServletInfo() {
return "A session tracking servlet";
}
} ///:~
service( ), getSession( ) ,
Session, . Session
,
.
getSession( ) : , ,
getSession(boolean). getSession(true) getSession( ).
boolean ,
, . getSession(true) ,
getSession( ).
Session, ,
. Session ,
.
setAttribute( ) getAttribute( )
.

java.lang.Object getAttribute(java.lang.String)
void setAttribute(java.lang.String name,
java.lang.Object value)
Session
. String,
, java.lang.Object. SessionPeek ,
.
sesspeek.cntr Integer. , Integer
, Integer
, Integer.
Integer Session.
setAttribute( ), .

.
getAttributeNames( ) getAttribute( ), setAttribute( );
enumeration , Session.
while SessionPeek .
Session.
;
30 (1800 ),
getMaxInactiveInterval( ) ServletPeek.
, . Session
, , Session
.

setMaxInactiveInterval( ) 5
Session . ,
.


,
Sun JSP ,
Tomcat Java JSP, ,
,
Sun. jakarta.apache.org.
Tomcat,
server.xml, ,
. Tomcat,
.
. ,
. , ,
. ,
.