当前位置: 首页 > 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 获取月份、星期、星…...

告别Makefile!用Zig 0.10.0自带的构建系统搞定ARM裸机开发(附完整项目配置)

用Zig构建系统重塑ARM裸机开发&#xff1a;告别Makefile的终极指南 当你在凌晨三点盯着第47个Makefile规则调试链接器错误时&#xff0c;是否想过——嵌入式开发必须这么痛苦吗&#xff1f;Zig 0.10.0带来的不仅是一门新语言&#xff0c;更是一套彻底革新裸机开发工作流的构建系…...

OpenClaw定时任务管理:Qwen3.5-4B-Claude模型驱动智能提醒系统

OpenClaw定时任务管理&#xff1a;Qwen3.5-4B-Claude模型驱动智能提醒系统 1. 为什么需要AI驱动的定时任务系统 上个月我连续错过了三个重要会议&#xff0c;直到同事发消息询问"人到哪了"才猛然惊醒。这种尴尬促使我开始寻找解决方案——传统日历提醒太被动&#…...

用Node.js和request-promise玩转EduCoder API:手把手教你搭建自己的实训答案库

用Node.js构建EduCoder实训数据采集系统的工程实践 在编程教育平台EduCoder上&#xff0c;实训关卡的设计往往需要学习者反复尝试和验证。作为开发者&#xff0c;我们能否通过技术手段实现实训数据的自动化采集与管理&#xff1f;本文将深入探讨如何基于Node.js生态构建一个稳定…...

Windows 10 实战:基于 FFmpeg + Nginx 构建 RTSP 转 RTMP/HLS 流媒体网关

1. 为什么需要RTSP转RTMP/HLS网关 最近接手了一个监控项目&#xff0c;甲方要求将内网摄像头的实时画面通过网页展示给外网用户。刚开始觉得挺简单&#xff0c;直到发现摄像头输出的是RTSP协议——这玩意儿在浏览器里根本没法直接播放&#xff01;相信不少做过视频监控开发的同…...

5大突破!漫画阅读工具Venera重构跨平台阅读体验

5大突破&#xff01;漫画阅读工具Venera重构跨平台阅读体验 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera 副标题&#xff1a;如何在Windows、macOS和移动设备间无缝切换你的漫画库&#xff1f; 开篇痛点引入 不同设备间漫…...

如何在10分钟内实现AI助手与Figma的无缝协作?TalkToFigma Desktop完整指南

如何在10分钟内实现AI助手与Figma的无缝协作&#xff1f;TalkToFigma Desktop完整指南 【免费下载链接】cursor-talk-to-figma-mcp Cursor Talk To Figma MCP 项目地址: https://gitcode.com/GitHub_Trending/cu/cursor-talk-to-figma-mcp 您是否厌倦了在AI编程工具和Fi…...

软电话通话30秒自动挂断?一文讲透FreeSWITCH通话超时问题

当你满怀期待地搭建好FreeSWITCH&#xff0c;用两个软电话成功呼叫&#xff0c;却发现通话总是在30秒左右莫名其妙地中断——别急&#xff0c;这是SIP新手最常遇到的“经典Bug”。本文将为你抽丝剥茧&#xff0c;彻底解决这个问题&#xff0c;并附带其他可能引发通话异常中断的…...

VOOHU 沃虎电子 千兆PoE+集成式RJ45连接器 SYT411Q199DB2A1DP 内置网络变压器 支持720mA供电 适用于PoE交换机与无线AP

苏州沃虎电子科技有限公司&#xff08;品牌&#xff1a;VOOHU&#xff09;供应的 SYT411Q199DB2A1DP 是一款高性能千兆集成式RJ45连接器&#xff0c;内置符合IEEE 802.3at标准的网络变压器&#xff0c;支持PoE&#xff08;高达720mA&#xff09;供电。该产品采用90侧插DIP封装&…...

别再只用M法了!手把手教你用Arduino和旋转编码器实现M/T法测速(附代码)

别再只用M法了&#xff01;手把手教你用Arduino和旋转编码器实现M/T法测速&#xff08;附代码&#xff09; 在电机控制项目中&#xff0c;精确的速度测量往往是实现闭环控制的第一步。许多初学者会直接采用简单的M法&#xff08;频率测量法&#xff09;&#xff0c;但在实际测试…...

async-http-client原生镜像大小优化:GraalVM裁剪终极指南 [特殊字符]

async-http-client原生镜像大小优化&#xff1a;GraalVM裁剪终极指南 &#x1f680; 【免费下载链接】async-http-client Asynchronous Http and WebSocket Client library for Java 项目地址: https://gitcode.com/gh_mirrors/as/async-http-client 在当今云原生和微服…...