Servlet中的Filter 过滤器的简单使用!
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 过滤器的简单使用!的更多相关文章
- 详解AngularJS中的filter过滤器用法
系统的学习了一下angularjs,发现angularjs的有些思想根php的模块smarty很像,例如数据绑定,filter.如果对smarty比较熟悉的话,学习angularjs会比较容易一点.这 ...
- Servlet中的Filter怎么使用?
一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...
- spring boot Filter过滤器的简单使用
springboot使用Filter过滤器有两种方式: 一种是实现Filter接口然后通过@Component注解向项目加入过滤器 另一种是通过配置类来配置过滤器 @Component public ...
- Servlet中的Filter(过滤器)
Filter,过滤器,是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改.判断等,把不符合规则的请求在中途拦截或修改.也可以对响应进行过滤,拦截或修改 ...
- Java 中的 Filter 过滤器详解
Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件 ...
- Java Filter过滤器的简单总结
1.Filter的介绍 Filter技术是servlet 2.3新增加的功能.它能够对Servlet容器的请求和响应对象进行检查和修改. Filter本身并不生成请求和响应对象,只是提供过滤功能. F ...
- Java中的Filter过滤器
Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件 ...
- angularjs中的filter(过滤器)——格式化日期的date
date过滤器的功能是基于要求的格式格式化一个日期成为一个字符串. 格式化字符串的基本参数: 'yyyy': 用4位数字表示年(例如:AD 1 => 0001, AD 2010 => 20 ...
- vue 中全局filter过滤器的配置及使用
在项目中使用到的经常用到过滤器,比如时间,数据截取等过滤器,如果在每个.vue中都可以复制同一个过滤器,这可以达到目的,但是遇到方法有bug时就需要诸葛修改进入不同的页面修改,这样既费时又费力,优先可 ...
随机推荐
- PowerDotNet平台化软件架构设计与实现系列(10):文件平台
很多业务系统少不了需要进行文件管理,比如各种图片.excel.pdf.压缩包等等,为了高度可复用,我们抽象出文件平台,加强对文件进行管理. PowerDotNet文件平台目前支持阿里云OSS.Fast ...
- Variational Autoencoders and Nonlinear ICA: A Unifying Framework
目录 概 主要内容 本文的模型 Identifiability Khemakhem I., Kingma D. P., Monti R. P. and Hyv"{a}rinen A. Var ...
- ROS机器人导航一 : 从英雄联盟到ROS导航
写在前面: 这是这个系列的第一篇 本系列主要从零开始深入探索ROS(机器人操作系统)的导航和规划. 这个系列的目标,是让大家了解: 1.ROS的导航是怎么实现的 2.认识ROS里各种已有的导航算法,清 ...
- MySQL数据库基础(4)SELECT 数据查询
目录 一.SELECT 选择列表 二.MySQL 运算符 三.定制显示查询结果 四.模糊查询 一.SELECT 选择列表 1.语法 SELECT <COLUMN1, COLUMN2, COLUM ...
- 查看电脑内存是ddr3还是ddr4
内存不够用了 要加个内存 但是不想拆机 怎么知道自己电脑是第几代内存呢? 怎么知道频率呢? 1.运行cmd 2.输入wmic回车 3.输入memorychip回车 4.往右拉找到Speed Statu ...
- 把rocksdb配置成leveldb
将rocksdb配置成leveldb 1.配置方法 配置方式有三种: 第一种适合进行性能测试对比:是以参数形式在运行db_bench或ycsb-c的时候以参数形式将rocksdb将其配置成leveld ...
- CSS基础 水平居中案例
html结构 <body> <div class="father"> <div class="son"></div&g ...
- CentOS7找不到ifconfig命令解决方法
CentOS默认支持使用ip a命令查看网卡信息,但我们更习惯用ifconfig查看网卡信息,但在CentOS使用该命令会提示找不到命令,可以用如下方法解决问题. 1.使用yum search ifc ...
- unittest_skip跳过用例执行(3)
在执行测试用例时,有时候有些用例是不需要执行的,比如版本迭代用例弃用,测试周期短只需要执行优先级高的用例,那我们怎么办呢?难道删除这些用例?那下次执行时如果又需要执行这些用例时,又把它补回来?这样操作 ...
- 谈谈 StringBuffer 和 StringBuilder 的历史故事
1.前言 众所周知,StringBuffer 是线程安全的 ,而StringBuilder 不是线程安全的 ,但是 StringBuilder 速度会更快. 事实上 作为一个字符串拼接 方法 ,在线 ...