ke12Servlet规范有三个高级特性,,文件上传下载

news2024/11/16 21:39:44

1Servlet规范有三个高级特性

分别是FilterListener文件的上传下载Filter用于修改requestresponse对象,Listener用于监听contextsessionrequest事件。 

熟悉Filter的生命周期

了解Filter及其相关API

掌握Filter的实现

掌握Filter的映射与过滤器链的使用

熟悉Listener及相关API

    熟悉Servlet 3.0新特性

掌握文件上传和下载

怎么才能一个接一个跳转过滤器呢,Filter及其相关API

右击创建Filter,

这个名字就是Filtername

拦截的是什么,myserlet

在外面myserlet内容执行前就执行我们的Filter里面的内容

首先@WebFilter(filterName = "MyFilter01",urlPatterns = "/MyServlet")

//@WebFilter(filterName = "MyFilter",urlPatterns = "/*")//拦截用户所以请求

Filter接口:就可以用,init,doFilter,destroy,

FilterConfig接口:放在doFilter作为参数.doFilter()方法用于调用过滤器链中的下一个过滤器,如果这个过滤器是链上的最后一个过滤器,则将请求提交给处理程序或将响应发给客户端。

FilterChain接口:放在doFilter作为参数

有了上面就可以第一个过滤器调用 了doFilter()第二个过滤器,第二个过滤器调用 了doFilter()第三个过滤器

有什么用---不同的Web资源中的过滤操作可以放在同一个Filter中完成,这样可以不用多次编写重复代码,从而提高了程序的性能

Filter过滤器]拦截,,,,客户端与处理程序servlet之间的可以有n个过滤器

创建阶段

,在一次完整的请求当中,Filter对象只会创建一次init()方法也只会执行一次

doFilter()方法可以执行多次

服务器关闭时,Web服务器调用destroy()方法销毁Filter对象

拦截不同方式的请求,例如jsp界面

为什么还要这种方式呢因为一般都是拦截一个servlet的开始例如

dispatcherTypes = DispatcherType.FORWARD

@WebFilter注解有一个特殊的属性dispatcherTypes,它可以指定过滤器的转发模式dispatcherTypes属性有4个常用值REQUESTINCLUDEFORWARDERROR

那么与有什么不同呢 

这个forward是在转发的时候才拦截REQUEST、INCLUDE,ERROR都一样

这个是拦截我进入first.jsp的

过滤链使用(doFilter)

使用Filechain对象第一个过滤器调用 了doFilter()第二个过滤器,第二个过滤器调用 了doFilter()第三个过滤器

访问MyServlet后哎,就是按照MyFilter01MyFilter02MyFilter03MyFilter04MyFilter05MyFilter01MyFilter06执行

不存在MyFilter00

----

chain.doFilter(request, response);这个是到哪里去的到我们真实的MyServlet然后
 这句话结束

你看

对cookie拦截注册案例:

需要:AutoLoginFilter,LoginServlet,login.jsp,index.jsp

先login.jsp的action跳转到LoginServlet进行校验用户名密码和几月份,

response.sendRedirect(request.getContextPath()+"/index.jsp");为什么要加getContextPath呢,我们要跳转到我们的项目目录下面,不是服务器 的根目录所以要加这个,如

对cookie拦截:可以对所有请求进行拦截 那我们就可以获取用户名密码

action到我们的第一个servlet判断,用户名等正确创建User对象封装起来,用session设置属性,不是空加到cookie里面,跳转index.jsp

跳转到auto如果里面不为空

注销servlet

为什么要

request.getSession().setAttribute("user", user);发给用户看?

问题1getContextPath直接跳到我们的项目目录 ,不是服务器 的根目录所以要加这个

监听器

事件,对象,监听器,处理器(成员方法)

绑定到我们的源,

监听器有8个接口,分为3类

监听域对象创建和销毁ServletContextListener接口、HttpSessionListener接口和ServletRequestListener接口

监听域对象属性增加和删除的ServletContextAttributeListener接口、HttpSessionAttributeListener接口和ServletRequestAttributeListener接口

监听绑定到HttpSession域中某个对象状态的事件HttpSessionBindingListener接口和HttpSessionActivationListener接口。

4案例:

创建了一个请求就有多少个会话

如何让我们的session销毁呢,在lib里面设置session销毁时间

servlet3.0新特性以前都是没写一个html都要在web.xml配置

以前收到请求,处理,提交响应结束servlet线程

那么现在我们3.0可以异步请求,交给另外一个线程处理自己的逻辑,自己就可以直接释放出来了

两个方法

1.web.xml

<servlet>

    <servlet-name>MyServlet</servlet-name>

    <servlet-class>cn.itcast.chapter09.filter.MyServlet</servlet-class>

    <async-supported>true</async-supported>

</servlet>

2.

@WebFilter(filterName = "MyFilter",urlPatterns = "/MyServlet"

            asyncSupported = true)

案例5

添加文件的按钮,2在servlet读取文件保存在目标路劲

使用<input type="file">标签前提:

1 必须要设置 input 输入项的 name属性,            否则浏览器将不会发送上传文件的数据。
2 必须把将表单页面的 method 属性设置为 post 方式, enctype 属性设置为“ multipart/form-data ”类型。
例子:

<%--指定表单数据的enctype属性以及提交方式--%>

<form enctype="multipart/form-data" method="post">

  <%--指定标记的类型和文件域的名称--%>

  选择上传文件:<input type="file" name="myfile"/><br />

</form>

用request的getInputstream提取交过来数据

Apache组织提供了一个开源组件Commons- FileUpload,该组件可以方便地将multipart/form-data”类型请求中的各种表单域解析出来,

对于每一个表单都会封装在fileitem里面

工厂类,用于每一个文件都封装成fileitem

DiskFileItemFactory的构造方法

ServletFileUpload类     

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

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

相关文章

CTA-GAN:基于生成对抗性网络的主动脉和颈动脉非集中CT血管造影 CT到增强CT的合成技术

Generative Adversarial Network–based Noncontrast CT Angiography for Aorta and Carotid Arteries 基于生成对抗性网络的主动脉和颈动脉非集中CT血管造影背景贡献实验方法损失函数Thinking 基于生成对抗性网络的主动脉和颈动脉非集中CT血管造影 https://github.com/ying-f…

Navicat 技术指引 | 连接 GaussDB 主备版

Navicat Premium&#xff08;16.2.8 Windows版或以上&#xff09; 已支持对GaussDB 主备版的管理和开发功能。它不仅具备轻松、便捷的可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结构同步、协同合作、数据迁移等&#xff09;&#xff0c;这…

黑马点评笔记 redis缓存三大问题解决

文章目录 缓存问题缓存穿透问题的解决思路编码解决商品查询的缓存穿透问题 缓存雪崩问题及解决思路缓存击穿问题及解决思路问题分析使用锁来解决代码实现 逻辑过期方案代码实现 缓存问题 我们熟知的是用到缓存就会遇到缓存三大问题&#xff1a; 缓存穿透缓存击穿缓存雪崩 接…

2021年03月 Scratch(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 在《采矿》游戏中,当角色捡到黄金时财富值加1分,捡到钻石时财富值加2分,下面哪个程序实现这个功能? A: B: C: D: 答案:D A将变量值固定,BC为双重判断

SPSS系统聚类

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

短视频获客系统成功分享,与其开发流程与涉及到的技术

先来看实操成果&#xff0c;↑↑需要的同学可看我名字↖↖↖↖↖&#xff0c;或评论888无偿分享 一、短视频获客系统的开发流程 1. 需求分析&#xff1a;首先需要对目标用户进行深入了解&#xff0c;明确系统的功能和目标&#xff0c;制定详细的需求文档。 2. 系统设计&#…

Android开发从0开始(ContentProvider与数据)

内容提供者&#xff1a;ContentProvider 为App存取内部数据提供外部接口&#xff0c;让不同应用共享数据。 ①在配置里AndroidManifest.xml <provider android:name".UserInfoProvider" android:authorities"com.example.chapter07_server.provider.U…

springboot+vue基本微信小程序的旅游社系统

项目介绍 现今市面上有关于旅游信息管理的微信小程序还是比较少的&#xff0c;所以本课题想对如今这么多的旅游景区做一个收集和分类。这样可以给身边喜欢旅游的朋友更好地推荐分享适合去旅行的地方。 前端采用HTML架构&#xff0c;遵循HTMLss JavaScript的开发方式&#xff0…

MySQL数据库入门到大牛_基础_14_视图及基本操作

本章开始将会介绍表之外的数据库对象。 文章目录 1. 常见的数据库对象2. 视图概述2.1 为什么使用视图&#xff1f;2.2 视图的理解 3. 创建视图3.1 创建单表视图3.2 创建多表联合视图3.3 基于视图创建视图 4. 查看视图5. 更新视图的数据5.1 一般情况5.2 不可更新的视图 6. 修改…

3款免费次数多且功能又强大的国产AI绘画工具

hi&#xff0c;同学们&#xff0c;本期是我们第55 期 AI工具教程 最近两个月&#xff0c;国内很多AI绘画软件被关停&#xff0c;国外绝大部分AI绘画工具费用不低&#xff0c;因此 这两天我 重新整理 国产 AI绘画 工具 &#xff0c; 最终 筛选了 3款功能强大&#xf…

[每周一更]-(第74期):Docker-compose 部署Jenkins容器-英文版及错误纠错

1、前文概要 通过物理机部署Jenkins前文已经讲过&#xff08;地址&#xff1a;[Jenkins] 物理机 安装 Jenkins&#xff09;&#xff0c;也已经公司内部平稳运行若干年&#xff0c;考虑到容器化的使用场景&#xff0c;部分项目都采用容器运行&#xff0c;开始考虑部署容器化的J…

JAVA毕业设计112—基于Java+Springboot+Vue的宠物领养社区小程序(源码+数据库)

基于JavaSpringbootVue的宠物领养社区小程序(源码数据库)112 一、系统介绍 本系统前后端分离带小程序 小程序&#xff08;用户端&#xff09;&#xff0c;后台管理系统&#xff08;管理员&#xff09; 小程序&#xff1a; 登录、注册、宠物领养、发布寻宠、发布领养、宠物社…

数据黑洞,正在悄悄吞噬你的门店业绩

互联网兴起以来&#xff0c;线下门店的数字化程度始终落后于线上。一个重要的原因是&#xff1a;线下信息不像线上那样简单、集中、易于统计。很多重要数据隐藏于「黑洞」之中&#xff0c;收集和分析成本极为高昂。这极大束缚了门店业绩的提升。 而反过来看&#xff0c;线下场景…

2023亚太杯数学建模A题思路分析 - 采果机器人的图像识别技术

1 赛题 问题A 采果机器人的图像识别技术 中国是世界上最大的苹果生产国&#xff0c;年产量约为3500万吨。与此同时&#xff0c;中国也是世 界上最大的苹果出口国&#xff0c;全球每两个苹果中就有一个&#xff0c;全球超过六分之一的苹果出口 自中国。中国提出了一带一路倡议…

基于亚马逊云科技大语言模型等服务打造企业知识库

背景 大语言模型是自然语言处理领域的一项重要技术&#xff0c;能够通过学习大量的文本数据&#xff0c;生成具有语法和意义的自然语言文本。目前大语言模型已经成为了自然语言处理领域的一个热门话题&#xff0c;引起了广泛的关注和研究。 知识库需求在各行各业中普遍存在&a…

1)业务平台集成电子签章平台

1.前言 电子签章平台随着企业数字化转型逐步渗透到日常运营项目中&#xff0c;如合同盖章/规章制度发布/法审意见等场景下引入电子章解决盖章需求。 作为特定业务下的统一处理方案&#xff0c;需要在业务管理平台与电子签章平台之间构建一个桥梁&#xff0c;简化电子签章平台…

Hadoop学习总结(MapReduce的数据去重)

现在假设有两个数据文件 file1.txtfile2.txt2018-3-1 a 2018-3-2 b 2018-3-3 c 2018-3-4 d 2018-3-5 a 2018-3-6 b 2018-3-7 c 2018-3-3 c2018-3-1 b 2018-3-2 a 2018-3-3 b 2018-3-4 d 2018-3-5 a 2018-3-6 c 2018-3-7 d 2018-3-3 c 上述文件 file1.txt 本身包含重复数据&…

测试Bard和ChatGPT对双休有关法规的认知和简单推理

Bard是试验品&#xff0c;chatgpt是3.5版的。 首先带着问题&#xff0c;借助网络搜索&#xff0c;从政府官方网站等权威网站进行确认&#xff0c;已知正确答案的情况下&#xff0c;再来印证两个大语言模型的优劣。 想要了解的问题是&#xff0c;在中国&#xff0c;跟法定工作…

什么是轻量应用服务器?可以从亚马逊云科技的优势入手了解

什么是轻量应用服务器&#xff1f; 随着如今各行各业对云计算的需求越来越多&#xff0c;云服务器也被越来越多的企业所广泛采用。其中&#xff0c;轻量应用服务器是一种简单、高效、可靠的云计算服务&#xff0c;能够为开发人员、企业和个人提供轻量级的虚拟专用服务器&#x…

Adobe 家族系列download

adobe 前言 Adobe公司的产品线中拥有多个家族桶&#xff0c;下面是Adobe全家桶产品的功能介绍&#xff1a; Creative Cloud&#xff08;创意云&#xff09;&#xff1a;包含Photoshop、Illustrator、InDesign、Premiere Pro、After Effects、Lightroom等创意设计、视频制作和…