Servlet
来源:互联网 发布:淘宝qps 编辑:程序博客网 时间:2024/06/02 04:19
1.Servlet概述
Servlet是java服务器小程序。本质上是运行在web容器的java类(web组件),可以处理web客户的Http请求,并产生Http响应。
Servlet体系结构:
javax.servlet包含支持所有协议的通用的web组件接口和类;
javax.servlet.http包含支持Http协议的接口和类。
Servlet功能:
接收Http请求;
取得请求信息,包括请求头和请求参数数据;
调用其他java类方法,完成具体的业务功能;
生成Http响应,包括html和非html响应;
实现到其他web组件的跳转,包括重定向和转发。
2.Servlet编程
Servlet的编写需要严格按照javaEE的规范进行,包括需要实现的接口,继承的类,方法和方法的参数都要符合规范,
否则无法在web容器内部署和运行。
(1).引入包
编写Servlet要引入java I/O包和Servlet的两个包。
import java.io.*; import java.servlet.*; import java.servlet.http.*;
(2).类的定义
public class Test extends HttpServlet{}
(3).重写init方法
当web容器创建servlet对象后,会自动调用init方法完成初始化功能,一般需要将耗时的连接数据库
和打开外部资源文件的操作放在init方法中。且只执行一次。
public void init(ServletConfig config) throws ServletException{ super.init(config); }
(4).重写destroy方法
当web容器需要销毁servlet对象时,一般是web容器停止运行或者servlet源代码修改而重新部署的时候。
web容器自动运行destroy方法完成清理工作,如关闭数据库连接和关闭I/O流等。
public void destroy{ try{ cn.close(); }catch(Exception){ System.out.println("关闭数据库出错:"+e.getMessage()); } }
(5).重写doGet方法
每个servlet一般都需要重写doGet方法,因为父类HttpServlet的doGet方法是空的。
public void doGet(HttpServletRequest request,HttpServletResponse response) throws Exception{}
当客户使用get方法请求servlet时,web容器调用doGet方法处理请求。
(6).重写doPost方法
道理和重写doGet方法一样
public void doPost(HttpServletRequest request,HttpServletResponse response) throws Exception{}
当客户使用post方法请求servlet时,web容器调用doPost方法处理请求。
3.servlet周期
servlet的生命周期完全由web容器掌管,客户必须通过web容器发生对servlet的请求,不能
直接使用new Servlet对象,也不能像调用普通java类那样直接调用servlet的方法。
servlet要经过加载实例化,初始化,服务和销毁4个阶段。
(1).加载类和实例化阶段
servlet由web容器进行加载,当web容器检测到客户首次请求servlet时,根据web.xml文件的配置包名和类名,
在/WEB-INF/classes目录下查找servlet类文件并加载到内存中。类加载结束后,使用反射机制调用默认的无参数的
构造方法创建servlet类对象,并保存在web容器的JVM内存中。
(2).初始化阶段
在创建servlet对象后,web容器会调用servlet的init方法完成初始化工作。
(3).处理请求阶段
调用service方法
(4).销毁阶段
当以下情况发生时,web容器就会销毁servlet组件,在销毁servlet对象之前就会调用destroy方法
完成资源清理工作。
web容器停止;
servlet类更新;
web应用重新部署。
参照教材整理的学习笔记,不喜勿喷
- Servlet
- servlet
- Servlet
- servlet
- Servlet
- servlet
- servlet
- Servlet
- Servlet
- servlet
- Servlet
- servlet
- servlet
- servlet
- Servlet
- servlet
- servlet
- servlet
- Python学习笔记:生成器与迭代器
- python中包的使用总结
- 制作打怪小游戏Kill Bill
- 一位数加法程序 加强版
- [备忘]xcode里的python
- Servlet
- OpenCV傅里叶变换
- 使用python发短信给自己的手机
- TinyXML:一个优秀的C++ XML解析器
- 1.一个简单的存储过程
- vue 动态渲染 html标签解决方案 v-html
- 打印重复姓名和重复次数
- 10.7
- 台湾大学机器学习基石Lecture2