### Servlet基础知识总结 #### 一、Servlet简介 Servlet是一种服务器端的小程序,是Java平台上的一个重要的技术之一,主要用于处理客户端的HTTP请求并生成动态网页。Servlet是在服务器端运行的,能够提供各种服务,比如处理表单数据、生成动态内容等。 #### 二、Servlet的运行过程 Servlet的运行过程主要包括以下几个步骤: 1. **客户端发起HTTP请求**:客户端通过浏览器或其他工具向服务器发送HTTP请求。 2. **Web容器接收请求**:服务器上的Web容器接收到这个请求。 3. **检查Servlet实例**:Web容器会检查是否已经创建了处理该请求所需的Servlet实例。如果尚未创建,则执行以下步骤;如果已经创建,则直接跳到第5步。 4. **创建Servlet实例**:Web容器创建一个Servlet实例。 5. **调用init()方法**:如果这是Servlet实例首次被创建,Web容器会调用其`init()`方法来初始化该实例。 6. **处理请求**:Web容器创建一个`HttpServletRequest`对象和一个`HttpServletResponse`对象,并调用Servlet的`service()`方法,将这两个对象作为参数传递进去。 7. **执行业务逻辑**:在`service()`方法内部,根据请求方法(GET、POST等)调用相应的处理方法,如`doGet()`或`doPost()`。 8. **清理资源**:在Web应用程序停止前,Web容器会调用Servlet的`destroy()`方法来释放资源。 #### 三、Servlet的创建与配置 ##### 创建方式 Servlet可以通过以下几种方式创建: 1. **实现Servlet接口**:实现`javax.servlet.Servlet`接口,该接口包含`init()`、`service()`和`destroy()`等方法。 2. **继承GenericServlet类**:这是一个抽象类,实现了Servlet接口,提供了除了`service()`方法之外的所有方法的基本实现。 3. **继承HttpServlet类**:这是一个抽象类,继承自`GenericServlet`,为HTTP协议提供了默认的实现。在实际开发中,通常使用这种方式来创建Servlet。 ##### 配置 为了使Servlet能够在服务器上运行,需要在Web应用程序的配置文件`web.xml`中对其进行注册并定义访问路径。 ```xml <!-- 配置和映射Servlet --> <servlet> <!-- Servlet注册的名字 --> <servlet-name>helloServlet</servlet-name> <!-- Servlet的全类名 --> <servlet-class>com.atguigu.javaweb.HelloServlet</servlet-class> <!-- 可以指定Servlet被创建的时机 --> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <!-- 需要和某一个servlet节点的servlet-name子节点的文本节点一致 --> <servlet-name>helloServlet</servlet-name> <!-- 映射具体的访问路径:/代表当前WEB应用的根目录 --> <url-pattern>/hello</url-pattern> </servlet-mapping> ``` 其中`load-on-startup`属性可用来指定Servlet在服务器启动时的加载顺序。 #### 四、如何处理一个请求 在Servlet中,主要通过`service()`方法来处理请求。对于HTTP请求,还可以通过重写`doGet()`、`doPost()`等方法来专门处理不同类型的HTTP请求。 #### 五、配置Servlet的初始化参数 初始化参数可以在`web.xml`中通过`<init-param>`元素配置,它们会被传递给Servlet实例中的`init()`方法。这些参数通常用于配置Servlet的行为,例如设置数据库连接信息等。 ```xml <servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>com.atguigu.javaweb.HelloServlet</servlet-class> <init-param> <param-name>username</param-name> <param-value>admin</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>123456</param-value> </init-param> </servlet> ``` #### 六、Servlet的生命周期 Servlet的生命周期包括以下阶段: 1. **初始化阶段**:当Servlet首次被请求时,Web容器会调用`init()`方法进行初始化。 2. **就绪阶段**:Servlet初始化后,处于就绪状态,等待处理客户端请求。 3. **服务阶段**:每当有一个客户端请求时,Web容器都会调用`service()`方法来处理请求。 4. **销毁阶段**:当Web应用被卸载或服务器关闭时,Web容器会调用`destroy()`方法来释放Servlet所占用的资源。 #### 七、GET和POST请求 1. **GET**:数据作为URL的一部分传递,适合于查询操作,安全性较低。 2. **POST**:数据作为请求体的一部分传递,适合于修改操作,安全性较高。 #### 八、Servlet与JSP的区别 1. **功能**:Servlet主要负责业务逻辑处理,而JSP更侧重于页面展示。 2. **编写方式**:Servlet使用Java类文件编写,而JSP使用HTML文件,但包含Java代码片段。 3. **执行方式**:Servlet编译后执行,而JSP在第一次访问时被编译成Servlet,之后执行。 #### 九、Servlet里的cookie技术 Cookie是服务器保存在客户端的一个小文本文件,用于跟踪用户的状态。在Servlet中,可以通过`HttpServletResponse`对象的`addCookie()`方法添加Cookie,通过`HttpServletRequest`对象的`getCookies()`方法获取Cookie。 #### 十、Servlet里的过滤器 过滤器(Filter)是在请求到达目标资源(如Servlet、JSP等)之前或响应从目标资源返回之后进行拦截和处理的对象。可以通过实现`javax.servlet.Filter`接口或继承`javax.servlet.Filter`的实现类来创建过滤器。 ```java public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { // 初始化过滤器 } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 在请求到达目标资源之前进行处理 chain.doFilter(request, response); // 继续请求流程 // 在响应返回之后进行处理 } @Override public void destroy() { // 清理资源 } } ``` #### 十一、Servlet里的监听器 监听器(Listener)用于监听Web应用程序中的特定事件,如应用程序启动、销毁或对象创建等。监听器可以通过实现相应的监听器接口来创建。 ```java public class MyServletContextListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { // 监听Web应用程序初始化 } @Override public void contextDestroyed(ServletContextEvent sce) { // 监听Web应用程序销毁 } } ``` #### 常用几个类的介绍 ##### 1、`ServletContext`对象 `ServletContext`是代表Web应用程序上下文的对象,它可以被多个Servlet共享。 ##### 2、`HttpServlet`对象介绍(接口) `HttpServlet`是抽象类,继承自`GenericServlet`,为HTTP协议提供了默认的实现。它重写了`service()`方法,使其能根据请求方法自动调用`doGet()`、`doPost()`等方法。 ##### 3、`GenericServlet`实现类 `GenericServlet`是一个抽象类,实现了`Servlet`接口和`ServletConfig`接口,为`init()`、`destroy()`、`getServletConfig()`、`getServletInfo()`等方法提供了基本实现。 ##### 4、`HttpServlet` `HttpServlet`继承自`GenericServlet`,专为HTTP协议设计,提供了处理HTTP请求的基础方法。 #### 两个包 1. `javax.servlet.*`:提供了Servlet的基础接口和类。 2. `javax.servlet.http.*`:提供了处理HTTP协议的接口和类。 以上就是Servlet基础知识的总结,希望对新手入门有所帮助。
剩余16页未读,继续阅读
- 粉丝: 35
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (35734838)信号与系统实验一实验报告
- (175797816)华南理工大学信号与系统Signal and Systems期末考试试卷及答案
- BLDC 无刷电机 脉冲注入 启动法 启动过程持续插入正反向短时脉冲;定位准,启动速度快; Mcu:华大hc32f030; 功能:脉冲定位,脉冲注入,开环,速度环,电流环,运行中启动,过零检测; 保护
- (3662218)学生宿舍管理系统数据库
- (4427850)编译原理 词法分析器
- (10675456)编译原理的词法分析语法分析
- (7964012)编译原理实验报告及源码
- (3913042)编译原理编译原理词法分析实验.rar
- (26198606)VUE.js高仿饿了么商城实战项目源码(未打包文件)
- 盘式电机 maxwell 电磁仿真模型 双转单定结构,halbach 结构,双定单转 24 槽 20 极,18槽 1 2 极,18s16p(可做其他槽极配合) 参数化模型,内外径,叠厚等所有参数均可调