代码编织梦想

Filter 什么是过滤器?

1、Filter过滤器是javaweb的三大组件之一。三大组件分别是,Servlet程序,Listener监听器,Filter过滤器

2、Filter过滤器它是Javaee的规范,也就是接口

3、Filter过滤器的作用是:拦截请求,过滤响应。一般拦截请求用的比较多

拦截请求常见的应用场景有:

1、权限检查

2、日记操作

3、事务管理

...等

 一些页面需要登录后才能操作,比如购物车页面,订单页面等,这时候就需要过滤请求,不是所有的请求都响应。而是过滤之后,再响应

这里写一个例子

public class Filter_impl implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }
//拦截请求
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request=(HttpServletRequest)servletRequest;
        HttpSession session = request.getSession();//获取session
        //判断用户是否登录
        Object user = session.getAttribute("user");
        if(user==null){
            //请求转发到登录页面
            request.getRequestDispatcher("/login.jsp").forward(request,servletResponse);
        }


    }

    @Override
    public void destroy() {

    }
}

还需要到web.xml文件中配置

 <filter>
<!--        给Filter起一个别名-->
        <filter-name>AdmitFilter</filter-name>
<!--        Filter的全类名-->
        <filter-class>Filter_impl</filter-class>
    </filter>
    <filter-mapping>
<!--       <filter-name>表示当前的拦截路径给哪一个Filter使用 -->
        <filter-name>AdmitFilter</filter-name>
<!--    <url-pattern>表示拦截路径     /映射到web目录下,*表示全部-->
        <url-pattern>/admit/*</url-pattern>
    </filter-mapping>

 a.jsp文件在在admit目录下,login.jsp在web目录下

这时候的session对象是不存在客户的,所以返回值为null,因此直接请求转发到登录页面

这里有一个小问题,过滤器该不该使用请求转发呢?大概的原理是这样的

如果使用了请求转发,那么会先通过Filter过滤器才能访问到Servlet程序,这时候就有问题了,如果我这时候没有登录,我直接访问a.jsp文件,那么过滤器会直接让我访问login.jsp页面,但是这时候地址栏依然是admit目录下的,

 

这时候的请求会被拦截。所以应该使用重定向,login页面可以越过过滤器直接访问Servlet,写入信息之后再访问。 

或者第二种方法,拦截指定的页面,不将该目录下的所有页面都拦截

发现了原因,是因为使用了相对路径的情况,如果表单提交是绝对路径就可以了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_52360788/article/details/122500403

javaweb---filter(过滤器)学习_谢广鲲的博客-爱代码爱编程

Javaweb---Filter Filter是如何实现拦截的?Filter实例目录结构 Filter是如何实现拦截的? Filter接口中有一个doFilter方法,当我们编写好Filter,并在web.x

Javaweb-三大组件之-过滤器Filter-爱代码爱编程

Javaweb-三大组件之-过滤器Filter 文章目录 Javaweb-三大组件之-过滤器Filter过滤器概述过滤器使用过滤器的生命周期FilterConfigFilterChain多个过滤器的执行顺序四种拦截方式过滤器的应用场景设置目标资源 过滤器概述 过滤器JavaWeb三大组件之一,它与Servlet很相似!过滤器是用来拦截请求的

JavaWeb-Filter(过滤器)解决网页中文乱码问题-爱代码爱编程

11.Filter(过滤器) Filter(过滤器):用于过滤网站的数据。 处理中文乱码 登录验证 …… 结构图: Filter开发步骤: 1.导包 2.编写过滤器 ​ 过滤器文件导包: ​ 重写三个方法: 3.代码: ShowServlet package com.edwin.servlet; import javax.se

JavaWeb--- Filter(过滤器)学习-爱代码爱编程

Filter(过滤器) 处理中文乱码 登录验证…… 1、xml依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20

JavaWeb---Filter过滤器-爱代码爱编程

1、Filter 什么是过滤器 1、Filter 过滤器它是 JavaWeb 的三大组件之一。三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器 2、Filter 过滤器它是 JavaEE 的规范。也就是接口 3、Filter 过滤器它的作用是:拦截请求,过滤响应。 拦截请求常见的应用场景有: 1、权限检查2、日记操

javaWeb-8-Filter过滤器+ThreadLocal的使用-爱代码爱编程

目录 1、什么是Filter过滤器-API全集 2、Filter的初体验 2.1 Filter过滤器的初体验之要求 2.2 项目结构 2.2.1 在项目的web目录下放置需要访问的资源 2.2.2 编写一个过滤器Filter:AdminFilter implement Filter 2.2.3 编写一个用户处理登录的动态资源处理器Servle

JavaWeb-Filter 过滤器-爱代码爱编程

Filter:过滤器 ,用来过滤网站的数据; 处理中文乱码 登录验证…. 图例:   导包 <dependencies> <dependency> <groupId>javax.servlet</groupId> <arti

JavaWeb-10-Filter(过滤器)-爱代码爱编程

JavaWeb-10-Filter(过滤器) 1.概述 Filter:用来过滤网站的数据 处理中文乱码登录验证… 2.编写过滤器 创建Filter(javax.servlet下的接口)的实现类 过滤器用法(以解决页面乱码为例) public class CharacterEncodingFilter implements Filt

javaweb--过滤器Filter(重点)-爱代码爱编程

1. 过滤器Filter(可以添加多个过滤器) Filter:过滤器 ,用来过滤网站的数据; 处理中文乱码登录验证….(比如用来过滤网上骂人的话,我*******)2. Filter开发步骤 2.1 导包 pom.xml <!-- Servlet 依赖 --> <dependency>

javaweb--Filter过滤器快速入门-爱代码爱编程

1.过滤器实现类 package cn.liu.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; //过滤器快速入门 @WebFilter("/*")//访问所有资源都会执行该过滤器 publi

JavaWeb-09-Filter过滤器(重点)-爱代码爱编程

Filter 过滤器(重点) 1、什么是 Filter 过滤器 Filter:过滤器,用来过滤网站的数据 过滤 web 服务的一些垃圾请求,一些后台不应该处理的请求过滤中文乱码问题登录验证… 2、Filter 开发步骤 导包 <dependencies> <!--Servlet 依赖--> <dep

JavaWeb-使用Filter过滤器进行权限检查-爱代码爱编程

文章目录 1. 什么是Filter过滤器2. Filter初体验3. Filter的生命周期4. FilterConfig类5. FilterChain过滤器链6. Filter的拦截路径6.1 精确匹配6.2 目录匹配6.3 后缀名匹配 1. 什么是Filter过滤器 Filter 过滤器它是 JavaWeb 的三大组件之一。三大组件分别

JavaWeb--快速入门Filter过滤器-爱代码爱编程

Filter 一、Filter 过滤1. Filter什么是过滤器2. Filter的初体验2.1 编写AdminFilter实现接口2.2在xml中配置访问路径2.3 打断点debug部署服务进行测试3. Filter的生命周期4. FilterConfig类5. FilterChain 过滤器链6. Filter的拦截路径精确匹配目录匹配后缀名