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