Servlet
2015-12-27 15:21
197 查看
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP
服务器上的数据库或应用程序之间的中间层。
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:
1.Servlet
通过调用 init () 方法进行初始化。
2.Servlet 调用 service() 方法来处理客户端的请求。
3.Servlet 通过调用 destroy() 方法终止(结束)。
4.最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
下面的使用Servlet在页面打印Hello World
init() 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。init()
方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。
service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete
等方法。
doGet()请求来自于一个 URL 的正常请求,或者来自于一个未指定 METHOD 的 HTML 表单,它由
doGet() 方法处理。GET 方法向页面请求发送已编码的用户信息。页面和已编码的信息中间用 ? 字符分隔,如下所示:
GET 方法是默认的从浏览器向 Web 服务器传递信息的方法,它会产生一个很长的字符串,出现在浏览器的地址栏中。如果您要向服务器传递的是密码或其他的敏感信息,请不要使用 GET 方法。GET 方法有大小限制:请求字符串中最多只能有 1024 个字符。比如搜索框文本的提交,Servlet 使用 doGet() 方法处理这种类型的请求。
doPost() 请求来自于一个特别指定了
METHOD 为 POST 的 HTML 表单,它由 doPost() 方法处理。POST 方法打包信息的方式与 GET 方法基本相同,但是 POST 方法不是把信息作为 URL 中字符后的文本字符串进行发送,而是把这些信息作为一个单独的消息。消息以标准输出的形式传到后台程序,可以解析和使用这些标准输出。比如处理用户名和密码的表单
destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。
下图显示了一个典型的 Servlet 生命周期方案。
第一个到达服务器的 HTTP 请求被委派到 Servlet 容器。
Servlet 容器在调用 service() 方法之前加载 Servlet。
然后 Servlet 容器处理由多个线程产生的多个请求,每个线程执行一个单一的 Servlet 实例的 service() 方法。
服务器上的数据库或应用程序之间的中间层。
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:
1.Servlet
通过调用 init () 方法进行初始化。
2.Servlet 调用 service() 方法来处理客户端的请求。
3.Servlet 通过调用 destroy() 方法终止(结束)。
4.最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
下面的使用Servlet在页面打印Hello World
// 导入必需的 java 库 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; // 扩展 HttpServlet 类 public class HelloWorld extends HttpServlet { private String message; public void init() throws ServletException { // 执行必需的初始化 message = "Hello World"; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html"); // 实际的逻辑是在这里 PrintWriter out = response.getWriter(); out.println("<h1>" + message + "</h1>"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Servlet 代码 } public void destroy() { // 什么也不做 } }
init() 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。init()
方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。
service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete
等方法。
doGet()请求来自于一个 URL 的正常请求,或者来自于一个未指定 METHOD 的 HTML 表单,它由
doGet() 方法处理。GET 方法向页面请求发送已编码的用户信息。页面和已编码的信息中间用 ? 字符分隔,如下所示:
http://www.test.com/hello?key1=value1&key2=value2
GET 方法是默认的从浏览器向 Web 服务器传递信息的方法,它会产生一个很长的字符串,出现在浏览器的地址栏中。如果您要向服务器传递的是密码或其他的敏感信息,请不要使用 GET 方法。GET 方法有大小限制:请求字符串中最多只能有 1024 个字符。比如搜索框文本的提交,Servlet 使用 doGet() 方法处理这种类型的请求。
doPost() 请求来自于一个特别指定了
METHOD 为 POST 的 HTML 表单,它由 doPost() 方法处理。POST 方法打包信息的方式与 GET 方法基本相同,但是 POST 方法不是把信息作为 URL 中字符后的文本字符串进行发送,而是把这些信息作为一个单独的消息。消息以标准输出的形式传到后台程序,可以解析和使用这些标准输出。比如处理用户名和密码的表单
destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。
下图显示了一个典型的 Servlet 生命周期方案。
第一个到达服务器的 HTTP 请求被委派到 Servlet 容器。
Servlet 容器在调用 service() 方法之前加载 Servlet。
然后 Servlet 容器处理由多个线程产生的多个请求,每个线程执行一个单一的 Servlet 实例的 service() 方法。
相关文章推荐
- 【码农流水账】一个码农的成长02
- WebService到底是什么?(转)
- LeetCode Spiral Matrix II
- Linux软件安装之RPM
- 自动化管理工具Saltstack之用户管理篇(6)
- Makefile 使用总结
- 排列组合相关算法 python
- WKWebView显示空白页bug
- Oracle GoldenGate for Big Data 12.2.0.1的新特性
- 有n个整数,指定位置m处插入g个值(用指针和函数)
- Linux网络编程入门
- 056_最长公共子序列
- (Frontend Newbie)Web简史
- 使用Maven Profile按需加载开发、测试和产品环境的配置文件
- cpio命令用法
- 对STL的一些小计
- python3 zip()
- PtSetResource() 导致 Memory fault 的原因分析
- 基于C/S模式的简单聊天程序(服务器篇)
- 150,项目管理器git的使用