每次处理求时都会被调用_第1页
每次处理求时都会被调用_第2页
每次处理求时都会被调用_第3页
每次处理求时都会被调用_第4页
每次处理求时都会被调用_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Servletvoidinit(ServletConfig):出生之后(1次,voiddestroy():临死之前(1次Servlet什么是ServletJavaWeb的三大组件之一,它属于动态资源。Servlet的作用是处理请求,服务器会把ServletServlet中通常需要:例如客户端发出登录请求,或者输出请求,这些请求都应该由Servlet来完成处理!ServletServletjavax.servlet.Servlet接口。实现Servlet的方式(由我们自己来写Servlet通常我们会去继承HttpServlet类来完成我们的ServletServlet还要从publicpublicinterfaceServletpublicvoidinit(ServletConfigconfig)throwspublicServletConfigpublicvoidservice(ServletRequestreq,ServletResponsethrowsthrowsServletException,publicStringpublicvoid}创 oservlet应我们开始第一个Servlet应用吧!首先在webapps 下创建oservlet 了,然后在oservlet 中创建准备JavaWeb应用所需内容:创建 创建 创建 创建 ServletpublicoServletimplementsServletpublicoServletimplementsServletpublicvoidinit(ServletConfigconfig)throwsServletExceptionpublicServletConfiggetServletConfig(){returnnull;}publicvoiddestroy(){}publicStringgetServletInfo(){returnpublicvoidservice(ServletRequestreq,ServletResponsethrowsServletException,IOException{ oservlet!");}}Servletservice()方法,因为它是用来处理请求的方法。 “/<servlet>:指定oServlet这个Servlet的名称 的Servlet名为ooServletapi.jar然后把oServlet.class放到/oworld/EB-IF/clsss/ 中:即可在控制台上看到输出! ServletServlet的生命周所谓xxx的生命周期就是说xxx的出生服务以及Servlet生命周期也是如此与voidvoidvoidServletServlet第一次被时创建Servlet,或者是在Servlet。如果服务Servletweb.xml文件中配置。也就是说默认情况下,Servlet是在第而且一个Servlet时,服务器通过“/oworld”找到了绑定的Servlet名建过,那么服务器才会通过反射来创建oServlet的实例。当我们再次时,服务器就不会再次创建oServletServletservice()方法一次service()方法是会被调用多次的。正因为如此,所以我service()方法中!ServletServletServletServletdestroy()方法,我们可以把Servletdestroy()destroy()方法中。publicpublicoServletimplementsServletpublicvoidinit(ServletConfigconfigthrowsServletException}publicServletConfiggetServletConfig(){returnnull;}publicvoiddestroy(){}publicStringgetServletInfo(){returnpublicvoidservice(ServletRequestreq,ServletResponsethrowsServletException,IOException{ oservlet!");}} 修 oServlet如下,然后再 oServlet时,init方被执行,而且也会执行service方法。再次时,只会执行service方法,不再执行init方法。在关闭Tomcat时会调用destroy方法。Servlet接口相关类()web.xml文件中的<servlet>元素。ServletRequestServletResponseServlet#service()方法的两个参数,一个是请求对象,一个ServletRequest和ServletResponseservice()service()方法中希望使用HTTP相关的功能,那么可以把ServletRequest和ServletResponse强转成HttpServletRequest和HttpServletResponseservice()方法中对ServletRequestServletResponsevoidsetCharacterEncoding(Stringencoding)GET请求没有请求体,POSTrequest.setCharacterEncoding(“utf-8”)之后,再通过getParameter()方法获取参数值时,那么参数值都已经通过了转码,即转换成了UTF-8getParameter()方法之前调用!PrintWritergetWriter():获取字符响应流,使用该流可以向客户端输出响应信息。例如 ogetOtputStream()voidsetCharacterEncoding(Stringencoding):用来设置字符响应流的编码,例如在调用setCharacterEncoding(“utf-8”);response.getWriter()获取字符响应流对象,这时的响 ”),表示3秒后自动刷新到htt voidsetContentType(StringcontentType)setHeader(“content-typexxx”)的简便方content-type响应头的方法。content-type响应头用来设置响应数据的响应数据为文本类型,那么还要台同时设置编码,例如setContentType(“text/html;chartset=utf-8”)html类型,并且该方调用setCharacterEncoding(“utf-8”)方法;voidsendError(intcodeStringerrorMsg):向客户端发送状态码,以及错误消息。例如给客户404:response(404,“您要查找的资源不存在!”)。servletConfig.getServletName()方法获取!StringgetServletName()Servletweb.xml文件中的配置名称,即<servlet-name>指定 OneServletServletConfiggetInitParameter()方法来获取初始化参数,例=GenericServlet概GenericServlet是ServletGenericServlet来编写自己的Servlet。GenericServlet类的源代码: class classGenericServletimplementsServlet,ServletConfig,java.io.Serializable{privatestaticfinallongserialVersionUID=privatetransientServletConfigpublicGenericServlet(){}publicvoiddestroy()publicStringgetInitParameter(Stringname)return}publicEnumeration<String>getInitParameterNames()return}publicServletConfiggetServletConfig()return}publicServletContextgetServletContext()return}publicStringgetServletInfo()return}publicvoidinit(ServletConfigconfig)throwsServletExceptionthis.config=}publicvoidinit()throwsServletExceptionpublicvoidlog(Stringmsg){getServletContext().log(getServletName()+":"+msg);}publicvoidlog(Stringmessage,Throwablet){getServletContext().log(getServletName()+":"+message,t);} voidservice(ServletRequestreq,ServletResponsethrowsServletException,IOException;publicStringgetServletName()return}}GenericServletinit()方ServletConfigconfig。被覆盖了,也就是说GenericServletconfignullconfig的方法都不init()init(ServletConfig)方法中被调用。GenericServlet还实现了ServletConfig接口,所以可以直接调用getInitParameter(HttpServlet概HttpServletGenericServletHTTP请求的特殊支持,所以通常我们都会HttpServletServlet。HttpServlet类中提供了service(HttpServletRequest,HttpServletResponse)方法,这个方法是HttpServlet自己的方法,不是从Servlet继承来的。在HttpServlet的service(ServletRequest,ServletResponse)方法中会把ServletRequest和ServletResponse强转成其实子类也不用去覆盖service(HttpServletRequest,HttpServletResponse)HttpServlet还classclassHttpServletextendsGenericServletprotectedvoidservice(HttpServletRequestreq,HttpServletResponsethrowsServletException,IOException}publicvoidservice(ServletRequestreq,ServletResponsethrowsServletException,IOExceptionHttpServletRequestrequest;HttpServletResponseresponse;trytryrequest=(HttpServletRequest)req;response=(HttpServletResponse)res;}catch(ClassCastExceptione)thrownewServletException("non-HTTPrequestor}service(request,}}doGet()在HttpServlet的service(HttpServletRequest,HttpServletResponse)方去判断当前请求是GET还是POST,如果是GET请求,那么会去调用本类的doGet()方法,如果是POST请求会去调用doPost()doGet()doPost()方法即可。publicpublicclassBServletextendsHttpServletpublicvoiddoPost(HttpServletRequestrequest,HttpServletResponsethrowsServletException,IOException{ odoPost()...");}}publicclassAServletextendsHttpServletpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponsethrowsServletException,IOException{ odoGet()...");}}ServletServlet与线程安ServletServlet同时处理多个让服务器在启动时就创建 Servlet根据<load-on-startup>的值可以得知服务器创建Servlet的顺序为o1Servlet、o2Servleto3Servlet> 1)可以在<servlet- > 1)可以在<servlet- URL*ServletURL,例如:URL中间位置,也不能只有通配符。例如:/*.doURL的中间位置上了。*.*URL中最 当路径为时,因为路径即匹 o1的 o2的<url-pattern>,但因为 o1的<url-pattern>中没有通配符所以优先匹配, web.xmlJavaWebweb.xmlweb.xml文件都有一个共同的父文件,它在Tomcatconf/web.xml路径。<?xml<?xmlversion="1.0"encoding="ISO-8859-<web-appxmlns="hh"> > <<<<<NServletServlet传递数据!TomcatTomcat关闭时才会死去!ServletContextWebAServlet获取ServletServletContextvoidinit(ServletConfigconfig)ServletContextcontext=config.getServletContextServletConfiggetServletContext()ServletContext对象;GenericeServletHttpServletServletContext对象:GenericServletgetServletContext()this.getServletContext()来获publicpublicclassMyServletextendsHttpServletpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse){ServletContextcontext=this.getServletContext();}}publicclassMyServletimplementsServlet{publicvoidinit(ServletConfigconfig){}…}域对象的功所有域对象都有存取数据的功能,因为域对象内部有一个Map,用来数据,下面是xxx那么会覆盖上一次的值,这一特性与Map相同;去才行,例如:Stringvalue=(String)servletContext.getAttribute(“xxx”);,获取名为xxx的获取应用初始化参ServletServlet只能获取自己Servlet准备!ServletServletContext才能使用!ServletServletContextcontext=thisServletContextcontext=this.getServletContext();Stringvalue1=context.getInitParameter("paramName1");Stringvalue2=context.getInitParameter("paramName2");System.out.println(value1+","+value2);Enumerationnames=while(names.hasMoreElements()){ }<web-app获取资源相关方还可以使用ServletContext对象来获取Web应用下的资源,例如 o应用的 下创==a.txt资源流:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论