【JDBC】----------ServletContext和过滤器

news2024/11/16 21:41:37

分享第二十四篇励志语句

幸福是什么?幸福不一定是腰缠万贯、高官显禄、呼风唤雨。平凡人自有平凡人的幸福,只要你懂得怎样生活,只要你不放弃对美好生活的追求,你就不会被幸福抛弃。

 

 

一:ServletContext(重要)

1 ServletContext概述

(1)全局对象,也拥有作用域,对应一个Tomcat中的Web应用

(2)当Web服务器其中时,会为每一个Web应用程序创建一块共享的存储区域(ServletContext)

(3)ServletContext在Web服务器启动时创建,服务器关闭时销毁

2 获取ServletContext对象

  • GenericServlet提供了getServletContext(()方法。推荐使用this.getServletContext();

  • HttpServletRequest提供了getServletContext()方法。推荐使用

  • HttpSession提供了getServletContext()方法。

3 ServletContext作用

3.1 获取项目真实路径

获取当前项目在服务器发布的真实路径

String realpath = servletContext.getRealPath("/");

3.2 获取项目上下文路径

获取当前项目上下文路径(应用程序名称)

System.out.println(servletContext.getContextPath());//上下文路径(应用程序名称)
System.out.println(request.getContextPath);

3.3 全局容器

ServletContext拥有作用域,可以存储数据到全局容器中

  • 存储数据:servletContext.setAttribute("name",value);

  • 获取数据:servletContext.getAttribute("name");

  • 移除数据:servletContext.removeAttribute("name");

4 ServletContext特点

  • 唯一性:一个应用对应一个ServletContext

  • 生命周期:只要容器不关闭或者应用不卸载,ServletContext就一直存在

5 ServletContext应用场景

ServletContext统计当前项目访问次数

6 作用域总结

  • HttpServletRequest:一次请求,请求响应之前有效

  • HttpSession:一次会话开始,浏览器不关闭或不超时之前有效

  • ServletContext:服务启动开始,服务器停止之前有效

二:过滤器(重要)

1 现有问题

在之前的Servlet中,有没有冗余的代码,多个Servlet都要进行编写。

2 概念

过滤器(Filter)是处于客户端与服务器目标资源之间的一道过滤技术。

3 过滤器作用

(1)之行地位在Servlet之前,客户端发送请求时,会先经过Filter,再到达目标Servlet;响应时,会根据执行流程再次反向执行Filter

(2)可以解决多个Servlet共性代码的冗余问题(例如:乱码处理、登录验证)

4 编写过滤器

Servlet API中提供了一个Filter接口,开发人员编写一个Java类实现了这个接口即可,这个Java类称之为过滤器(Filter)

4.1 实现过程

(1)编写Java类实现Filter接口

(2)在doFilter()方法中编写拦截逻辑

(3)设置拦截路径

5 过滤器配置

5.1 xml配置

5.2 过滤器路径

过滤器的路径通常有三种形式:

精确过滤匹配:比如/index.jsp /myservlet1

后缀过滤匹配:比如.jsp、.html、*.jpg

通配符过滤匹配:/表示拦截所有。注意过滤器不能使用/匹配,/aaa/bbb/允许

5.3 注解配置

在自定义的Filter类上使用注解@WebFilter(value="/过滤目标资源")

6 过滤器链和优先级

6.1 过滤器链

客户端对服务器请求之后,服务器调用Servlet之前会执行一组过滤器(多个过过滤器),那么这组过滤器就称为一条过滤器链。

每个过滤器实现某个特定的功能,当第一个Filter的doFilter方法被调用时,Web服务器会创建一个代表Filter链的FilterChain对象传递给该方法。在doFilter方法中,开发人员如果调用了FilterChain对象的doFilter()方法,则Web服务器会检查FilterChain对象中是否还有Filter,如果有,则调用第2个Filter,如果没有,则调用目标资源。

 

6.2 过滤器优先级

在一个Web应用中,可以开发编写多个Filter,这些Filter组合起来称之为一个Filter链。优先级:

  • 如果为注解的话,是按照类全名称的字母顺序决定作用顺序。

  • 如果为web.xml,按照filter-mapping注册顺序,从上往下

  • web.xml配置高于注解方式

  • 如果注解和web.xml同时配置,会创建多个过滤器对象,造成过滤多次

今天的分享就到此结束了

创作不易点赞评论互关三连

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

js对象篇

面向对象 对象 如果对象的属性键名不符合JS标识符命名规范,则这个键名必须用引号包裹 访问属性有2种方法,有点语法和方括号填写法,特别地,如果属性名不符合JS命名规范或者使用变量存储属性名,则必须使用方括号访问 属…

【王道操作系统】2.3.6 进程同步与互斥经典问题(生产者消费者问题、吸烟者问题、读者写者问题、哲学家进餐问题)

进程同步与互斥经典问题(生产者消费者问题、吸烟者问题、读者写者问题、哲学家进餐问题) 文章目录进程同步与互斥经典问题(生产者消费者问题、吸烟者问题、读者写者问题、哲学家进餐问题)1.生产者-消费者问题1.1 问题描述1.2 问题分析1.3 如何实现1.4 实现互斥的P操作一定在实现…

深化全面To C战略魏牌发布与用户共创大六座SUV蓝山

对魏牌而言,与用户共创不是吸引眼球的营销噱头,而是“直面用户需求,真实倾听用户意见”的有效途径。 2022年12月30日,第二十届广州国际汽车展览会(以下简称“广州车展”)正式启幕。魏牌以“品位蓝山 有咖有…

神经网络必备基础知识:卷积、池化、全连接(通道数问题、kernel与filter的概念)

文章目录卷积操作实际操作filter与kernel1x1的卷积层可视化的例子池化全连接卷积操作 这个不难理解。我们知道图像在计算机中是由一个个的像素组成的,可以用矩阵表示。 假设一个5x5的输入图像,我们定义一个3x3的矩阵(其中的数值是随机生成的…

excel图表美化:设置标记样式让拆线图精巧有趣

折线图作为我们平时数据视图化非常常规的表现方式,想必大家已经司空见惯了。折线图很简单,每个人都会做,但是不同的人做出来的折线图却千差万别。大多数人的折线图都是直接插入默认折线图样式生成的,这样的折线图先不说有没有用心…

五、IDEA中创建Web项目

文章目录5.1 创建Web项目5.1.1 创建项目5.1.2 编写Servlet类5.2 手动部署项目5.3 自动部署项目5.3.1 IDEA集成Tomcat5.3.2 IDEA部署JavaWeb项目5.4 war包部署5.4.1 导出war包5.1 创建Web项目 5.1.1 创建项目 1、打开IDEA,单击“New Project”或者通过File–>ne…

Perl语言入门

一、简介 Perl语言是拉里.沃尔(Larry Wall)在1987年开发的一种编程语言,借鉴了C、sed、awk、shell脚本语言以及其他语言的特性,专门用于文本处理。 它可以在各种平台上运行,例如Windows,Mac OS和各种UNIX…

bean生命周期

1.Aware和InitializingBean接口 Aware 接口用于注入一些与容器相关信息,例如 BeanNameAware: 注入bean的名字BeanFactorAware: 注入beanFactor容器ApplicationContextAware: 注入applicationContext容器EmbeddedValueResolverAware: ${} 代码…

爬虫进阶一(基础一)

文章目录简介cookie爬取雪球热帖代理模拟登陆防盗链异步爬虫协程asyncioM3U8HLS爬取seleniumbilibili无头浏览器规避检测MySQLMongoDBRedis简介 这个系列分四部分 基础进阶Scrapy 框架逆向分析实战运用 先补充一些爬虫需要的基础知识和技能预热,爬取个简历模板网站…

浅谈Git

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 版本控制 什么是版本控制? 版本控制是一种在开发的过程中用于管理我们对文…

如何评价唐卫国公李靖的战功、军事才能、政治才能?

link 一鞭直渡清河洛Research and no development已关注470 人赞同了该回答个人以为,在军事上,李靖是当之无愧的唐朝第一名将,他用兵如神,精于谋略,无论是在实际的军事指挥上,还是军事理论上,他…

Vue3 中computed计算属性的使用

目录前言:什么是计算属性选项式中的计算属性组合式中的计算属性计算属性和方法的区别:计算属性/计算方法注意事项:总结前言: 目标:现在vue3的使用越来越普遍了,vue3这方面的学习我们要赶上,今天…

银行家算法 源码+实验报告(用了自取)

XIAN TECHNOLOGICAL UNIVERSITY 课程设计报告 实验课程名称 操作系统—银行家算法 专 业:计算机科学与技术 班 级: 姓 名: 学 号: 实验学时: …

小程序03/ uni-app自定义全局组件 、 uni-app项目引入 Uview-ui 框架教程方法 和 Uview框架介绍

一. uni-app自定义全局组件 1.创建组件 注意: 在components文件夹下创建组件 、文件夹名要与文件名保持一致 2.使用组件 注意: 在pages文件夹下任意vue文件、 template标签内使用该组件即可 二.uni-app项目引入Uview-ui框架教程方法 和 Uview框架介绍 (1) Uview介绍: Uvi…

【自学Java】Java运算符

Java运算符 Java运算符 Java 程序是由许多语句组成的,而语句的基本操作单位是表达式与运算符。运算符就是数学中的运算符号,如 、-、*、 / 等等。 Java 中提供了许多的运算符,这些运算除了可以处理一般的数学运算外,还可以处理…

Android---AndroidX

目录 Android 支持库 Android Support Library AndroidX 如何迁移老项目到 AndroidX? 支持库的作用 Android 支持库 Android 支持库是每个Android 应用程序中必不可少的一部分,你会发现它们无处不在。支持库为开发人员提供了将 Android 的最新和最强大功能添加…

《最重要的事,只有一件》笔记——目标不是做得更多,而是让自己需要的事情更少

目录 一、引言 二、书中摘要 1、只做一件事、一次只做一件事 2、专心于一件事不那么容易 3、我们不可能同时专注于两件事 4、平衡工作与生活是无稽之谈 5、怎么做 6、成功的习惯-围绕着你的终极目标 7、找到投入的意义 8、确定优先事务-这要看你目前和将来的打算 9、…

【自然语言处理】【ChatGPT系列】FLAN:微调语言模型是Zero-Shot学习器

FLAN: 微调语言模型是Zero-Shot学习器《Finetuned Language Models are Zero-shot Learners》论文地址:https://arxiv.org/abs/2109.01652 相关博客 【自然语言处理】【ChatGPT系列】FLAN:微调语言模型是Zero-Shot学习器 【自然语言处理】【ChatGPT系列】…

R语言geodetector包基于栅格图像实现地理探测器操作

本文介绍基于R语言中的geodetector包,依据多张栅格图像数据,实现地理探测器(Geodetector)操作的详细方法。 需要说明的是,在R语言中进行地理探测器操作,可以分别通过geodetector包、GD包等2个包实现。其中&…

react18+eslint+prettier 配置

新建项目 create-react-app.cmd react18 --template typescript配置别名 安装 craco npm install craco/craco -D新建 craco.config.js const path require("path"); const resolve (dir) > path.resolve(__dirname, dir); module.exports {// 配置别名web…