servlet基础知识

目录

  • 什么是servlet
    • 概念/定义
    • 作用
  • servlet容器
    • 概念/是什么
    • 作用
    • 如何配置和管理
  • servlet生命周期
    • 有哪些生命周期
    • 每个周期中可以执行哪些操作
  • 创建和编写servlet
    • 如何创建一个简单的servlet
    • servlet类的结构是什么样的
    • 如何处理HTTP请求和响应
  • servlet映射和URL模式
    • 什么是servlet映射
    • 如何将servlet映射到特定的URL
    • 如何使用URL模式匹配和处理不同的请求?
  • 请求和响应对象
    • 什么是HttpServletRequest和HttpServletResponse
    • 如何从请求对象中获取请求参数和请求体
    • 如何使用响应对象来生成http响应
  • 初始化参数
    • 什么是servlet初始化参数
    • 如何在web.xml或servlet注解中初始化参数
    • 如何从servlet中访问初始化参数

什么是servlet

概念/定义

广义:JAVA EE规范
狭义:Servlet接口

作用

实现动态页面

servlet容器

概念/是什么

管理和维护servlet对象的容器

作用

管理和维护servlet对象

如何配置和管理

配置:
1)@WebServlet()注解
2)web.xml文件

servlet生命周期

有哪些生命周期

1)init:实例化
2)service:工作
3)destroy:销毁

每个周期中可以执行哪些操作

1)init:生成servlet对象实例,初始化需要的资源
2)service:实现业务逻辑
3)destroy:关闭servlet,释放资源

创建和编写servlet

如何创建一个简单的servlet

public class MyClass implements Servlet {}

servlet类的结构是什么样的

例如:Servlet --> GenericServlet --> HttpServlet
常用的servlet类如下:
在这里插入图片描述

在这里插入图片描述
说明:图片来源

问题:怎么知道什么时候用哪个类?

如何处理HTTP请求和响应

通过HttpServletRequest和HttpServletResponse对象

servlet映射和URL模式

什么是servlet映射

把一个请求指定给对应的Servlet

如何将servlet映射到特定的URL

通过@WebServlet或web.xml配置

如何使用URL模式匹配和处理不同的请求?

可以通过不同的匹配规则来控制,在servlet中有4个规则:精准匹配、目录匹配、扩展名匹配、任意匹配。
使用注解配置示例如下:

//精准匹配
@WebServlet("/my/test")//目录匹配
@WebServlet("/my/*")//扩展名匹配
@WebServlet("/my/.txt")//任意匹配1
@WebServlet("/*")
//任意匹配2,tomcat默认为这个
@WebServlet("/")

在这里插入图片描述

请求和响应对象

什么是HttpServletRequest和HttpServletResponse

HttpServletRequest:处理http请求的对象
HttpServletResponse:处理http响应的对象

如何从请求对象中获取请求参数和请求体

1)获取请求参数

HttpServletRequest request  = 接收到的HttpServletRequestServletRequest;
request.getParamter("paramName");
request.getParamterValues("paramName");
request.getParamterNames();
request.getParameterMap();
//上面的paramName就是http请求中的各种参数名称

2)获取请求头

HttpServletRequest request  = 接收到的HttpServletRequestServletRequest;
request.getHeader("headName");
request.getDateHeader("headName");
request.getHeaderNames("headName");
request.getIntHeader("headName");
//上面的headName就是http请求中的各种请求头名称

如何使用响应对象来生成http响应

使用PrintWriter或者ServletOutputStream把响应数据放到http响应中

初始化参数

什么是servlet初始化参数

在加载或启动servlet时,初始化一些用于servlet自身的参数,比如说关于数据库连接、日志配置等的参数。这些参数在整个生命周期中只执行一次,并在整个生命周期的任意一个周期都可以获取到。

如何在web.xml或servlet注解中初始化参数

1)在web.xml中配置

<servlet><servlet-name> myServlet </servlet-name><servlet-class> com.example.myServlet </servlet-name><init-param> paramName1 <init-param><ini-param> paramValue1 <init-param><init-param> paramName2 <init-param><ini-param> paramValue2 <init-param>
</servlet>

2)通过@WebServlet中配置

@WebServlet(urlPatterns = "/my", initParams = {
@WebInitParam=(name = "paraName1", value = "paramValue1"),
@WebInitParam=(name = "paraName2", value = "paramValue2")
})

如何从servlet中访问初始化参数

直接在对应的myServlet 类中使用getInitParameter(“paraName1”)来获取对应的初始化参数

关联知识:面试中喜欢和JSP对比提问

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/132678.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黄金票据与白银票据

文章目录 黄金票据与白银票据1. 背景2. 具体实现2.1 Kerberos协议认证流程 3. 黄金票据3.1 条件3.2 适用场景3.3 利用方式 4. 白银票据4.1 条件4.2 适用场景4.3 利用方式 5. 金票和银票的区别5.1 获取的权限不同5.2 认证流程不同5.3 加密方式不同 6. 经典面试题6.1 什么是黄金票…

github小记(一):清除github在add或者commit之后缓存区

github清除在add或者commit之后缓存区 前言1. 第一步之后想要撤销2. 第二步之后想要撤销a. 改变一下rrr.txt的内容b. 想提交本地文件的test文件夹c. 我后悔了突然不想提交了 前言 github自用 一般github上代码提交顺序&#xff1a; 第一步&#xff1a; git add . or git ad…

数据库Mysql三大引擎(InnoDB、MyISAM、 Memory)与逻辑架构

MySQL数据库及其分支版本主要的存储引擎有InnoDB、MyISAM、 Memory等。简单地理解&#xff0c;存储引擎就是指表的类型以及表在计算机上的存储方式。存储引擎的概念是MySQL的特色&#xff0c;使用的是一个可插拔存储引擎架构&#xff0c;能够在运行的时候动态加载或者卸载这些存…

软件设计师学习笔记12-数据库的基本概念+数据库的设计过程+概念设计+逻辑设计

1.数据库的基本概念 1.1数据库的体系结构 1.1.1常见数据库 ①集中式数据库 数据是集中的&#xff1b;数据管理是集中的 ②C/S结构 客户端负责数据表服务&#xff1b;服务器负责数据库服务&#xff1b;系统分前后端&#xff1b;ODBC、JDBC ③分布式数据库 物理上分布、逻…

three.js学习之vR展厅

目标 1、需要会的知识点three.js的场景&#xff0c;摄像机&#xff0c;渲染器&#xff0c;轨道控制器&#xff0c;坐标轴&#xff0c;场景适配&#xff0c;渲染循环创建立方缓冲几何体、纹理、3d物体 实现&#xff1a;创建立方几何体&#xff0c;纹理贴图镜面反向渲染&#xf…

Flutter配置Android SDK路径

在使用VSCode作为开发Flutter的工具时&#xff0c;当选择调试设备时&#xff0c;通常看不到android的模拟器&#xff0c;只能看到Chrome之类的。 原因就是Flutter找不到Android的SDK路径&#xff0c;所以无法识别模拟器&#xff0c;我们用flutter doctor命令检查环境时&#xf…

uniapp物理键/右滑多次退出应用,再次进入显示白屏的问题

复现方式&#xff1a;安卓多次使用物理返回键或右滑退出应用后&#xff0c; 再次进入有很大机率显示白屏。但是手动杀进程的方式不会出现白屏和后台驻留的方式也不会出现白屏 解决思路&#xff1a;利用后台驻留的方式进行假退出应用&#xff0c;把应用隐藏至后台&#xff0c;这…

基于STM32_DS18B20单总线传感器驱动

基于STM32_DS18B20单总线传感器驱动 文章目录 基于STM32_DS18B20单总线传感器驱动前言一、BS18B20&#xff1f;二、原理1.复位与检验2.基本命令3.唯一ROM识别码4.温度转换 三、驱动代码四、注意事项 前言 本文以一款典型的单总线传感器及其驱动——DS18B20为例&#xff0c;简单…

Centos (含Rocky-Linux) VSFTPD 简单设置

本文并非深入讨论vsftp配置的文章&#xff0c;仅以能连通为目的&#xff0c;适合那些临时需要上传点东西到服务器的场景。 一、安装 dnf -y updatednf -y install vsftpdsystemctl start vsftpdsystemctl enable vsftpd二、防火墙 开放21端口&#xff1a; firewall-cmd --zo…

C# 通过winmm枚举音频设备

文章目录 前言一、如何实现&#xff1f;1、添加依赖&#xff08;1&#xff09;、nuget安装winmm的封装库&#xff08;2&#xff09;、补充接口2、定义实体3、实现枚举 二、完整代码三、使用示例总结 前言 使用C#做音频录制时需要获取音频设备信息&#xff0c;比如使用ffmpeg进…

[LitCTF 2023]导弹迷踪

这道题相较于其他的分数类型的js题有一点不一样&#xff0c;他不是像常规的有用bp多次抓包修改最后得分来获取flag的。 本题将flag藏到了他的前端文件中本身没有任何难度&#xff0c;只是为了记录一种新的做法 按照我们平常做js的思路就是先随便玩一下然后bp抓包看得分或者抓包…

解决github加载过慢问题

github打不开怎么办&#xff1f;看到这篇文章&#xff0c;一切都稳了&#xff01; DNS被污染&#xff0c;一句话&#xff0c;修改系统hosts文件&#xff01; 1.hosts文件在哪&#xff1f;C:\Windows\System32\drivers\etc 2.用记事本打开hosts&#xff0c;在最后加入以下两行…