当前位置: 首页 > news >正文

JavaWEB-Servlet

目录

  1. Servlet简介
  2. Servlet快速入门
  3. Servlet配置详解
  4. ServletContext

1 Servlet简介

Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码,通过java的API动态的向客户端输出内容

javaWeb规范(三大组件):包含三个技术点
1)servlet技术
2)filter技术—过滤器
3)listener技术—监听器

2 Servlet快速入门

2.1 入门案例

2.1.1 实现Servlet接口步骤

1)创建类实现Servlet接口
2)覆盖尚未实现的方法

3)在web.xml进行servlet的配置

2.1.2 servlet对象如何被创建?

2.1.3 访问流程图解


但在实际开发中,我们不会直接去实现Servlet接口,因为那样需要覆盖的方法太多,我们一般创建类继承HttpServlet.

2.2 HttpServlet

2.2.1 继承HttpServlet原理图解:

2.2.2 实现步骤

1)创建类继承HttpServlet类
2)覆盖doGet和doPost

3)在web.xml中进行servlet的配置

3 Servlet的配置详解

3.1 基本配置

其中url-pattern的配置方式:
1)完全匹配 访问的资源与配置的资源完全相同才能访问到

2)目录匹配 格式:/虚拟的目录…/*

3)扩展名匹配 格式:.扩展名

注意:第二种与第三种不要混用 **/web/
.action(错误的),服务器启动报错.**

3.2 服务器启动实例化Servlet配置

Servlet的何时创建:默认第一次访问时创建.当在servlet的配置时,加上一个配置 servlet对象在服务器启动时就创建.

在中配置中给出一个非负整数,一般不写1,Tomcat有个默认的1.多个Servlet的创建顺序按照给出的非负整数从小到大排序.

3.3 缺省的Servlet

可以将url-pattern配置一个/,代表该servlet是缺省的servlet.当你访问资源地址所有的servlet都不匹配时,缺省的servlet负责处理.

缺省Servlet除了处理动态资源url不匹配,静态资源的路径不匹配也由它处理.

3.4 欢迎页面


当我们访问day07这个项目的时候,就默认在webContext下找day07.html

4 ServletContext对象

4.1 什么是ServletContext对象

ServletContext代表是一个web应用的环境(上下文)对象,ServletContext对象内部封装是该web应用的信息,ServletContext对象一个web应用只有一个

4.2 ServletContext生命周期

  • 创建:该web应用被加载(服务器启动或发布web应用(前提,服务器启动状态))
  • 销毁:web应用被卸载(服务器关闭,移除该web应用)

简称与天地同寿.

4.3 怎样获得ServletContext对象

我们可以通过两种方式获取ServletContext对象
1)ServletContext servletContext = config.getServletContext();
在init(ServletConfig config)方法中获取.但一般不用.
2)ServletContext servletContext = this.getServletContext();
在GenericServlet或HttpServlet及其子类中通过this获取.这个常用.

4.4 ServletContext的作用

4.4.1 获得web应用全局的初始化参数

在web.xml中配置初始化参数

通过context对象获得参数

4.4.2 获得web应用中任何资源的绝对路径

方法:String path = context.getRealPath(相对于该web应用的相对地址);

结果返回资源在磁盘的绝对路径:

4.4.3 ServletContext是一个域对象

4.4.3.1 域对象说明

存储数据的区域就是域对象.JavaWeb有四大域对象,按作用于范围从小到大排列:

PageContext

作用范围是整个JSP页面,是四大作用域中最小的一个;生命周期是当对JSP的请求时开始,当响应结束时销毁。

ServletRequest

作用范围是整个请求链(请求转发也存在);生命周期是在service方法调用前由服务器创建,传入service方法。整个请求结束,request生命结束。

HttpSession

作用范围是一次会话。生命周期是在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session,如果没有就在内存中创建一个session并返回。当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。如果服务器非正常关闭(强行关闭),没有到期的session也会跟着销毁。如果调用session提供的invalidate() ,可以立即销毁session。

ServletContext

作用范围是整个Web应用。当Web应用被加载进容器时创建代表整个web应用的ServletContext对象,当服务器关闭或Web应用被移除时,ServletContext对象跟着销毁。

4.4.3.2 域对象的通用的方法:

  • setAtrribute(String name,Object obj); — 设置属性
  • getAttribute(String name); — 获取属性
  • removeAttribute(String name); — 移除属性

设置的属性,其实是存放在一个Map中.这个Map的名字叫attributes. 是ServletContext接口实现类ApplicationContext的一个属性.

4.4.3.3 案例

记录网站的访问次数.

相关文章:

JavaWEB-Servlet

目录 Servlet简介Servlet快速入门Servlet配置详解ServletContext 1 Servlet简介 Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码&a…...

springboot集成mqtt

引入jar包 <dependency><groupId>org.springframework.integration</groupId><artifactId>spring-integration-mqtt</artifactId> </dependency> <dependency><groupId>com.alibaba</groupId><artifactId>fastjs…...

Lecture3 梯度下降(Gradient Descent)

目录 1 问题背景 2 批量梯度下降 (Batch Gradient Descent) 3 鞍点(Saddle Point) 3 随机梯度下降 (Stochastic Gradient Descent) 4 小批量梯度下降 (Mini-batch Gradient Descent) 1 问题背景 图1 上节课讲述的穷举法求最优权重值在Lecture2中&#xff0c;介绍了使用穷举…...

深入了解DSP

一、时钟和电源 问&#xff1a;DSP的电源设计和时钟设计应该特别注意哪些方面&#xff1f;外接晶振选用有源的好还是无源的好&#xff1f; 答&#xff1a;时钟一般使用晶体&#xff0c;电源可用TI的配套电源。外接晶振用无源的好。 问&#xff1a;TMS320LF2407的A/D转换精度保证…...

Flink反压如何排查

Flink反压利用了网络传输和动态限流。Flink的任务的组成由流和算子组成&#xff0c;那么流中的数据在算子之间转换的时候&#xff0c;会放入分布式的阻塞队列中。当消费者的阻塞队列满的时候&#xff0c;则会降低生产者的处理速度。 如上图所示&#xff0c;当Task C 的数据处…...

windows无法访问指定设备路径或文件怎么办?2个解决方案

有时候Win10电脑打不开程序或文件&#xff0c;windows无法访问指定设备路径或文件该怎么办&#xff1f;原因是什么呢&#xff1f;一般导致这种情况的出现&#xff0c;大多是因为我们的电脑缺乏相应的查看权限&#xff0c;我们只需要通过赋予权限就可以解决这个难题了。 操作环境…...

冷知识|鹤顶红还能用来修长城?

大家好&#xff0c;我是建模助手。 在上篇浅浅地蹭了波热点之后&#xff0c;我灵机一动&#xff0c;倒不如也搞一搞建筑方面的冷知识&#xff1f;冷热搭配&#xff0c;事半功倍... 问问大家&#xff0c;如果谈起古建筑&#xff0c;关键词都有什么&#xff1f;是庄严、震撼、壮…...

【GD32F427开发板试用】在IAR环境中移植RTX5

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;吴金刚 0.前言 首先感谢极术社区和兆易创新给了这次试用GD32F427开发板的机会。 板子做的虽然简约&#xff0c;但是自带了GD-link所以一根USB…...

MySQl学习(从入门到精通15)

MySQl学习&#xff08;从入门到精通15&#xff09;第 18 章_MySQL 8 其它新特性1. MySQL 8 新特性概述1. 1 MySQL 8. 0 新增特性1. 2 MySQL 8. 0 移除的旧特性2. 新特性 1 &#xff1a;窗口函数2. 1 使用窗口函数前后对比2. 2 窗口函数分类2. 3 语法结构2. 4 分类讲解1. 序号函…...

前端构建工具 Vite

文章目录参考环境构建工具构建工具的主要功能目前主流的前端构建工具Vite为什么使用 Vite冷启动WebpackVite热更新优化热更新优化预构建依赖Webpack VS ViteVite 的缺点首屏性能懒加载与 Vite 相关的基本操作获取create-vite创建项目Project nameSelect a frameworkSelect a va…...

若依框架---PageHelper分页(十)

在前几天的文章中&#xff0c;我们介绍了PageHelper的分页方法&#xff0c;研读代码定位到了ExecutorUtil.pageQuery(...)方法&#xff0c;并阅读到了其中的部分代码。 今天我们将看到重要的SQL修改代码。 getPageSql 我们接着看代码&#xff1a; if (!dialect.beforePage(…...

苹果手机专用蓝牙耳机有哪些?与iphone兼容性好的蓝牙耳机

蓝牙耳机摆脱了线缆的束缚&#xff0c;在地以各种方式轻松通话。自从蓝牙耳机问世以来&#xff0c;一直是行动商务族提升效率的好工具&#xff0c;苹果产品一直都是受欢迎的数码产品&#xff0c;下面推荐几款与iphone兼容性好的蓝牙耳机。 第一款&#xff1a;南卡小音舱蓝牙耳…...

CS-TPGS;壳聚糖修饰维生素E;Chitosan-g-TPGS

Chitosan-g-TPGS,CS-TPGS壳聚糖修饰维生素E聚乙二醇1000琥珀酸酯外观呈现白色固体或者粘稠液体。长期保存需要在-20℃,避光,干燥条件下存放&#xff0c;注意取用一定要干燥,避免频繁溶冻。 维生素E聚乙二醇琥珀酸酯(简称TPGS)是维生素E的水溶性衍生物,由维生素E琥珀酸酯的羧基与…...

easyx的基本使用(万字解析)

easyx的基本使用一.基本框架1.创建文件2.创建窗体-initgraph,closegraph,getchar二.简单的绘制1.圆形-circle2.坐标系统-setorigin,setaspectratio三.简单图形1.绘制点-putpixel2.简单的直线-line3.矩形-rectangle4.椭圆-ellipse5.圆角矩形-roundrect6.扇形-pie7.圆弧-arc四.多…...

基于OpenCV 的车牌识别

基于OpenCV 的车牌识别 车牌识别是一种图像处理技术&#xff0c;用于识别不同车辆。这项技术被广泛用于各种安全检测中。现在让我一起基于 OpenCV 编写 Python 代码来完成这一任务。 车牌识别的相关步骤 1. 车牌检测&#xff1a;第一步是从汽车上检测车牌所在位置。我们将使用…...

C#【必备技能篇】Winform跨线程更新进度条的实例

文章目录实例一&#xff1a;【方便理解&#xff0c;常用&#xff01;】源码&#xff1a;运行效果&#xff1a;实例二&#xff1a;【重在理解代码本身】源码&#xff1a;运行效果&#xff1a;参考&#xff1a;实例一&#xff1a;【方便理解&#xff0c;常用&#xff01;】 跨线…...

(1分钟速通面试) 矩阵分解相关内容

矩阵分解算法--总结QR分解 LU分解本篇博客总结一下QR分解和LU分解&#xff0c;这些都是矩阵加速的操作&#xff0c;在slam里面还算是比较常用的内容&#xff0c;这个地方在isam的部分出现过。(当然isam也是一个坑&#xff0c;想要出点创新成果的话 可能是不太现实的 短期来讲 哈…...

this指向

&#xff08;1&#xff09;在全局环境中的this——window 无论是否在严格模式下&#xff0c;在全局执行环境中&#xff08;在任何函数体外部&#xff09;this 都指向全局对象。 "use strict"console.log(this); //windowconsole.log(thiswindow);//true &#xff08…...

安卓小游戏:小板弹球

安卓小游戏&#xff1a;小板弹球 前言 这个是通过自定义View实现小游戏的第三篇&#xff0c;是小时候玩的那种五块钱的游戏机上的&#xff0c;和俄罗斯方块很像&#xff0c;小时候觉得很有意思&#xff0c;就模仿了一下。 需求 这里的逻辑就是板能把球弹起来&#xff0c;球…...

7、单行函数

文章目录1 函数的理解1.1 什么是函数1.2 不同DBMS函数的差异1.3 MySQL的内置函数及分类2 数值函数2.1 基本函数2.2 角度与弧度互换函数2.3 三角函数2.4 指数与对数2.5 进制间的转换3 字符串函数4 日期和时间函数4.1 获取日期、时间4.2 日期与时间戳的转换4.3 获取月份、星期、星…...

从OCP协议到3D寄生提取:EDA/IP技术演进与工程实践深度解析

1. 行业动态综述&#xff1a;从新闻简报到深度洞察每周追踪EDA&#xff08;电子设计自动化&#xff09;和IP&#xff08;知识产权核&#xff09;领域的动态&#xff0c;已经成了我从业十几年来的一个习惯。这不仅仅是看看新闻&#xff0c;更像是定期参加一场虚拟的行业技术交流…...

Windows APK安装工具终极指南:轻松在电脑上安装Android应用

Windows APK安装工具终极指南&#xff1a;轻松在电脑上安装Android应用 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 您是否曾经希望在Windows电脑上直接安装Android…...

告别手动重命名!Win10下用CMD脚本批量给照片加001-999编号(保姆级教程)

告别手动重命名&#xff01;Win10下用CMD脚本批量给照片加001-999编号&#xff08;保姆级教程&#xff09; 每次整理上百张照片时&#xff0c;最痛苦的就是一张张手动重命名。作为一名经常需要处理大量素材的自媒体创作者&#xff0c;我试过各种方法——从资源管理器的F2快捷键…...

告别英文界面:RedHat 6.3 桌面环境汉化原理与手动配置详解

从底层机制到实战&#xff1a;RedHat 6.3 桌面环境深度汉化指南 第一次在终端里看到满屏英文报错时&#xff0c;我盯着那个"Permission denied"愣了半天——明明昨天刚装好的系统&#xff0c;怎么连个中文提示都没有&#xff1f;这种经历恐怕是很多国内Linux用户的共…...

Rails AI上下文管理引擎:构建LLM友好的业务操作上下文

1. 项目概述&#xff1a;一个AI驱动的Rails上下文管理引擎最近在重构一个历史悠久的Rails项目时&#xff0c;我遇到了一个典型的老问题&#xff1a;业务逻辑散落在各个控制器、模型和Service对象里&#xff0c;一个简单的用户操作背后要追踪七八个文件才能理清完整的上下文。更…...

嵌入式与半导体年度技术趋势:从RISC-V、Matter到EDA 2.0与软件定义汽车

1. 从年度回顾看嵌入式与半导体行业的技术脉搏又到年底复盘时&#xff0c;各大技术媒体都在梳理过去一年的重磅内容。最近看到EE Times整理其编辑Nitin Dahad的2022年度六大精选故事&#xff0c;感触颇深。这六篇文章&#xff0c;像六个精准的切片&#xff0c;生动勾勒了过去一…...

Armv8-A架构缓存维护指令详解与应用实践

1. A64系统指令中的缓存维护操作概述在Armv8-A架构中&#xff0c;缓存维护操作是确保系统内存一致性的关键机制。作为体系结构设计中最精妙的部分之一&#xff0c;缓存维护指令直接操控处理器缓存层次结构的状态&#xff0c;对系统性能、功能正确性和安全性都有着决定性影响。现…...

自动驾驶安全迷思:从94%人为错误统计到ADAS与系统安全工程实践

1. 项目概述&#xff1a;一场关于自动驾驶安全统计数据的“祛魅”如果你最近几年关注过自动驾驶或者高级驾驶辅助系统的新闻&#xff0c;大概率听过一个被反复引用的“金科玉律”&#xff1a;94%的交通事故是由人为错误造成的。这个数字像一句魔咒&#xff0c;被无数自动驾驶公…...

十分钟速通:GO、KEGG、COG注释与富集分析的实战指南

1. 从测序数据到功能注释的快速通道 刚拿到高通量测序数据的同学&#xff0c;面对海量基因序列时总会陷入迷茫&#xff1a;这些基因到底有什么功能&#xff1f;它们参与了哪些生物过程&#xff1f;这时候GO、KEGG和COG三大注释工具就是你的"基因翻译官"。我处理过上百…...

基于本地AI的语音转文字工具OpenWhisp:隐私优先的离线生产力方案

1. 项目概述&#xff1a;一个完全本地的语音转文字工具 作为一个长期在效率工具和本地AI应用领域折腾的开发者&#xff0c;我一直在寻找一个能让我彻底摆脱网络延迟和隐私顾虑的语音输入方案。市面上的云服务要么有订阅费&#xff0c;要么有数据上传的隐忧&#xff0c;直到我看…...