servlet API
servlet AP定义了若干接口和类,由四个包构成
- javax.servlet
- javax.servlet.http
- javax.servlet.annotation
- javax.servlet.descriptor
Servlet接口是Servlet API中的基本接口,每个Servlet必须直接或间接实现该接口。该接口定义了如下5个方法。
1、void init(ServletConfig config)
在 Servlet 的生命期中,仅执行一次 init() 方法,它是在服务器装入 Servlet 时执行的。
可以配置服务器,以在启动服务器或客户机首次访问 Servlet 时装入 Servlet。
2、void service(ServletRequest request ServletResponse response)
service() 方法是 Servlet 的核心。每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要被调用,而且传递给这个方法一个"请求"(ServletRequest)对象和一个"响应"(ServletResponse)对象作为参数。 在 HttpServlet 中已存在 service() 方法。缺省的服务功能是调用与 HTTP 请求的方法相应的 do 功能。例如, 如果 HTTP 请求方法为 GET,则缺省情况下就调用 doGet() 。
3、void destroy()
与init方法相类似,destroy() 方法仅执行一次,即在服务器停止且卸装Servlet 时执行该方法
4、ServletConfig getServletConfig()
getServletConfig() 方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和 ServletContext。ServletContext 接口提供有关 servlet 的环境信息
5、String getServletInfo()
GetServletInfo()方法是一个可选的方法,它提供有关servlet 的信息,如作者、版本、版权。
GenericServlet抽象类
GenericServlet实现了Servlet接口和ServletConfig接口。
它提供了Servlet接口中除了service()外的所有方法的实现,同时增加了支持日志的方法。
可以继承GenericServlet类并实现service()方法来创建任何类型的Servlet。
HttpServlet类
1、HttpServlet抽象类继承了GenericServlet类,它用来实现针对HTTP协议的Servlet,在HttpServlet类中增加了一个新的service()方法,格式如下:
protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
2、在HttpServlet中针对不同的HTTP请求方法定义了不同的处理方法,如处理GET请求的doGet()格式如下: protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
3、还定义了处理其他请求的方法,如处理POST请求的方法是
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
servlet生命周期
简单完整讲述Servlet生命周期_Turniper的博客-CSDN博客
HTTP请求结构
| 特征 | GET方法 | POST方法 |
| 资源类型 | 静态的或动态的 | 动态的 |
| 数据类型 | 文本 | 文本或二进制数据 |
| 数据量 | 一般不超过255个字符 | 没有限制 |
| 可见性 | 数据是URL的一部分,在浏览器的地址栏中对用户可见 | 数据不是URL的一部分而是作为请求的消息体发送,在浏览器的地址栏中对用户不可见 |
| 数据缓存 | 数据可在浏览器的URL历史中缓存 | 数据不能在浏览器的URL历史中缓存 |
处理HTTP请求
| HTTP方法 | HttpServlet方法 | HTTP方法 | HttpServlet方法 |
| GET | doGet() | DELETE | doDelete() |
| POST | doPost() | OPTIONS | doOptions() |
| HEAD | doHead() | TRACE | doTrace() |
| PUT | doPut() |
检索请求参数
通过HttpServletRequest中定义的方法检索参数
String getParameter(String name)
String[] getParameterValues(String name)
返回name指定的请求参数值,如果参数不存在,则返回null值。若指定的参数存在,用户没有提供值,则返回空字符串。
Enumeration getParameterNames()
Map getParameterMap()
向服务器发送GET请求,还可以将请求参数附加在请求URL的后面。例如,可以直接使用下面的URL访问LoginServet,而不需要通过表单提供参数。
http://localhost:8080/chapter02/user- login?username=admin&password=admin
这里,问号后面内容为请求参数名和参数值对,若有多个参数,中间用“&”符号分隔,参数名和参数值之间用等号(=)分隔。问号后面内容称为查询串(query string)
请求转发



