Blage's Coding Blage's Coding
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
  • 手写Spring

  • SSM

  • SpringBoot

  • JavaWeb

    • 前端基础
    • 后端基础
    • Thymeleaf视图模板
    • session会话
    • Servlet
      • xml配置
      • 继承关系
      • Servelet服务方法
      • Servlet生命周期
    • Servlet优化
    • 依赖注入
    • 过滤器
    • 监听器
    • 正则表达式
    • 项目经验
  • Spring
  • JavaWeb
phan
2023-05-15
目录

Servlet

# Servlet

# xml配置

<servlet>
<servlet-name>DemoServlet</servlet-name>
<servlet-class>servlets.DemoServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
----另一种方法是直接在Servlet的class类上添加注解,注意要加/---
@WebServlet("/edit")  
1
2
3
4
5
6
7
8
9
10
11
12

# 继承关系

public abstract class GenericServlet implements Servlet,ServletConfig,Serializable{}
public abstract class HttpServlet extends javax.servlet.GenericServlet {}
public class Demo1Servlet  extends HttpServlet{}
1
2
3

javax.servlet.Servlet接口:

  • void init(config)——初始化方法

  • void service(request,response)——服务方法

  • void destroy()——销毁方法

javax.servlet.GenericServlet抽象类:

  • void service(request,response)——抽象

javax.servlet.http.HttpServlet 抽象子类:

  • void service(request,response)——不是抽象的

# Servelet服务方法

  1. String method = req.getMethod();获取请求方式

  2. if判断,根据请求方式不同,决定去调用不同的do方法

  3. 如果定义的servlet没有实现doGet方法,但是网页发送一个get请求,那么就会调用父类HttpServlet的doGet方法,而HttpServlet.doGet()只会显示404或者405.

# Servlet生命周期

对应三个Servlet三个方法init(),service(),destroy()

  • Tomcat只会通过反射创建一个Servlet实例,所有的请求都是这个实例去响应。第一次请求耗时较长。

  • 第一次请求的相应时间比较慢,因为需要实例化和初始化,但是可以提高系统启动速度。如果提高相应速度,应该设置servlet初始化时间。

    通过<load-on-startup>设置servlet启动的先后顺序,如果值小0或者没有设置时,表示首次请求才会加载初始化servlet;当值≥0时,表示容器在启动时就加载初始化servlet,数字越小,启动越靠前。

  • servlet在容器中是单例的,线程不安全的。(多个客户端线程共享修改这个实例的变量)

编辑 (opens new window)
#JavaWeb
上次更新: 2023/12/15, 15:49:57
session会话
Servlet优化

← session会话 Servlet优化→

Theme by Vdoing | Copyright © 2023-2024 blageCoder
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式