You are on page 1of 28

Servlet & JSP

Servlet

Web
Model 2

2-2

Servlet & JSP

2.1 Servlet Web


Servlet javax.servlet.http
.HttpServlet override doGet() doPost()

HTTP Servlet
Servlet
web.xml Deployment Descriptor
Servlet Servlet
Web

Servlet web.xml Web

2.1.1 Servlet HttpServlet


Servlet
FirstServlet

HelloServlet.java

package cc.openhome;
import
import
import
import
import
import

java.io.IOException;
java.io.PrintWriter;
javax.servlet.ServletException;
javax.servlet.http.HttpServlet;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {


X HttpServlet
@Override
protected void doGet(HttpServletRequest request,
Y doGet()
HttpServletResponse response)
Z
throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
[
String name = request.getParameter("name");

Servlet & JSP

out.println("<html>");
out.println("<head>");
out.println("<title>Hello Servlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1> Hello! " + name + " !</h1>");
out.println("</body>");
out.println("</html>");
] Hello!
out.close();
}
}

HttpServletX doGet() Y
GET

doGet()

HttpServletRequest

HttpServletResponse HTTP

HTTP Java
doGet()
HttpServletRequest HTTP

HttpServletRequest getParameter()
\
@Override JDK5 Annotation
Servlet
@Override
HttpServletResponse
setContentType() Z

text/html UTF8
getWriter() PrintWriter [
PrintWriter println()

HTML Hello! ]
Servlet JSP
Integrated Development Environment, IDE
Eclipse NetBeans IDE

2-3

2-4

Servlet & JSP

Tomcat Web Eclipse


NetBeans IDE Eclipse NetBeans IDE

HttpServlet doGet() HTTP GET

doGet() Application
Interface, API

2.1 HttpServlet API

Servlet Servlet
Servlet init() destroy()
service()
Servlet GenericServlet
ServletConfig init() ServletConfig

service() abstract
GenericServlet
4

Servlet & JSP

GenericServlet
HTTP HttpServlet
Servlet HTTP HTTP
GenericServlet HttpServlet service()

package Servlet
javax.servlet Servlet
GenericServletServletRequestServletResponse HTTP
javax.servlet.http
HttpServletHttpServletRequestHttpServletResponse

Tomcat HttpServlet service()

protected void service(HttpServletRequest req,


HttpServletResponse resp)
throws ServletException, IOException {
String method = req.getMethod(); //
if (method.equals(METHOD_GET)) { // HTTP GET
// ...
doGet(req, resp);
// ...
} else if (method.equals(METHOD_HEAD)) { // HTTP HEAD
// ...
doHead(req, resp);
} else if (method.equals(METHOD_POST)) { // HTTP POST
// ...
doPost(req, resp);
} else if (method.equals(METHOD_PUT)) { // HTTP PUT
// ...
}

Servlet service()
HttpServlet service() HTTP

doGet() doPost() GET POST


HttpServlet
doGet() doPost()

2-5

2-6

Servlet & JSP

Design Pattern Template Method


HttpServlet
service() HttpServlet HTTP

2.1.2
Servlet Web Servlet
Web web.xml
Servlet web.xml
HelloServlet
FirstServlet

web.xml

<?xml version="1.0" encoding="UTF-8"?>


<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>cc.openhome.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello.do</url-pattern>
</servlet-mapping>
</web-app>

<web-app> Servlet XML

IDE
<servlet> <servlet-mapping>

<servlet> <servlet-class>

cc.openhome.HelloServlet

Servlet & JSP

Full Qualified Name


<servlet-name>
HelloServlet

URL Servlet
<servlet-mapping> <url-pattern>
/hello.do <servlet-name> HelloServlet
/hello.do URL Web
HelloServlet Servlet 2.2
Servlet

2.2 Servlet

2.2 Web Context Root


Web
Tomcat
FirstServlet URL
8080 Tomcat
http://localhost:8080/FirstServlet/hello.do?name=caterpillar

2-7

2-8

Servlet & JSP

2.2 URL Logical


Name /hello.do
hello.do Web
Physical Name <url-pattern>
hello.jsp
Servlet web.xml
<url-pattern> <servlet-name>
Servlet <servlet-class>

2.1.3 Web
Servlet web.xml Servlet
Web
Servlet IDE Classpath
Servlet API Tomcat
Tomcat lib servlet-api.jar
HelloServlet.java src

% cd YourWorkspace/FirstServlet
% javac -classpath Yourlibrary/YourTomcat/lib/servlet-api.jar -d ./classes
src/cc/openhome/HelloServlet.java

.class
classes javac -d
.class web.xml

Servlet & JSP

2.3 Web

2.3
WEB-INF

WEB-INF
HTTP WEB-INF
Servlet JSP
Forward

web.xml
Web WEB-INF
web.xml
lib
JAR Java Archive WEB-INF
lib

2-9

2-10

Servlet & JSP

classes
.class WEB-INF
classes

Tomcat Web 2.3 FirstServlet


Tomcat webapps Tomcat bin
catalina run Tomcat URL

http://localhost:8080/FirstServlet/hello.do?name=caterpillar

2.4 Servlet

2.1.4 WAR
Web Web WAR
Web Archive *.war WAR
JDK jar 2.3
Web FirstServlet
jar cvf ../FirstServlet.war *

FirstServlet FirstServlet.war WAR


zip
Tomcat WAR webapps
Tomcat webapps WAR
Web

Servlet & JSP

WAR
Tomcat Web

2.5 Tomcat Web

Tomcat http://localhost:8080 Tomcat


Manager
Tomcat Tomcat conf tomcat-users.xml
tomcat tomcat
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager"/>
<user username="tomcat" password="tomcat" roles="manager"/>
</tomcat-users>

2.2 HelloServlet
HelloServlet Web Web
doGet()

Servlet

HTML

HttpServletResponse PrintWriter

2-11

2-12

Servlet & JSP

Servlet JSP Web


Model 2
Web
Model 2 Model 2

2.2.1 Web
Web Servlet
Servlet URL Web
Servlet
HTTP HTTP
Cookie HTTP TCP/IP
Servlet Java
Web Java HTTP
Java
HTTP HTTP
HttpServletRequest
HttpServletResponse
Java

2.6 Java

Servlet & JSP

web.xml Servlet
service() HttpServletRequest
HttpServletResponse service() HTTP

doXXX() GET doGet()

2.7 Servlet service()

doGet() HttpServletRequest
HttpServletResponse getParameter()

getWriter() PrintWriter
PrintWriter HTTP
HTTP
HttpServletRequest HttpServletResponse

Web HttpServletRequest
HttpServletResponse HTTP
HttpServletRequest HttpServletResponse

Java SE HTTP

Java

2-13

2-14

Servlet & JSP

2.8 HTTP

2.9

Servlet & JSP

2.2.2 MVC Model 2


Servlet HTML
JSP JSP Java
JSP HTML Java
Java HTML

Web MVC Model 2


MVC ModelViewController

Model

Business

View

Swing HTML

Controller

MVC

2-15

2-16

Servlet & JSP

2.10

MVC

MVC

2.11 MVC

1
2
3
4

Servlet & JSP

2.11

MVC

Servlet Java HTML


MVC
Java HTML
Java JSP
Servlet
MVC Web HTTP
HTTP
HTTP
HTTP
HTTP 2.11 4

Model 2

2.12 Model 2

2-17

2-18

Servlet & JSP

2.12 Model 2
URL HTTP 1
Controller
Model 2
2.12 Cookie

Forward
3
Servlet JSP Servlet

Model

Java
Plain Old Java
Object, POJO

API
View

HTML 4
5 HTML

Servlet JSP JSP

Servlet & JSP

2.13 Servlet JSP Model 2

2.13 ServletJSP Model 2

2.2.3 Model 2
Model 2
Model 2 Web
user
Servlet
SimpleModel2
package cc.openhome;
import
import
import
import
import

java.io.IOException;
javax.servlet.ServletException;
javax.servlet.http.HttpServlet;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {


private Hello hello;
public HelloServlet() {
hello = new Hello();
}

HelloServlet.java

2-19

Servlet & JSP

2-20

@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter("user");
X
String message = hello.doHello(name);
Y Hello
request.setAttribute("message", message);
Z
request.getRequestDispatcher("hello.jsp")

.forward(request, response);
}
[ hello.jsp
}

Model 2
Servlet JSP

Servlet Servlet

X Hello Y Servlet HTML


Hello Z
JSP
hello.jsp [
Hello HashMap

SimpleModel2
package cc.openhome;
import java.util.*;
public class Hello {
private Map<String, String> messages;
public Hello() {
messages = new HashMap<String, String>();
messages.put("caterpillar", "Hello");
messages.put("Justin", "Welcome");
messages.put("momor", "Hi");
}

Hello.java

Servlet & JSP

public String doHello(String user) {


String message = messages.get(user);
return message + ", " + user + "!";
}
}

Hello
ServletHello HTML JSP
API Java
Servlet Hello JSP JSP

SimpleModel2

hello.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
<title>${param.user}</title>
X Expression Language
</head>
user
<body>
<h1>${message}</h1>
Y Expression Language
</body>

</html>

JSP JSP 2.0 Expression


Language user X Servlet
message Y JSP Java

2.14

2-21

2-22

Servlet & JSP

JSP Expression Language JSP


Tag JSP
JSP
Java
Model 2
Model 2

2.3
Servlet HttpServlet
doGet()doPost() HTTP

HttpServletRequest HttpServletResponse

Servlet API Servlet Servlet


init() destroy() service()
GenericServlet Servlet service()
abstractGenericServlet ServletConfig
Servlet init() ServletConfig
service() HTTP
HttpServlet doGet()doPost() HttpServletRequest
HttpServletResponse ServletReqeustServletResponse

Web Servlet Servlet


web.xml Servlet
Servlet URL Pattern
<servlet> <servlet-name>
<servlet-class> <servlet-mapping> <servlet-name>
<url-pattern>

Servlet & JSP

Web WEB-INF
web.xml
WEB-INF lib Web JAR
classes .class Web
WAR Web Archive
.war Web

Web Servlet Servlet


HTTP HttpServletRequest

HttpServletResponse

HttpServletRequest HttpServletResponse

MVC Model
View Controller

HTTP Web MVC


Model 2
Servlet JSP Servlet Java
JSP

2-23

2-24

Servlet & JSP

1. HTTP Servlet
(A) Servlet
(B) GenericServlet
(C) HttpServlet
(D) Servlet
2. HTTP GET
(A) service()
(B) doGet()
(C) doService()
(D) get()
3. HttpServlet
(A) javax.servlet
(B) javax.servlet.http
(C) java.http
(D) javax.http
4. web.xml
<servlet>
<servlet-name>Goodbye</servlet-name>
<servlet-class>cc.openhome.LogutServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GoodBye</servlet-name>
<url-pattern>/goodbye</url-pattern>
</servlet-mapping>

Servlet & JSP

URL Servlet
(A) /GoodBye
(B) /goodbye.do
(C) /LoguotServlet
(D) /goodbye
5. Web HTTP

(A) HttpRequest
(B) HttpServletRequest
(C) HttpServletResponse
(D) HttpPrintWriter
6.

Web

HTTP

HttpServletRequest

(A) Servlet
(B) HTTP
(C) Web
(D) JSP
7. Web web.xml

(A) WEB-INF
(B) conf
(C) lib
(D) classes

2-25

2-26

Servlet & JSP

8. web.xml
<servlet>
<servlet-name>HelloServlet</servlet-name>
<java-class>cc.openhome.HelloServlet</java-class>
</servlet>
<servlet-mapping>
<mapping-name>HelloServlet</mapping-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>

web.xml
(A) <url-pattern> .do
(B) <mapping-name> <servlet-name>

(C) <java-name> <servlet-class>

(D) <servlet> <servlet-definition>

9. MVC

(A) Model
(B) View
(C) Controller
10. MVC Model 2
(A) Model 2 HTML
(B) Model 2
(C) MVC
(D) MVC

Servlet & JSP

1. Servlet Servlet
IP Internet Protocol
Query String
ServletRequest HttpServletRequest API

2.
"caterpillar" "123456" HTML

2-27

2-28

Servlet & JSP

You might also like