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.rhkb.cn/news/155292.html

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

相关文章

Cookie和Session

目录 一、Cookie是什么&#xff1f; 二、Session是什么&#xff1f; 2.1 Session使用流程 三、Cookie 与 Session 的区别 四、核心方法 4.1 HttpServlet中关于Session的方法 4.2 HttpSession类中的方法 4.3 Cookie类中的方法 一、Cookie是什么&#xff1f; Cookie是浏览器在本…

微宏科技基于 KubeSphere 的微服务架构实践

作者&#xff1a;尹珉&#xff0c;KubeSphere Ambassador、contributor&#xff0c;KubeSphere 社区用户委员会杭州站站长。 公司简介 杭州微宏科技有限公司于 2012 年成立&#xff0c;专注于业务流程管理和自动化(BPM&BPA)软件研发和解决方案供应商。创始团队毕业于浙江大…

NodeJs中使用JSONP和Cors实现跨域

跨域是为了解决浏览器请求域名&#xff0c;协议&#xff0c;端口不同的接口&#xff0c;相同的接口是不需要实现跨域的。 1.使用JSONP格式实现跨域 实现步骤 动态创建一个script标签 src指向接口的地址 定义一个函数和后端调用的函数名一样 实现代码 -- 在nodejs中使用http内…

刷题用到的非常有用的函数c++(持续更新)

阅读导航 字符串处理类一、stoi()&#xff08;将字符串转换为整数类型&#xff09;二、to_string()&#xff08;将整数类型转换为字符串类型&#xff09;三、stringstream函数&#xff08;将一个字符串按照指定的分隔符进行分词&#xff09; 字符串处理类 一、stoi()&#xff…

nodejs+vue家教管理系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1nodejs简介 4 2.2 express框架介绍 6 2.3 B/S结构 4 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性…

BGP服务器租用腾讯云和阿里云价格对比

BGP云服务器像阿里云和腾讯云均是BGP多线网络&#xff0c;速度更快延迟更低&#xff0c;阿里云BGP服务器2核2G3M带宽优惠价格108元一年起&#xff0c;腾讯云BGP服务器2核2G3M带宽95元一年起&#xff0c;阿腾云atengyun.com分享更多云服务器配置如2核4G、4核8G、8核16G等配置价格…

探索 Redis 与 MySQL 的双写问题

在日常的应用开发中&#xff0c;我们经常会遇到需要使用多种不同类型的数据库管理系统来满足各种业务需求。其中最典型的就是Redis和MySQL的组合使用。 这两者拥有各自的优点&#xff0c;例如Redis为高性能的内存数据库提供了极快的读写速度&#xff0c;而MySQL则是非常强大的…

Soul CEO张璐团队以用户安全为核心,探索社交平台安全治理新路径

“认同感”,是现代年轻人当下的核心社交需求之一,作为年轻人喜爱的新型开放式社交平台,Soul APP为年轻人们提供了一个自在表达、轻松互动的平台,为用户带来了志趣相投、精神共鸣的高质量网络连接。在Soul日活近千万的用户中,超过七成为Z世代年轻群体,如何能够为Z世代提供更安全…

lv8 嵌入式开发-网络编程开发 16 多路复用poll函数

目录 1 多路复用的多种实现方式 2 poll 2.1 poll 函数应用 3 epoll 函数族&#xff08;效率最高&#xff09; 3.1 epoll_create 创建epoll句柄 3.2 epoll_ctl epoll句柄控制接口 3.3 epoll_wait 等待 epoll 文件描述符上的 I/O 事件 3.4 epoll 函数应用 1 多路复用的多…

智能优化算法常用指标一键导出为EXCEL,CEC2017函数集最优值,平均值,标准差,最差值,中位数,秩和检验,箱线图...

声明&#xff1a;对于作者的原创代码&#xff0c;禁止转售倒卖&#xff0c;违者必究&#xff01; 之前出了一篇关于CEC2005函数集的智能算法指标一键统计&#xff0c;然而后台有很多小伙伴在询问其他函数集该怎么调用。今天采用CEC2017函数集为例&#xff0c;进行展示。 为了突…

高效节能双冷源空调架构在某新建数据中心项目中的应用

随着互联网、通信、金融等行业的发展&#xff0c;数据中心产业迈入高质量发展新阶段&#xff0c;在国家“双碳”战略目标和“东数西算”工程的有力指引下&#xff0c;数据中心加快向创新技术、强大算力、超高能效为特征的方向演进。数据中心已经成为支撑经济社会数字化转型必不…

导引服务机器人 通用技术条件

声明 本文是学习GB-T 42831-2023 导引服务机器人 通用技术条件. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 6 检验规则 6.1 检验项目 检验分为型式检验和出厂检验。检验项目见表2。 表 2 检验项目 序号 检验项目 技术要求 检验方法 出厂检验 型…

SpringBoot 如何使用 Ehcache 作为缓存

使用Spring Boot Sleuth进行分布式跟踪 在现代分布式应用程序中&#xff0c;跟踪请求和了解应用程序的性能是至关重要的。Spring Boot Sleuth是一个分布式跟踪解决方案&#xff0c;它可以帮助您在分布式系统中跟踪请求并分析性能问题。本文将介绍如何在Spring Boot应用程序中使…

RS485通讯方式-详解

RS485是美国电子工业协会&#xff08;EIA&#xff09;在1983年批准的一个新的平衡传输标准&#xff0c;也称作差分。 RS485总线通常采用两线间的电压差为2V到6V表示逻辑1&#xff0c;以两线间的电压差为-2V到-6V表示逻辑0。 这种总线以其差分传输方式而闻名&#xff0c;发送端在…

Redis之缓存一致性

Redis之缓存一致性 1 缓存更新策略1.1 内存淘汰1.2 过期删除1.3 主动更新1.4 三种缓存更新策略的对比 2 更新缓存的两种方式3 缓存更新策略的实现方式3.1 先更新DB&#xff0c;后更新缓存3.2 先更新DB&#xff0c;后删除缓存3.3 先更新缓存&#xff0c;后更新DB3.4 先删除缓存&…

【数据结构C/C++】稀疏矩阵的压缩

文章目录 什么是稀疏矩阵&#xff1f;使用C语实现对稀疏矩阵的压缩408考研各数据结构C/C代码&#xff08;Continually updating&#xff09; 什么是稀疏矩阵&#xff1f; 稀疏矩阵&#xff08;Sparse Matrix&#xff09;是一种矩阵&#xff0c;其中大多数元素都是零。与稠密矩…

蓝桥杯 使用sort排序(c++)

sort是一个C已经为我们实现好的工具&#xff0c;当我们要用它时&#xff0c;需要先引入一个算法的库—— < algorithm >。需要说明的是&#xff0c;sort可以排序任何类型的元素&#xff0c;包括我们自己定义的结构体。 我们将需要在C文件的开始位置加上&#xff1a; #in…

C++: 继承

学习目标 1.继承的概念及定义 2.基类和派生类对象赋值转换(切片) 3.继承中的作用域(隐藏/重定义) 4.派生类的默认成员函数 5.继承与友元 6.继承与静态成员 7.菱形继承与菱形虚拟继承 8.总结 1.继承的概念及定义 1.1概念 继承: 它允许你创建一个新的类&#xff08;称为子类或派…

【pytorch】模型的保存与加载|| Dataloader数据加载器

Pytorch模型保存与加载&#xff0c;并在加载的模型基础上继续训练 系统学习Pytorch笔记三&#xff1a;Pytorch数据读取机制(DataLoader)与图像预处理模块(transforms) 一、只保存参数 1. 保存 一般地&#xff0c;采用一条语句即可保存参数&#xff1a; torch.save(model.s…