Servlet快速入门
来源:互联网 发布:java 键值对会覆盖 编辑:程序博客网 时间:2024/06/05 06:45
Servlet
servlet 是运行在 Web 服务器中的小型 Java 程序。servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。
Servlet生命周期
Servlet接口中定义了所有servlet都必须实现的方法其中包括3个生命周期的方法 和两个其他方法。init();
服务器调用该方法初始化Servlet,init()方法只在Servlet第一次被 请求加载的时候被调用一次,当有客户再请求Servlet服务时,Web服务器将启动一个新的线程,在该线程中,调用service方法响应客户的请求service(ServletRequest req, ServletResponse res) ;
初始化完毕,服务器调用该方法响应客户的请求destory();
服务器调用该方法消灭servlet对象getServletConfig();获得任何启动信息
- getServletInfo() ;servlet 返回有关其自身的基本信息,比如作者、版本和版权。
Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。
针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁
2 . Servlet接口
Servlet接口下主要的两个子类是GenericServlet, HttpServlet 。
其中GennericServlet主要定义一般的,和协议无关的servlet,使我们的编写更为容易只需要重写service方法即可。
HttpServlet主要创建适用于 Web 站点的 HTTP servlet 的抽象类。HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。
HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法。源码如下:
//以GET方式为例protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String method = req.getMethod(); if (method.equals(METHOD_GET)) { long lastModified = getLastModified(req); if (lastModified == -1) { // servlet doesn't support if-modified-since, no reason // to go through further expensive logic doGet(req, resp); } else { long ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE); if (ifModifiedSince < (lastModified / 1000 * 1000)) { // If the servlet mod time is later, call doGet() // Round down to the nearest second for a proper compare // A ifModifiedSince of -1 will always be less maybeSetLastModified(resp, lastModified); doGet(req, resp); } else { resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED); } }
继承HttpServlet时Servlet初始化时覆盖init() ,无需覆盖init(config)。
根据请求方式必须覆盖至少一种doXXX(请求方式)方法。当方法中的业务逻辑相同时可以互相调用。
3.自动加载配置
上面讲到init();方法只有在Servlet第一次被请求加载时才会调用一次,但是初始化数据库的时候是非常耗时的操作,这种情况并不是我们所希望的,我们希望的是服务器一启动就执行init();方法,初始化数据库等。这就需要配置web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <servlet> <servlet-name>Servlet</servlet-name> <servlet-class>Servlet</servlet-class> <!--加入该标签配置自动加载,值是正整数,值越小优先级越高 --> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Servlet</servlet-name> <url-pattern>/Servlet</url-pattern> </servlet-mapping></web-app>
- Servlet快速入门
- Servlet快速入门
- Servlet快速入门
- Servlet的快速入门
- java Servlet快速入门
- 黑马day03 servlet快速入门
- 服务器和Servlet快速入门
- 菜鸟学Android笔记(十九):Servlet快速入门
- Day14-HTTP协议 & web开发概述 & servlet快速入门
- Servlet入门
- Servlet入门
- Servlet入门
- Servlet入门
- Servlet入门
- Servlet入门
- Servlet入门
- Servlet入门
- Servlet入门
- apache与tomcat的联系与区别
- Android 取消 上一个Toast
- mac上expect安装
- struts2搭建web服务器
- 16秋《网页制作》作业4
- Servlet快速入门
- 16秋《网页制作》作业3
- 自学C语言,从一章开始-数据类型
- 架构师的必备素质和成长途径
- Eclipse安装Eclipse Marketplace插件
- 16秋《网页制作》作业2
- angular2系统学习 - 属性型指令
- [AHK]GoldenDict 划译插件(鼠标拖选、双击选词翻译)
- 16秋《网页制作》作业1