推荐资料:
简介
Servlet(Server Applet) 是在服务器上运行的小程序。主要用于搭建java语言编写的,基于HTTP协议的Web服务器。
基本处理过程为:
-
客户端发送请求至服务器端;
-
服务器将请求信息发送至 Servlet;
-
Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
-
服务器将响应返回给客户端。
Servlet 包
Java Servlet 是运行在带有支持 Java Servlet 规范的解释器的 web 服务器上的 Java 类。
Servlet 可以使用 javax.servlet 和 javax.servlet.http 包创建,它是 Java 企业版的标准组成部分,Java 企业版是支持大型开发项目的 Java 类库的扩展版本。这些类实现 Java Servlet 和 JSP 规范。
Java Servlet 就像任何其他的 Java 类一样已经被创建和编译。在您安装 Servlet 包并把它们添加到您的计算机上的 Classpath 类路径中之后,您就可以通过 JDK 的 Java 编译器或任何其他编译器来编译 Servlet。
生命周期
- Servlet 通过调用 init () 方法进行初始化。
- Servlet 调用 service() 方法来处理客户端的请求。
- service() 方法根据请求调用不同do方法(doGet() 、doPost()等)。
- Servlet 通过调用 destroy() 方法终止(结束)。
- 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
init() 方法
在 Servlet 的生命期中,仅执行一次 init() 方法。它是在服务器装入 Servlet 时执行的,无论有多少客户机访问 Servlet,都不会重复执行 init() 。
service() 方法
service() 方法是 Servlet 的核心。每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要被调用,而且传递给这个方法一个"请求"(ServletRequest)对象和一个"响应"(ServletResponse)对象作为参数。 在 HttpServlet 中已存在 service() 方法。缺省的服务功能是调用与 HTTP 请求的方法相应的 do 功能。
doGet() 方法
当一个客户通过 HTML 表单发出一个 HTTP GET 请求或直接请求一个 URL 时,doGet() 方法被调用。与 GET 请求相关的参数添加到 URL 的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用 doGet() 方法。
doPost() 方法
当一个客户通过 HTML 表单发出一个 HTTP POST 请求时,doPost() 方法被调用。与 POST 请求相关的参数作为一个单独的 HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用 doPost() 方法。
destroy() 方法
destroy() 方法仅执行一次,即在服务器停止且卸装 Servlet 时执行该方法。典型的,将 Servlet 作为服务器进程的一部分来关闭。缺省的 destroy() 方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源。
常用接口
Servlet
Servlet的框架的核心是javax.servlet.Servlet接口,所有的Servlet都必须实现这一接口。
HttpServlet
处理http协议servlet的生命周期及响应方法。一般情况下我们会继承此方法并重写doGet、doPost。
init() | 初始化servlet |
service() | 响应请求并调用相应的do方法 |
destroy() | 销毁servlet |
doGet(HttpServletRequest request, HttpServletResponse response) | 响应get请求 |
doPost(HttpServletRequest request, HttpServletResponse response) | 响应post请求 |
HttpServletRequest
request请求相关操作。每个request代表一次请求,生命周期为本次请求。
getCookies() | 获取请求用户的所有cookie |
getHeader(String var1) | 获取http请求头里面的参数 |
getSession() | 获取本次会话的session |
setAttribute(String var1, Object var2) | 添加request传递的属性 |
getAttribute(String var1) | 获取request传递的属性 |
getMethod() | 获取http请求方式 |
getParameter(String var1) | 获取请求参数 |
HttpServletResponse
response 响应相关操作。每个response代表一次响应,生命周期为本次响应。
addCookie(Cookie var1) | 添加cookie |
addHeader(String var1, String var2) | 添加响应头信息 |
getOutputStream() | 获取响应输出流 |
getWriter() | 获取写数据输出流 |
setCharacterEncoding(String var1) | 设置响应字符编码 |
HttpSession
session管理相关操作。每个session代表一次会话,生命周期为本次会话。
setAttribute(String var1, Object var2) | 添加session传递的属性 |
getAttribute(String var1) | 获取session传递的属性 |
removeAttribute(String var1) | 删除session传递的属性 |
getServletContext() | 获取ServletContext |
Cookie
cookie管理相关操作。cookie保存在客户端,生命周期可以设置或客户端清理。
getName() | 获取cookie名字 |
getValue() | 获得cookie的值 |
setValue(String newValue) | 改变cookie的值 |
setMaxAge(int expiry) | 设置生命周期(单位:秒) |
getMaxAge() | 获取生命周期(单位:秒) |
更多接口参见API: