Servlet总结

来源:互联网 发布:淘宝卖家发货 具体流程 编辑:程序博客网 时间:2024/06/06 09:30

Servlet的一点点简介:

①、Servlet是一个按照Servlet规范编写的Java类,基于HTTP协议,在服务器端运行。②、当服务器收到客户端的请求是Servlet可以动态的生成HTML内容,对客户端进行响应。

一句话Servlet:响应 Web 应用程序上下文中的 HTTP 请求

Servlet生命周期:

加载、实例化—->初始化—>就绪状态—>销毁

①、加载和实例化:在第一次请求Servlet时,Servlet容器将会创建Servlet实例;②、初始化:调用 init() 方法进行初始化,一般只调用一次;③、响应请求的就绪状态:调用Service()处理接收到的客户端请求,且根据用户的请求方式,调用doPost或者doGet方法;④、销毁:调用destory()实现销毁,Servlet 由 JVM 的垃圾回收器进行垃圾回收。web应用终止运行、Servlet容器终止运行、Servlet容器装载新的实例化时Servlet调用destory方法释放所有占用资源。

Servlet容器装载Servlet的时间段:

    a、web.XML文件中Servlet 的 load-on-startup 配置项大于 0,那么在 Context 容器启动的时候就会被实例化    b、在Servlet容器启动后,客户首次向Servlet发送请求    c、Servlet类文件被更新后,重新装载Servlet    ※Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。

Servlet运行过程

①、由客户端发出Servlet请求到web服务器。②、web服务器接到请求之后,首先检查是否已经创建了该Servlet的实例对象:    a、未装载Servlet实例对象:加载并初始化一个Servlet实例对象,调用init()方法;    b、已装载Servlet实例对象:        创建一个用于封装HTTP请求消息的HttpServletRequest对象        创建一个代表HTTP响应消息的HttpServletResponse对象,        然后调用Servlet的service()方法,并将请求和响应对象作为参数传递进去。③、WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。 

Servlet细节介绍
https://www.ibm.com/developerworks/cn/java/j-lo-servlet/

Servlet详尽介绍
https://www.ibm.com/developerworks/cn/education/java/j-intserv/index.html

Servlet接口的实现类

这里写图片描述

Servlet接口中的方法:

方法名称 功能描述 void init(ServletConfig config) 由 Servlet 容器调用,用于完成Servlet对象在处理客户请求前的初始化工作 void service(ServletRequest req, ServletResponse res) 由 Servlet 容器调用,用来处理客户端的请求 void destroy ( ) 由 Servlet 容器调用,释放Servlet对象所使用的资源 ServletConfig getServletConfig () 返回ServletConfig 对象,该对象包含此 Servlet 的初始化和启动参数。返回的 ServletConfig 对象是传递给 init( ) 方法的对象 String getServletInfo ( ) 返回有关 Servlet 的信息,比如作者、版本和版权。返回的字符串是纯文本,而不是任何种类的标记(如 HTML、XML等)

ServletConfig接口:

在Servlet初始化过程中获取配置信息,一个Servlet只有一个ServletConfig对象
方法名称 功能描述 String getInitParameter(String name) 获取web.xml中设置的以name命名的初始化参数值 ServletContext getServletContext( ) 返回Servlet的上下文对象引用

ServletContext接口:

获取Web应用上下文,与Servlet容器进行通信
方法名称 功能描述 String getInitParameter(String name) 获取名为name的系统范围的初始化参数值,系统范围的初始化参数可在部署描述符中使用<context-param>元素定义 void setAttribute(String name, Object object) 设置名称为name的属性 Object getAttribute(String name) 获取名称为name的属性 String getRealPath(String path) 返回参数所代表目录的真实路径 void log(String message) 记录一般日志信息

GenericServlet抽象类:

提供了Servlet与ServletConfig接口方法的默认实现(service( )方法除外)
方法名称 功能描述 public void init ( ServletConfig config ) 对Servlet接口中init()方法的实现,对ServletConfig实例进行了保存。此方法还有一个无参的重载方法,可用于子类中重写 public String getInitParameter (String name ) 返回web.xml中名称为name的初始化参数的值 public ServletContext getServletContext() 返回ServletContext对象的引用

HttpServlet抽象类:继承自GenericServlet

处理HTTP协议的请求和响应
方法名称 功能描述 public void service(ServletRequest req, ServletResponse res) 对GenericServlet类中service()方法的实现,将请求分发给protected void service(HttpServletRequest req, HttpServletResponse res) protected void service(HttpServletRequest req, HttpServletResponse res) 接收HTTP 请求,并将它们分发给此类中定义的 doXXX( ) 方法 protected void doXXX(HttpServletRequest req, HttpServletResponse res) 根据请求方式的不同分别调用的相应处理方法,如doGet()、doPost()等

ServletRequest接口

获取客户端请求的数据;
方法名称 功能描述 Object getAttribute(String name) 获取名称为name的属性值 void setAttribute(String name,Object object) 在请求中保存名称为name的属性 void removeAttribute(String name) 清除请求中名字为name的属性 String getCharacterEncoding( ) 返回请求体所使用的字符编码 void setCharacterEncoding(String charset) 设置请求体的字符编码 String getParameter(String name) 返回指定请求参数的值 String[ ] getParameterValues(String name) 返回指定请求参数的全部值 RequestDispatcher getRequestDispatcher(String path) 返回指向指定路径的请求分发对象

HttpServletRequest接口

继承ServletRequest接口中的方法,还增加了一些用于读取HTTP请求信息的方法
方法名称 功能描述 String getContextPath( ) 返回请求URI中表示请求上下文的路径,上下文路径是请求URI的开始部分 Cookie[ ] getCookies( ) 返回客户端在此次请求中发送的所有cookie对象 HttpSession getSession( ) 返回和此次请求相关联的session,如果没有给客户端分配session,则创建一个新的session String getMethod( ) 返回此次请求所使用的HTTP方法的名字,如GET、POST String getHeader(String name) 返回指定的请求头信息

ServletResoponse接口

设置响应参数和向客户端发送响应数据
方法名称 功能描述 PrintWriter getWriter( ) 返回PrintWriter对象,用于向客户端发送文本 String getCharacterEncoding( ) 返回在响应中发送的正文所使用的字符编码 void setCharacterEncoding(String charset) 设置响应的字符编码 void setContentType(String type) 设置发送到客户端的响应的内容类型,此时响应的状态属于尚未提交

HttpServletResponse接口

继承ServletResponse接口中的方法,还增加了适用于HTTP响应的新方法
方法名称 功能描述 void addCookie(Cookie cookie) 增加一个cookie到响应中,这个方法可多次调用,设置多个cookie void addHeader(String name, String value) 将一个名称为name,值为value的响应报头添加到响应中 void sendRedirect(String location) 发送一个临时的重定向响应到客户端,以便客户端访问新的URL void encodeURL(String url) 使用session ID对用于重定向的URL进行编码

Servlet应用步骤:

①、创建Servlet类②、Servlet类继承HttpServlet③、重写doPost()或doGet()方法④、部署Servlet⑤、编译Servlet到/WEB-INF/classes目录⑥、编辑部署描述文件web.xml    <servlet>        <servlet-name>        <filter-class>    <servlet-mapping>        <servlet-name>        <url-pattern>⑦、启动Tomcat,访问Servlet

web.xml配置

Servlet初始化参数配置:

//初始化参数只对一个Servlet有效<servlet>    <servlet-name>HelloServlet</servlet-name>    <servlet-class>demo.servlet.HelloServlet</servlet-class>    <init-param>        <param-name>initParam</param-name>        <param-value>Hello Servlet</param-value>    </init-param></servlet>

Servlet初始化参数获取:

String initParam =  this.ServletConfig().getInitParam("initParam"); //获取到的值是一个字符串;

Servlet上下文参数配置:

<web-app>    <context-param>        <param-name>contextParam</param-name>        <param-value>Hello Servlet</param-value>    </context-param>    <!--省略其他配置--></web-app>

Servlet上下文参数获取:

String contextParam = this.getServletContext().getInitParameter("contextParam"); //根据web.xml文件中设置的参数名进行获取
原创粉丝点击