目录
我们为什么需要Servlet?
Java有着优秀的跨平台性,可以编写运行在各类平台上的软件。但目前最主流的还是Browser - Server架构,用户通过浏览器访问服务器,随时登录系统并进行操作,省去了客户端的安装步骤,方便快捷。
使用Java编写的B/S架构应用程序,我们称为Java Web应用程序。通过浏览器访问Java web应用程序时,一个请求需要经历标准网络协议传输、web容器接收、业务逻辑处理、数据库访问、响应返回、响应页面渲染等众多步骤,若每个web程序都需要程序员凭一己之力从头写起,那也太难了。好在我们可以借助众多的API及框架,而Java Servlet则是最基础的Web API。
Servlet简介
Servlet(Server Applet)是 Java Servlet 的简称,是使用 Java 语言编写的运行在服务器端的程序。具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
广义上来说,Servlet 是指所有实现了 Servlet 接口的类。
从原理上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器,主要处理 doGet() 和 doPost() 等请求。
Servlet架构图示:
浏览器的HTTP请求,会被Web容器接收,如Tomcat、JBoss等,这些容器都会自带servlet-api.jar包以支持Servlet运行。Web容器收到请求后会根据web.xml 文件中的映射关系,调用对应的 Servlet 处理请求,Servlet 再将处理的结果返回给 Servlet 容器,并通过 HTTP 服务器将响应传输给浏览器。
Servlet 技术具有如下特点。
- 1.方便:Servlet 提供了大量的实用工具例程,如处理很难完成的 HTML 表单数据、读取和设置 HTTP 头,以及处理 Cookie 和跟踪会话等。
- 2.跨平台:Servlet 使用 Java 类编写,可以在不同的操作系统平台和不同的应用服务器平台运行。
- 3.灵活性和可扩展性强:采用 Servlet 开发的 Web 应用程序,由于 Java 类的继承性及构造函数等特点,使得应用灵活,可随意扩展。
Servlet的生命周期
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:
- 1.Servlet 初始化后调用 init () 方法。
- 2.Servlet 调用 service() 方法来处理客户端的请求。
- 3.Servlet 销毁前调用 destroy() 方法。
- 4.最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
其中service() 方法为主要的请求处理方法,service() 方法会被 HTTP 请求类型(GET、POST、PUT、DELETE 等)调用并执行处理逻辑。结构如下:
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException{
// 具体的业务处理逻辑
}
而在实际使用中,我们通常选择复写doGet()或doPost()方法,而不是service(),来处理指定的请求方式:
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,