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

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.hqwc.cn/news/214155.html

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

相关文章

conan 入门(三十二):package_info中配置禁用CMakeDeps生成使用项目自己生成的config.cmake

conanfile.py中定义的package_info()方法用于向package的调用者(conumer)提供包库名&#xff0c;编译/连接选项&#xff0c;文件夹等等信息&#xff0c;有了这些信息构建工具的generator就可以根据它们生成对应的文件&#xff0c;用于调用者引用package. 比如基于cmake的CMakeD…

多线程Thread(初阶二:Thread类及常⻅⽅法)

目录 一、Thread 的常⻅构造⽅法 继承Thread代码&#xff1a; 实现Runnable接口代码: 二、Thread 的⼏个常⻅属性 1、id&#xff1a; 2、获取线程的名字。 3、进程的状态&#xff1a; 4、在java中设置的优先级&#xff0c; 5、是否后台线程&#xff0c; 6、是否存活&a…

leetcode:495. 提莫攻击

一、题目 链接&#xff1a;495. 提莫攻击 - 力扣&#xff08;LeetCode&#xff09; 函数原型&#xff1a;int findPoisonedDuration(int* timeSeries, int timeSeriesSize, int duration) 二、思路 遍历数组timeSeries&#xff0c;如果 元素值duration < 下一元素值 &#x…

【开源】基于Vue.js的海南旅游景点推荐系统的设计和实现

项目编号&#xff1a; S 023 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S023&#xff0c;文末获取源码。} 项目编号&#xff1a;S023&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户端2.2 管理员端 三、系统展示四…

小程序:project.config.json / project.private.config.json / 项目配置文件 /拉取代码产生冲突 / 如何解决

一、理解project.config.json / project.private.config.json project.config.json 文件是项目的配置文件&#xff0c;它包含了关于小程序的一些基本信息&#xff0c;例如小程序的名称、App ID、开发者信息以及页面路径等。这个文件一般不会被提交到版本控制系统中&#xff0c;…

Node.js入门指南(二)

目录 http模块 创建http服务端 浏览器查看 HTTP 报文 获取 HTTP 请求报文 设置响应报文 网页资源的基本加载过程 静态资源服务 hello,大家好&#xff01;上一篇文章我们对Node.js进行了初步的了解&#xff0c;并介绍了Node.js的Buffer、fs模块以及path模块。这一篇文章主…

【Git】一文教你学会 submodule 的增、查、改、删

添加子模块 $ git submodule add <url> <path>url 为想要添加的子模块路径path 为子模块存放的本地路径 示例&#xff0c;添加 r-tinymaix 为子模块到主仓库 ./sdk/packages/online-packages/r-tinymaix 路径下&#xff0c;命令如下所示&#xff1a; $ git subm…

【深度学习】基于深度学习的超分辨率图像技术一览

超分辨率(Super-Resolution)即通过硬件或软件的方法提高原有图像的分辨率&#xff0c;图像超分辨率是计算机视觉和图像处理领域一个非常重要的研究问题&#xff0c;在医疗图像分析、生物特征识别、视频监控与安全等实际场景中有着广泛的应用。 SR取得了显著进步。一般可以将现有…

互联网上门洗鞋店小程序

上门洗鞋店小程序门店版是基于原平台版进行增强的&#xff0c;结合洗鞋行业的线下实际运营经验和需求&#xff0c;专为洗鞋人和洗鞋店打造的高效、实用、有价值的管理软件系统。 它能够帮助洗鞋人建立自己的私域流量&#xff0c;实现会员用户管理&#xff0c;实现用户与商家的点…

AC自动机(简单模板)

AC自动机&#xff0c;就相当于是在字典树上用kmp。next数组回退的位置为最大匹配字符串在字典树上的节点位置。 在获取字典树上的next数组的时候用的是BFS每次相当与处理的一层。 下图中红线为&#xff0c;可以回退的位置&#xff0c;没有红线的节点回退的位置都是虚拟原点。…

pgz easyexcel如何给excel文件添加自定义属性

免费API方式 直接上传URL,自定义修改Excel 视频演示【内含接口地址】 https://www.ixigua.com/7304510132812153385 前情提示 | 功能说明 多选仅支持微软office、office365系列Excel。因为WPS宏功能需要企业版且付费生成xlsx、xlsm等文件,office和WPS均可以打开,均可以单…

设计模式——行为型模式(一)

行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行…