第 9 章 Servlet 简介

download 第 9 章   Servlet 简介

If you can't read please download the document

description

JSP 程序设计. 第 9 章 Servlet 简介. 本章简介. 什么是 Servlet ? Servlet 相对于 CGI 的特性 Servlet 的处理流程和生命周期 HttpServlet HttpServletRequest 和 HttpServletRepsonse ServletContext RequestDispatcher ServletConfig Servlet 对象之间的关系. 什么是 Servlet. - PowerPoint PPT Presentation

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