java 检查url是否跳转_一篇搞定Java过滤器

90e3ce84062ee1b0fd4e550de9d2205e.png

Filter:过滤器

引言

我们可以通过使用前面的技术,做出一些简单的登陆注册以及配合数据库实现对数据增删改查的Demo,程序是基本运行起来了,但是却存在着一个重大的安全问题,那就登陆权限验证,一般来说登陆的正确流程是这样的:用户在客户端发出请求 -> 后台判断是否登录 -> 是则不限制,否则 跳转回登录页面,判断是否登录和我们前面所学习的 Header中获取referer再判断达从而到防盗链的效果有相似的感觉,就是起一个判断过滤的样子,而Filter则是一个更好的解决这样问题的技术,当然强大的功能不止这一点,下面我们就好好来说一说!

(一) 过滤器概述

过滤器,顾名思义就是起到过滤筛选作用的一种事物,只不过相较于现实生活中的过滤器,这里的过滤器过滤的对象是客户端访问的web资源,也可以理解为一种预处理手段,对资源进行拦截后,将其中我们认为的杂质(用户自己定义的)过滤,符合条件的放行,不符合的则拦截下来

当然,过滤器既可以拦截request,也可以拦截返回的response,我们来看一张图

829337374f2c3e9010197688973cf16e.png

(二) 第一个过滤器程序

过滤器的本质就是一个实现了 Filter 接口的 Java 类

我们先自己创建一个类,实现Filter接口(javax.servlet),重写其中的所有方法

 @WebFilter("/*")
 public class FilterDemo1 implements Filter {
    
     public void destroy() {
    
     }
 ​
     public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
    
         //放行代码
         chain.doFilter(req, resp);
     }
 ​
     public void init(FilterConfig config) throws ServletException {
    
     }
 ​
 }

我们先不探究其中的方法,我们先看一下如何配置filter

(三) filter配置

第一种:web.xml配置

 <filter>
     <filter-name>filterDemo1</filter-name>
     <filter-class>package cn.ideal.web.filter.FilterDemo1</filter-class>
 </filter>
 ​
 <filter-mapping>
     <filter-name>filterDemo1</filter-name>
     <!-- 拦截路径 -->
     <url-pattern>/*</url-pattern>
 </filter-mapping>

filter

<filter-name></filter-name> :指定filter名字

<filter-class></filter-class> :指定filter全类名(带包名)

filter-mapping

<filter-name></filter-name> :这里的标签是为了与上面filter中的名字对应,从而指向到对应的文件中

<url-pattern></url-pattern>设置filter所拦截的路径 ※ 这里决定了什么样的资源会被过滤器拦截处理

拦截路径设置

格式解释/test.jsp只有访问test.jsp这个资源的时候才会执行过滤器/test/*访问test下所有资源你的时候,执行过滤器*.jsp所有jsp格式的资源被访问的时候,执行过滤器/*任意资源被访问,均执行过滤器

由于过滤器内设置的是比较通用的一些设置,所以一般来说使用 /* 这种格式,不过也可以根据需求情况选择

拦截方式配置:dispatcher

拦截方式配置也就是资源被访问的形式,有这么几个属性

  • REQUEST:默认值,浏览器直接请求资源
  • FORWARD:转发访问资源 : RequestDispatcher.forward();
  • INCLUDE:包含访问资源 : RequestDispatcher.include();
  • ERROR:错误跳转资源 : 被声明式异常处理机制调用的时候

补充:声明式异常处理即:在web.xml中通过配置来确定不同的异常类型将如何被处理࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值