Documente Academic
Documente Profesional
Documente Cultură
Universität zu Lübeck
Sommersemester 2006
Lecture: Servlet/JSP
Ho Ngoc Duc 1
Learning objectives
n Reference
q Sun Microsystems, J2EE Tutorial
q Marty Hall, Core Servlets and JSP
Ho Ngoc Duc 2
Overview of Servlet technology
Ho Ngoc Duc 3
Architecture
Ho Ngoc Duc 4
Writing Servlets
Ho Ngoc Duc 5
The Servlet Life Cycle
n init()
q Executed once when the servlet is first loaded
n service()
q Called in a new thread by server for each request
q Dispatches to doGet, doPost, etc.
n doGet(), doPost(), doXxx()
q Handles GET, POST, etc. requests
q Override these methods to provide desired behavior
q Same servlet instance in different threads!
n destroy()
q Called when server deletes servlet instance
Ho Ngoc Duc 6
HelloWorld Servlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloPlain extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hello World");
}
}
Ho Ngoc Duc 7
Compiling the HelloWorld servlet
Ho Ngoc Duc 9
Servlet that generates HTML
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloHTML extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<HTML><HEAD><TITLE>Hello</TITLE></HEAD><BODY>");
out.println("<H1>Hello World</H1>");
out.println("</BODY></HTML>");
}
}
Ho Ngoc Duc 10
Deploying Servlets
Ho Ngoc Duc 11
Deploying Servlets
Ho Ngoc Duc 12
Use your own web application
• Create directory structure under $TOMCAT_HOME/webapps/
DBP06/
index.html
WEB-INF/
web.xml
classes/
lib/
(other files and directories if needed)
Ho Ngoc Duc 13
Initializing Servlets
Ho Ngoc Duc 14
Servlet with init parameters
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloParameter extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
String message = getServletConfig().getInitParameter("message");
int repeats = Integer.parseInt(getServletConfig().getInitParameter("repeats"));
PrintWriter out = response.getWriter();
out.println("<HTML><HEAD><TITLE>Hello</TITLE></HEAD><BODY>");
for (int i = 0; i < repeats; i++) {
out.println("<H1>"+message+"</H1>");
}
out.println("</BODY></HTML>");
}
}
Ho Ngoc Duc 15
Setting init parameters
Modify .../WEB-INF/web.xml
<web-app>
<servlet>
<servlet-name>HelloParameter</servlet-name>
<servlet-class>duc.lect24.HelloParameter</servlet-class>
<init-param>
<param-name>message</param-name>
<param-value>Gruss aus Luebeck</param-value>
</init-param>
<init-param>
<param-name>repeats</param-name>
<param-value>5</param-value>
</init-param>
</servlet>
<!– other things ... -->
</web-app>
Ho Ngoc Duc 16
Servlet mapping
We can map a servlet to any URL (within web app):
<web-app>
<servlet>
<servlet-name>HelloParameter</servlet-name>
<servlet-class>duc.lect24.HelloParameter</servlet-class>
<!– parameters as before -->
</servlet>
<servlet-mapping>
<servlet-name>HelloParameter</servlet-name>
<url-pattern>/ParameterServlet</url-pattern>
</servlet-mapping>
</web-app>
Ho Ngoc Duc 17
Reading query data
String getParameter("name"): return (first) parameter value as user
entered it (URL-decoded) or null if no such parameter
String[] getParameterValues("name"): return array of all values of a
repeated parameter
Enumeration getParameterNames(): enumerate names of all parameters
double number = 0;
try {
number = Double.parseDouble(request.getParameter("number"));
} catch (Exception e) {}
double res = Math.sqrt(number);
out.println("Square root of "+number+" is "+res);
String uri = request.getRequestURI();
out.println("<p><form method=POST action="+uri+">");
out.println("<input name=number value=\""+number+"\"></form>");
Ho Ngoc Duc 18
In-class exercise
n Download DBP06.zip
n Extract it to $TOMCAT_HOME/webapps
n Visit http://host:port/DBP06/
n Write a servlet that display a month's
calendar. The month should be given as
request parameter. If no valid parameters
given, use current month
q As plain text
q As HTML table
Ho Ngoc Duc 19
Datenbank-Praktikum
Universität zu Lübeck
Sommersemester 2006
Lecture: Servlet/JSP
Ho Ngoc Duc 20