package com.aaa.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; /**
* 一、创建一个filter类
* 1. 就是普通的java类 实现filter
* 2.filter 配置
* <filter>
* <filter-name>filter的类名</filter-name>
* <filter-class>com.aaa.filter.FilterDemo.filter的类名</filter-class>
这里是相对路径 你自己定义的包名+filter类名
* </filter>
* <filter-mapping>
* <filter-name>filter的类名</filter-name>
<url-pattern> /* </url-pattern> URL在这里设置 需要拦截的路径 /* 是拦截所有!
* </filter-mapping>
*
*
* requesturi.contains("login.jsp")
* contanis 的包含判断
* 如果前面的字符串包含后边的login 就返回true 放行
* 否则就返回false 拦截
*/
public class LanJieDemo implements Filter { public LanJieDemo() {
} public void destroy() {
// TODO Auto-generated method stub
} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
/*
*filter 过滤器 放行 和拦截
* getSession 是servletRequest 子类的方法需要先进行类型转换,才能使用。
* 使用之前先判断
*/
HttpServletRequest req=(HttpServletRequest)request;
HttpServletResponse reps=(HttpServletResponse)response; HttpSession session = req.getSession();
Object user = session.getAttribute("u"); if (user!=null) {
chain.doFilter(req, reps);
}else {
//将不需要拦截的资源配置 添加到string数组中
String [] arr= {"login.jsp","UserLoginServlet","register","Register","logout.jsp","Logout"}; //通过req.getrequesturl 获得本次请求的地址
String requestURI = req.getRequestURI(); //定义 Boolean类型变量tag = false
boolean tag=false; //foreach 便利我们定义的string数组 里面都是不需要拦截的资源
for (String str : arr) {
//如果本次请求的地址在 string数组中 就将tag=true
if (requestURI.contains(str)) {
tag=true;
break; //结束循环!
}
}
//true 就放行
if (tag) {
chain.doFilter(req, reps);
}else {
//进行拦截 回到登录界面!
reps.sendRedirect("login.jsp");
}
}

Servlet中的Filter 过滤器的简单使用!的更多相关文章

  1. 详解AngularJS中的filter过滤器用法

    系统的学习了一下angularjs,发现angularjs的有些思想根php的模块smarty很像,例如数据绑定,filter.如果对smarty比较熟悉的话,学习angularjs会比较容易一点.这 ...

  2. Servlet中的Filter怎么使用?

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  3. spring boot Filter过滤器的简单使用

    springboot使用Filter过滤器有两种方式: 一种是实现Filter接口然后通过@Component注解向项目加入过滤器 另一种是通过配置类来配置过滤器 @Component public ...

  4. Servlet中的Filter(过滤器)

     Filter,过滤器,是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改.判断等,把不符合规则的请求在中途拦截或修改.也可以对响应进行过滤,拦截或修改 ...

  5. Java 中的 Filter 过滤器详解

    Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件 ...

  6. Java Filter过滤器的简单总结

    1.Filter的介绍 Filter技术是servlet 2.3新增加的功能.它能够对Servlet容器的请求和响应对象进行检查和修改. Filter本身并不生成请求和响应对象,只是提供过滤功能. F ...

  7. Java中的Filter过滤器

    Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件 ...

  8. angularjs中的filter(过滤器)——格式化日期的date

    date过滤器的功能是基于要求的格式格式化一个日期成为一个字符串. 格式化字符串的基本参数: 'yyyy': 用4位数字表示年(例如:AD 1 => 0001, AD 2010 => 20 ...

  9. vue 中全局filter过滤器的配置及使用

    在项目中使用到的经常用到过滤器,比如时间,数据截取等过滤器,如果在每个.vue中都可以复制同一个过滤器,这可以达到目的,但是遇到方法有bug时就需要诸葛修改进入不同的页面修改,这样既费时又费力,优先可 ...

随机推荐

  1. anaconda 如何更换镜像源

    今天需要对anaconda更换其镜像源. 故而做一个小记: 一 查看anaconda的本源方法 电脑路径:C:\Users\14269,找到  .condarc 文件. 打开.condarc文件,可看 ...

  2. Pikachu靶场SSRF学习

    下载Pikachu靶场:https://github.com/zhuifengshaonianhanlu/pikachu Windows用phpstudy也行,记得要改config.inc文件 打开S ...

  3. 分割字符串StringTokenizer

    StringTokenizer 原来是一个遗留类,并未被废弃,只是出于兼容性原因而被保留,在新代码中已经不鼓励使用它了,建议使用 String 的 split 方法或 java.util.regex ...

  4. The Many Faces of Robustness: A Critical Analysis of Out-of-Distribution Generalization (DeepAugment)

    目录 概 主要内容 ImageNet-R StreetView StoreFronts (SVSF) DeepFashion Remixed DeepAugment 实验结论 代码 Hendrycks ...

  5. [Git]解决Permission denied, please try again问题

    在gitlab上传项目的时候出现Permission denied, please try again问题, 网上有很多解释,但是都没能解决我的问题,后来经过自己尝试成功了,这里把经验分享给大家. 在 ...

  6. 快看!❤️又一超实用浏览器插件!常用网站自动整合,JSON格式化,CSDN全站去广告!多种工具一键调用。开发者的福音!

    其实这个插件才出来的时候博主也下载了使用过,并没有什么亮点,那时候甚至觉得有点多余,因为CSDN全站去广告啥的,早就安装了油猴脚本,广告?不存在的嘿嘿.. 就在前几天看见CSDN的活动在推荐这款插件, ...

  7. WiFi6模块 RW6852-PCIE

    RW6852-PCIE是一款高度集成的模块,支持2T2R 802.11ax解决方案,具有MU-MIMO.无线LAN (WLAN) PCI Express网络接口控制器和HS-UART混合接口.它结合了 ...

  8. ElasticSearch+Kibana安装部署

    在安装ElasticSearch时遇到了很多坑,所以在这里做个笔记记录一下. 首先我考虑的是使用docker进行部署,结果发现虚拟机直接内存溢出,我也是无解了,也就是说使用docker部署还得注意容器 ...

  9. golang 开源代理

    export GOPROXY=https://goproxy.io 设置好之后就可以用go get 下载被墙的包了 项目地址:https://github.com/goproxyio/goproxy

  10. centos6.5-Apache优化

    Apache的网页压缩功能 一.配置网页压缩功能 在配置压缩功能以前访问网页的响应头部 Response Headers view source Accept-Ranges:bytes Connect ...