JAVA WEB篇4——Filter、Listener
JAVA WEB篇4——Filter、Listener
1、Filter
- Filter本意为”过滤“的含义,是JavaWeb的三大组件之一,三大组件为:Servlet、Filter、 Listener
- 过滤器是向 Web 应用程序的请求和响应处理添加功能的 Web 服务组件
- 过滤器相当于浏览器与Web资源之间的一道过滤网,在访问资源之前通过一系列的过滤器对请求 进行修改、判断以及拦截等,也可以对响应进行修改、判断以及拦截等
1.1、简单的登录案例
<%--Created by IntelliJ IDEA.User: yoyaDate: 2021/7/18Time: 10:36To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>$Title$</title></head><body><form action="${pageContext.request.contextPath}/RuoyrServlet"><input type="text" name="pwd"><input type="submit" value="提交"></form></body>
</html>
@WebServlet("/RuoyrServlet")
public class RuoyrServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {System.out.println("22222222222222222222222");String pwd = request.getParameter("pwd");request.getSession().setAttribute("pwd",pwd);if (pwd.equalsIgnoreCase("123"))response.sendRedirect(request.getContextPath()+"/success.jsp");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}
<%--Created by IntelliJ IDEA.User: yoyaDate: 2021/7/19Time: 19:41To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%if (session.getAttribute("pwd")==null)response.sendRedirect(request.getContextPath()+"/index.jsp");
%>
<h1>登陆成功</h1>
</body>
</html>
每次都在jsp里写判断有点麻烦
1.2、Filter使用方式
如果有多个过滤器都满足过滤的条件,则容器依据映射的先后顺序来调用各个过滤器
1.2.1、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><filter><filter-name>RuoyeFilter</filter-name><filter-class>RuoyeFilter</filter-class></filter><filter-mapping><filter-name>RuoyeFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>
@WebFilter(urlPatterns = { "/*" })
public class RuoyeFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("11111111111111111");//放行HttpServletRequest httpServletRequest= (HttpServletRequest) servletRequest;HttpServletResponse httpServletResponse= (HttpServletResponse) servletResponse;System.out.println(httpServletRequest.getServletPath());if (httpServletRequest.getSession().getAttribute("pwd")!=null||httpServletRequest.getServletPath().equals("/RuoyrServlet")||httpServletRequest.getServletPath().equals("/index.jsp"))filterChain.doFilter(servletRequest,servletResponse);elsehttpServletResponse.sendRedirect(httpServletRequest.getContextPath());System.out.println("3333333333333333333333");}
}
注意导的包 import javax.servlet.annotation.WebFilter;
1.2.2、@WebFilter
@WebFilter(urlPatterns = { "/*" })
public class RuoyeFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("11111111111111111");//放行HttpServletRequest httpServletRequest= (HttpServletRequest) servletRequest;HttpServletResponse httpServletResponse= (HttpServletResponse) servletResponse;System.out.println(httpServletRequest.getServletPath());if (httpServletRequest.getSession().getAttribute("pwd")!=null||httpServletRequest.getServletPath().equals("/RuoyrServlet")||httpServletRequest.getServletPath().equals("/index.jsp"))filterChain.doFilter(servletRequest,servletResponse);elsehttpServletResponse.sendRedirect(httpServletRequest.getContextPath());System.out.println("3333333333333333333333");}
}
1.3、多过滤器
1.4、过滤器的优点
- 实现代码的“可插拔性”,即增加或减少某个功能模块,不会影响程序的正常执行
- 可以将多个相同处理逻辑的模块集中写在过滤器里面,可实现重复利用、也方便代码的维护
2、 Listener
用来监听Servlet容器产生的事件并进行相应的处理
这玩意很强,但是没看出来有什么用,待补
JAVA WEB篇4——Filter、Listener相关推荐
- java web开发中Filter使用Annotation配置 (转载)
为什么80%的码农都做不了架构师?>>> 为了在java中得到request和response对象,搜索到了 <如何在Java的普通类中获取Session以及reques ...
- JAVA WEB篇3——JSP
JAVA WEB篇3--JSP 1.JSP是什么 JSP是Java Server Pages的简称,跟Servlet一样可以动态生成HTML响应, JSP文件命名为 xxx.jsp 与Servlet不 ...
- JAVA WEB篇2——Servlet
JAVA WEB篇2--Servlet Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是Java语言编写 的服务器端程序,换句话说,Serv ...
- JAVA WEB篇1——初识JAVAWEB
JAVA WEB篇1--初识JAVAWEB JavaWeb主要指使用Java语言进行动态Web资源开发技术的统称,是解决相关Web互联网领域的技术总和 1.Http协议 HTTP协议(HyperTex ...
- java web 全局_JavaWeb - 【Listener】初始化全局资源
JavaWeb - [Listener]初始化全局资源 JavaWeb - [Listener]初始化全局资源 Listener使用步骤 Listener功能 初始化全局资源(读取配置文件) Serv ...
- Java web—Servlet过滤器(Filter)
前言: 过滤器是Servlet中一个非常重要的组成部分,进行WEB开发时无不用到过滤器:因此这篇blog来单独总结下关于过滤器的知识点. 一.首先来了解一下什么是过滤器: 下面这句话引 ...
- JAVA基础(16) Servlet/Filter/Listener/Interceptor区别与联系
一.概念: 1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层.最早支持 Serv ...
- Java Web中的Filter和Interceptor的区别
2019独角兽企业重金招聘Python工程师标准>>> 1.问题的来源 项目中使用了Filter,进行白名单的控制,同时使用了Filter进行了跨域请求的控制,使用了Intercep ...
- java web filter标签是什么,Java Web:5.Filter
目录 什么是Filter? Filter是由Servlet容器进行调用,对 Servlet容器请求java服务端程序(调用资源:JSP,Servlet,静态HTML),java服务端程序响应Servl ...
最新文章
- oracle group by效率问题,性能优化-group by的优化
- [js] 一个api接口从请求数据到请求结束共与服务器进行了几次交互?
- 自组网中继台_同频自组网基站
- tail 显示文件最后若干行内容
- 单片机片外程序存储器数据存储器操作命令
- 大数据Hadoop集群中常用的任务调度框架
- .h5是什么文件_PPT转H5丨再也不用担心忘带U盘怎么办了
- 金融评分卡项目—9.违约预测模型的后续工作
- 大一c语言编程上机题库,C语言上机题库Word版
- adb连接 红米5手机
- Office基础操作:Word、PPT 表格文字居中
- Docker 镜像批量导入导出脚本
- Chrome 开发者工具 network 显示 Provisional headers are shown 的几种原因
- uniapp主题切换
- 【支付架构】跨境支付
- Windows下批量删除空文件夹
- 计算机毕业设计Java智能超市导购系统(源码+系统+mysql数据库+lw文档)
- SiamFC代码配置复现 matlab版本
- 【英语口语】01 - 原子介绍
- DDR,DDR2,DDR3,DDR4,LPDDR区别讲解
热门文章
- android scrollview焦点,scrollview里面的edittext,当它获得焦点时如何滚动到edittext
- linux lp 打印中文,Linux基础命令---lp打印文件
- java数据类型_JAVA基础篇(数据类型)
- 什么是Apple Desktop Bus? 亚行代表什么?
- stl vector 函数_vector :: front()函数以及C ++ STL中的示例
- oracle怎样修改表名、列名、字段类型、添加表列、删除表列
- js 自己试验 创建对象例子
- www(apache)服务器的基本设置
- p标题/p能设置字体的大小和颜色
- 2019最新C语言知识整理小白进来看看??