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类     

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第一个Mybatis项目

&#xff08;一&#xff09;为什么要用Mybatis? &#xff08;1&#xff09;Mybatis对比JDBC而言&#xff0c;sql&#xff08;单独写在xml的配置文件中&#xff09;和java编码分开&#xff0c;功能边界清晰&#xff0c;一个专注业务&#xff0c;一个专注数据。 &#xff08;2&…

java设计模式学习之【工厂模式】

文章目录 引言工厂方法模式简介定义与用途&#xff1a;实现方式&#xff1a; 使用场景优势与劣势工厂模式在spring中的应用电费计算示例&#xff08;简单工厂模式&#xff09;改善为方法工厂模式代码地址 引言 在软件开发的世界中&#xff0c;对象的创建可能是一个复杂且重复的…

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

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

java 手机商城免费搭建+电商源码+小程序+三级分销+SAAS云平台

【SAAS云平台】打造全行业全渠道全场景的SaaS产品&#xff0c;为店铺经营场景提供一体化解决方案&#xff1b;门店经营区域化、网店经营一体化&#xff0c;本地化、全方位、一站式服务&#xff0c;为多门店提供统一运营解决方案&#xff1b;提供丰富多样的营销玩法覆盖所有经营…

【数据结构/C++】栈和队列_链队列

#include <iostream> using namespace std; // 链队列 typedef int ElemType; typedef struct LinkNode {ElemType data;struct LinkNode *next; } LinkNode; typedef struct {LinkNode *front, *rear; } LinkQueue; // 初始化 void InitQueue(LinkQueue &Q) {Q.fron…

2024免费MacBook清理工具CleanMyMac X4.15

CleanMyMac X 是一款专业的Mac清理软件&#xff0c;可智能清理mac磁盘垃圾和多余语言安装包&#xff0c;快速释放电脑内存&#xff0c;轻松管理和升级 Mac 上的应用。同时 CleanMyMac X 可以强力卸载恶意软件&#xff0c;修复系统漏洞&#xff0c;一键扫描和优化 Mac 系统&…

医院手术麻醉信息系统全套源码,自主版权,支持二次开发

医院手术麻醉信息系统全套商业源码&#xff0c;自主版权&#xff0c;支持二次开发 手术麻醉信息系统是HIS产品的中的一个组成部分&#xff0c;主要应用于医院的麻醉科&#xff0c;属于电子病历类产品。医院麻醉监护的功能覆盖整个手术与麻醉的全过程&#xff0c;包括手术申请与…

Talk | 牛津大学博士后研究员边佳旺:SC-DepthV3-动态场景中的自监督单目深度估计

本期为TechBeat人工智能社区第550期线上Talk。 北京时间11月23日(周四)20:00&#xff0c;牛津大学博士后研究员—边佳旺的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “SC-DepthV3&#xff1a;动态场景中的自监督单目深度估计”&#xff0c;介绍…

ros2文件package.xml与cmakelists.txt比较

每次在ros2里面添加文件以后&#xff0c;都要修改packages.xml,与cmakelists.txt文件。

ssm+vue的企业文档管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的企业文档管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

RabbitMQ 消息队列编程

安装与配置 安装 RabbitMQ 读者可以在 RabbitMQ 官方文档中找到完整的安装教程&#xff1a;Downloading and Installing RabbitMQ — RabbitMQ 本文使用 Docker 的方式部署。 RabbitMQ 社区镜像列表&#xff1a;https://hub.docker.com/_/rabbitmq 创建目录用于映射存储卷…

仿activiti实现一个简版工作流

简版工作流 前言功能实现1.需求及实现2.代码实现1.流程设置2.项目权限设置1.表设计 3.任务流程处理1.表设计2.代码实现 4.任务流程记录5.接口说明 前言 本文代码实现是仿照工作流实现的&#xff0c;由于业务需求的特殊性&#xff0c;没有直接使用工作流。 功能实现 功能实现…

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

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

GoLand 2023.2.5(GO语言集成开发工具环境)

GoLand是一款专门为Go语言开发者打造的集成开发环境&#xff08;IDE&#xff09;。它能够提供一系列功能&#xff0c;如代码自动完成、语法高亮、代码格式化、代码重构、代码调试等等&#xff0c;使编写代码更加高效和舒适。 GoLand的特点包括&#xff1a; 1. 智能代码补全&a…

Java常量池理论篇:Class常量池、运行时常量池、String常量池、基本类型常量池,intern方法1.6、1.7的区别

文章目录 Class常量池运行时常量池String常量池基本类型常量池Integer 常量池Long 常量池 加餐部分 Class常量池 每个Class字节码文件中包含类常量池用来存放字面量以及符号引用等信息。 运行时常量池 java文件被编译成class文件之后&#xff0c;也就是会生成我上面所说的 …

WordPress用sql命令批量删除所有文章

有时我们需要将一个网站搬迁到另一个服务器。我们只想保留网站的模板样式&#xff0c;而不需要文章内容。一般情况下我们可以在后台删除已发表的文章&#xff0c;但如果有很多文章&#xff0c;我们则需要一次删除所有文章。 WordPress如何批量删除所有文章 进入网站空间后台&a…

webshell之基于框架免杀

thinkphp array_map_recursive函数 array_map_recursive函数分析 这里存在一个call_user_func命令执行函数 免杀效果 B函数 免杀效果 B函数分析 exec函数分析 在exec函数用存在有个类调用&#xff0c;且所有的参数都可控 smarty_php_tag函数 免杀效果 smarty_php_tag函数分析…

2023年项目管理工具排行榜:最佳项目管理工具推荐

如果你正在寻找一款项目管理软件&#xff0c;以下是你的最佳选择。让项目量化、可视化&#xff0c;资源合理分配、跟踪项目进度&#xff0c;帮助你的团队协作完成项目。 1、进度猫 进度猫是一款以甘特图为向导的轻量级在线免费项目进度管理工具。 基于甘特图、进度管理、任…

“AI就绪”新计划,亚马逊云科技到2025年向200万人提供免费AI技能培训

AI就绪&#xff08;AI Ready&#xff09;计划 到2025年为全球200万人提供 免费人工智能&#xff08;AI&#xff09;技能培训和教育资源 亚马逊云科技宣布启动“AI就绪&#xff08;AI Ready&#xff09;”计划&#xff0c;旨在到2025年为全球200万人提供免费人工智能&#xff08…

NPU、CPU、GPU算力及算力计算方式

NVIDIA在9月20日发布的NVIDIA DRIVE Thor 新一代集中式车载计算平台&#xff0c;可在单个安全、可靠的系统上运行高级驾驶员辅助应用和车载信息娱乐应用。提供 2000 万亿次浮点运算性能&#xff08;2000 万亿次8位浮点运算&#xff09;。NVIDIA当代产品是Orin&#xff0c;算力是…