第 9 章 Servlet 简介
description
Transcript of 第 9 章 Servlet 简介
-
9 Servlet JSP
-
ServletServletCGIServletHttpServlet HttpServletRequestHttpServletRepsonseServletContext RequestDispatcherServletConfigServlet
-
ServletServletjavaWebCGIServletAppletWeb
-
ServletHTTPServletServletJVMServletHTTPServlet
-
ServletBrowser(Client)1. ClientServer5. ServerClientWeb Server2. ServerServlet3. ServletServletService4. ServletServer
-
ServletCGI WebServletCGI Java Servlet APIWebServletServletJavaServletWebServlet ServletWebServletServletCGIServletCGI
-
ServletServlet ServletHTMLHTTPCOOKIEServletCGIServletServlet AppletJavaServletServlet
-
ServletServlet ServletServletServletServletServlet API ServletHTTPFTPHttpServlet
-
Servlet ServletServletWebJava Servlet APIServletWebServletServletWebServletWeb Container
-
Servlet WebServletServletWebServletServletServletServletServletWebServlet
-
Servlet
-
Java Servlet APIServletAPISerlvet APIJavaWebWeb ServletWebWebAPIAPI javax.servlet javax.servlet.http
-
Java Servlet APIjavax.servlet.ServletJava Servlet ServletService
-
Java Servlet APIGenericServletjavax.servlet.ServletServletWebHttpServletjavax.servlet.http.HttpServletGenericServlet
-
ServletServletServletWebServlet javax.servlet.Servlet init() service() destroy()
-
Servlet
-
API(1/3)1Servletservlet Servletinit()init ServletConfigService
-
API(2/3)2Servlet HttpServletRequest HttpServletResponseHTMLHttpServletResponse service()doGet()doPost()
-
API(3/3)3Servlet WebSERVLETdestroy()
-
Servletpachage simple.servlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class FirstSimpleServlet extends HttpServlet{ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletExceptionIOException{ response.setContentType("text/html"); PrintWriter out=response.getWriter(); out.println("First servlet "); out.println("This is your first servlet. "); out.println(""); }}
-
ServletJava
importJavapachage simple.servlet;import java.io.*;import javax.servlet.*;import javax.servlet.http.*; java.iojava IOjavax.servletjavax.servlet.httpServlet API
-
Servicepublic class FirstSimpleServlet extends HttpServlet{ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException.IOException{ response.setContentType("text/html"); PrintWriter out=response.getWriter(); out.println("First servlet "); out.println("This is your first servlet. "); out.println(""); }}
-
HttpServletJavax.servlet.http.HttpServletHTTPHTTP doGet()GET(URL) doPost()POST(HTML)service()doGet()doPost()init()destroy()
-
RequestsResponsesservice()doGet()doPost() HttpServletRequest HttpServletResponseservlet
-
HttpServletRequestHTTP servletURL HttpServletRequest
-
HTTPHTTPPOST /Music/SearchServlet HTTP/1.0Referer:http://www.music.ibm.com/musicSearch.htmlConnection:Keep-AliveUser-Agent:Mozilla/4.72[en](WinNT 5.0; U)Host:localhost:8080Accept:image/gif,image/x-xbitmap,image/jpeg,*/*Accept-Language:enAccept-Charset:iso-8859-1,*,utf-8Content-length:50song_title=Hello&song_artist=Jones&limit_number=20
-
HttpServletRequestHTTPgetHeader("headername") getHeader("Accept-Language")Content-typeContent-length getContentType() getContentLengthCookie getCookies()getMethod()
-
private void processRequest(HttpServletRequest request, HttpServletResponse response) { ...... String method=request.getMethod(); if(method.equals("GET")) { // } String lang=request.getHeader("Accept- Language"); // ...... }
-
HttpServletRequest URL POST getParameterNames() getParameterValues(String name) getParameter(String name)
-
Please fill out this form with the song's name.
Song Name: Artist Name: Thank you!
-
public class SearchServlet extends HttpServlet{ public void doPost(HttpServletRequest req, HttpServletResonse res) throws ServletException,IOException{ ... Enumeration enum=req.getParameterName(); while(enum.hasMoreElements()){ String name=(String)enum.netElement(); String value=req.getParameter(name); // } }}String title=req.getParameter("song_title");
-
HttpServletResponseHttpServletResponseServletHttpServletResponsecontent typecontent Header(cookies,caching)URL
-
HttpServletRepsonseHTTP
setContentType(String type)getWriter() PrintWritergetOutputStream() ServletOutputStreamHTTP/1.1 200 OKContent-Type;text/plainHello World
-
HTTP 1.1HTTP 1.11**2** 200 OK3** 301 Moved Permanently4** 404 Not Found5** 503 Service Unavailable
-
HttpServletResponseHttpServletResponse.setStatus() HTTP 1.1SC 404SC_NOT_FOUNDPrintWriterresponse.setStatus()
-
public class MyServlet extends HttpServlet{ public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException,IOException{ res.setStatus(HttpServletResponse.SC_OK); res.setContentType("text/html"); PrintWriter out=res.getWriter(); out.println(" Today is " +(new Date())); out.println(""); } }
-
Servletpackage simple.servletimport javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.ServletException;import javax.io.IOException;import javax.io.PrintWriter;public class AnotherSimpleServlet extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws SERVLETException,IOException{ String browser=request.getHeader("User-Agent"); response.setStatus(HttpServletResponse.SC_OK); response.setContentType("text/html"); PrintWriter out=response.getWriter(); out.println("First servlet"); out.println("Browse details:"+browser+""); } }
-
Web ContainersServlet Contextjavax.servlet.ServletContext Servlet
-
Request Dispatcherjava.servlet.RequestDispatcherforward Webinclude include
-
forwardinclude
-
getRequestDispatcher()getServletContext() getRequestDispatcher("/pages/ showBalance.jsp").forward(req,res);getServletContext() getRequestDispatcher("/pages/navigation.html").include(req,res);
-
forward()private void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOExcption{ ... if(errorFound){ String errorPage="/ErrorFound.html"; getServletContext(). getRequestDispatcher(errorPage). forward(request,response); return; } }
-
ServletJSPServletContext getServletContext().setAttribute ("objectName",anObject); getServletContext().setAttribute ("objectName");HttpServletRequest request.setAttribute ("objectName",anObject) request.getAttribute("objectName");
-
//Servlet "A"private void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException,IOException{ Customer cust; ... req.setAttribute("CUSTOMER",cust); String nextServlet="/Internal/ServletB"; getServletContext().getRequestDispatcher(nextServlet). forward(req,res); return; }
//Servlet "B"private void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException,IOException{ Customer aCust=(Customer)req.getAttribute("CUSTOMER"); ... }
-
ServletConfigjavax.servlet.ServletConfig ContainerServlet ServletConfigServlet getServletConfig()public String getInitParameter(String name)public Enumeration getInitParameterNames()
-
Servlet
-
Servlet
-
ServletServletCGIServletHttpServlet HttpServletRequestHttpServletResponseServletContext RequestDispatcherServletConfigServlet
-
ServletEclipse
-
HttpServletInfotest
-
Info
-
web.xml/WEB-INF
-
Tomcathttp://localhost:8080/chapter03/Info
WebServlet1SerlvetServletServletWeb.javax.servletServletServletHTTPFTPjavax.serlvet.httpHTTP Httpservletjavax.servlet.ServletServletJava ServletServletWeb ContainerinitservicedestroyServlet ServletSERVLETWeb Containerservlet,ContainerServletServletinitSERVLETServletServletSERVLETWeb ContainerServletWeb ContainerServletservice WebSERVLETdestroyServletServletSERVLET APIServletServletServletServletServletServletServletServletinitinitServletServletJDBCServletinitServletConfigServletConfigServletServletConfigServletServletConfigServiceServletJava Servlet APIServletRequestSERVLETResponseHttpServletHttpServletRequestHttpServletResponseHttpServletRequestHttpSerlvetResponseHTMLHttpServletResponseSerlvetServletServletservicedoGetdoPostHttpServletResponseHttpServletRequest WebSERVLETdestroyServicefirstsimpleservletHttpServletHttpServletserviceserviceHttpServletRequestHttpServletResponse HTMLsetContentTypetext/htmloutPrintWriteroutprintlnHTMLHTMLHTMLGetPost
ServletHTTFTPJavax.serlvet.httpHttpServletHTTPGetPostHttpServletHTTPdoGetdoPostHTMLHTTP GetRULdoGet GetURLHTMLPOSTdoPostPOSTdoPost servicedoGetdoPost servicedogetdopostHttpServletRequest,HttpServletResponseRequestHttpServletRequestResponseHTMLHTMLHttpServletResponseHTMLHTTPURLServletServletHttpServletRequestHTTPHTTPHTTPGetPostIEmozicServletURLCOOKIEURLHttpServletRequest RequestHTTPHTTPPOSTRULServletHTTP1.0refererURLURLConnectionServletkeep-alive1.11.1ServletUser-AgentMozillaServletHostURLAcceptMIMEAccept-LanguageHTMLAccept-CharsetContent-lenthURL HTTPServletHTTPHttpServletRequestgetHeaderheaderAccept-LanguagegetHeaderContent-typeContent-lenthgetContentTypegetContentLenthgetCookiesCookieCookiegetMethodGETPost processRequestdoGetdoPostdoGetdoPostrequestgetMethodStingIfrequest.getHEADERAccept-Lanuage HTTPURLparastringPOSTURLPOSTHttpServletRequestgetParameterNamesgetParameterValuesnamegetParameter(String name)HTMLMETHODPostPostWebActionServlet URLSUBMMITSearchServletServletsong_titlesong_artistHTTPServletHttpServletRequestSearchServletServletRequestgetParameterNamessong_title,song_artistenumhasMoreElementsgetParametersong_titlesong_title HttpSerlvetResponseServletHttpServletResponseHTMLHttpServletResponseHTTPcontenttypeContent HeaderCookiesHTTPURLHttpServletResponseServletwebweb200OKContent-TypeMIMEHttpServletResponsesetContentTypeContentTypegetWriterPrintWriterPrintWriterPrintWriterHTMLXMlgetOutputStreamServletOutputStreamHTTP1.112200 OKGETPOST3301 Moved PernanentlyURLLocationURL4401 unauthorright404 Not Found5503 Service UnavailableServlet503 ServletHttpServletResponsesetStatussetStatusHttpServletResponseHTTP1.1SCStatus Code404Not FoundHttpServletResponseSC_NOT_FOUNDPrintWriterresponse.setStatusservletHTMLdoGetHttpServletResponseSetstatusSetContentTypeHTTPHTMLPrintWriterout,HTMLoutSerlvetdoGetHTMLSerlvetAnotherSimpleSerlvetjavasimple.servletimportjavaAntherSimpleServletHttpServletdoGetHttpServletRequestgetHeaderUser-AgentContentTypePrintWriteroutHTMLServlet ContextWebServlet Contextjavax.servlet.ServletContextservlet ContextWebWebWebwww.hotel.ibm.comWebWeb ContainerHRAppsPersonnelServletHireRetireServletRoomsServletLog inDisplayRoomsServlet ContextURLServletWeb ContainerWebWebServletJSPServletforwardincludeforwardincludejava.servlet.ResponseDispatcherforwardWebforwardJavaBeanincludeforwardincludeincludeforwardincludeforwardServlet AServlet BincludeServlet BSERVLET ArequestDispatcherServletContextgetRequestDispatcherDispatcherforwardinclude forwardprocessRequsetErrorFound.htmlgetServletContextServletContextgetRequestDispatcherRequestDispatcherforwardErrorFound.htmlServletJSPWebServletContextServletServletContextgetServletContext.setAttributeforwardincludeHttpServletRequestgetAttributesetAttributeSerlvetServlet AServlet BServlet ARequestDispatcherforwardServlet BSERVLET ACUSTOMERcustsetAttributeHttpServletRequestServlet B,HttpServletRequestHttpServletResponseSerlvet BServlet BgetAtrributecustServletConfigServletConfigjavax.servlet.ServletConfigContainerServletServletConfigServletServletConfigServletServletConfiggetServletConfigServletConfigServletConfiggetInitParametergetInitParameterNamesServletServletClient1Client2Servlet ASerlvet A Thread1Thread2ServletThread1Thread2SerlvetConfigServletContextThread1Thread2SerlvetContextServletRequestServletResponseServletThread1Thread2ServletRequestServletResponseClient1Client2WebServletservletASerlvetBWebThread1Thread2servletContextServletSerlvetASerlvetBServletConfigThread1Thread2ServletConfigServletRequestServletResponseServletThread1Thread2ServletRequestServletResponse