filter-自己的理解
在配置filter中的拦截功能时候 ,我们在web.xml中进行配置文件。filter过滤文件有系统自己带有的,还有就是我们手写的filter文件。网页调用servlter的时候,我们可以在此之前调用filter文件进行过滤然后在执行active里面的方法
1.要想一个类文件成为一个过滤器文件,着该类实现java.selver.filter的接口。
创建filter类要分为两个步骤
建立filter处理类
FilterConfig可以获取部署描述符文件(web.xml)中分配的过滤器初始化参数。
FilterConfig对象提供对servlet环境及web.xml文件中指派的过滤器名的访问。
FilterConfig对象具有一个getInitParameter方法,它能够访问部署描述符文件(web.xml)中分配的过滤器初始化参数。
web.xml文件配置Filter
实现接口的3个方法
《在此要看filter的api里面的方法》
1.1 init(FilterConfig filterConfid);
(服务器刚刚启动是会创建实例,这 个方法得到调用)这个方法可以读取web.xml中的servlet过滤的初始化参数
1.2 doFilter(ServletResquest request,ServletReaponse reponse,FilterChain chain);
ServletResquest 是接口 要用httpServletResquest的接口继承的 而 chain.toFilter();//chain.doFilter(request, response); 请求回转的方法
1.3 destroy();
下面是直接到页面
//res.sendRedirect("../failure.jsp");
下面这个是通过读取Filter文件进行跳转
//res.getRequestDispatcher(login).forward(request, response);
实例
package com.ljq.servlet;
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.HttpSession;
public class AuthorityFilter implements Filter {
private FilterConfig config;
// 实现初始化方法
public void init(FilterConfig config) {
this.config = config;
}
// 实现销毁方法
public void destroy() {
this.config = null;
}
// 执行过滤的核心方法
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// 获取该Filter的配置参数
String encoding = config.getInitParameter("encoding");
String login = config.getInitParameter("login");
// 设置request编码用的字符集
request.setCharacterEncoding(encoding);
HttpServletRequest req = (HttpServletRequest) request;
//获取session对象
HttpSession session = req.getSession();
// 获取客户请求的路径
String requestPath = req.getServletPath();
// 如果session范围的user为null,即表明没有登录
// 且用户请求的既不是登录页面,也不是处理登录的页面
if (session.getAttribute("username") == null
&& !requestPath.endsWith(login)) {
// forward到登录页面
request.setAttribute("A", "您还没有登录");
request.getRequestDispatcher
(login).forward(request, response);
}
// 放行请求
else {
chain.doFilter(request, response);
}
}
}
Web.xml的实体类
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 定义Filter -->
<filter>
<filter-name>authority</filter-name>
<filter-class>com.ljq.servlet.AuthorityFilter</filter-class>
<!-- 下面3个init-param元素配置了3个参数 -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>login</param-name>
<param-value>/login.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>authority</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
文件是读取web.xml里面的<init-param></init-param>里面的属性 param-name得到value的值
也可以这样子的格式
下面只有一个过滤文件
<filter>
<!-- Filter 的名字 -->
<filter-name>security</filter-name>
<!-- Filter 的实现类 -->
<filter-class> test.filter.SecurityFilter</filter-class>
</filter>
<!-- 定义Filter 拦截地址 -->
<filter-mapping>
<!-- Filter 的名字 -->
<filter-name> security </filter-name>
<!-- Filter 负责拦截的URL -->
<url-pattern>/security/*</url-pattern>
</filter-mapping>
filter-自己的理解的更多相关文章
- java filter的一些理解
java filter即 java中的过滤器: 一. * web项目中只有三个组件 * 过滤器filter ↓ 级 别 * 监听器 ↓ 级 别 * servlet ...
- org.springframework.web.filter.DelegatingFilterProxy的理解
org.springframework.web.filter.DelegatingFilterProxy可以将filter交给spring管理. 我们web.xml中配置filter时一般采用下面这种 ...
- elastic 查询案例Query与Filter + CRUD简单理解 + dynamic mapping + keyword
1.增 PUT mytest01/external/ { "name": "xiaowei" } curl -XPUT '192.168.1.49:9200/m ...
- Python内置函数filter, map, reduce
filter.map.reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是Python列表方法的三架马车. 1. filter函数的功能相当 ...
- python map, reduce,filter 使用
参考python built-on function: http://docs.python.org/2.7/library/functions.html?highlight=map%20reduce ...
- [三]java8 函数式编程Stream 概念深入理解 Stream 运行原理 Stream设计思路
Stream的概念定义 官方文档是永远的圣经~ 表格内容来自https://docs.oracle.com/javase/8/docs/api/ Package java.util.s ...
- Array.prototype.filter(Boolean)
ES5 中的数组有这个方法:Array.prototype.filter ,具体使用参考MDN,这里讲一个特殊应用: 回顾下语法: new_array = arr.filter(callback[, ...
- Java之Filter
一.何为Filter? Filter也称之为过滤器,它是Servlet技术中比較激动人心的技术.WEB开发者通过Filter技术.对webserver管理的全部web资源.换句话说其主要用于前台向后台 ...
- python内置函数map/reduce/filter
python有几个内置的函数很有意 思:map/filter/reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是python列表方法的三架 ...
- Python内置函数之filter map reduce
Python内置函数之filter map reduce 2013-06-04 Posted by yeho Python内置了一些非常有趣.有用的函数,如:filter.map.reduce,都是对 ...
随机推荐
- DataTable/集合 转 Json
前端用的jqueryUI框架获取json格式数据绑定显示表格. 后端通过WebService获取的数据是DataTable. 现将获取DataTable转Json,也支持将数据集合转Json. 一.项 ...
- C和C++混合编程中的extern "C" {}
引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码: 1 2 3 4 5 6 7 8 9 #ifdef __cplusplus extern "C" { #endif ...
- Yii入门☞应用
Yii 应用的静态结构 应用: require可以有返回值,Yii中经常返回数组用以配置.以前只知道引用文件成功返回1. controllerMap属性允许你指定一个控制器ID到任意控制器类,修改配置 ...
- 浅析“依赖注入(DI)/控制反转(IOC)”的实现思路
开始学习Spring的时候,对依赖注入(DI)——也叫控制反转(IOC)—— 的理解不是很深刻.随着学习的深入,也逐渐有了自己的认识,在此记录,也希望能帮助其他入门同学更深入地理解Spring.本文不 ...
- Inventory Costing in AX 2009
I wanted to explore some scenarios that illustrate a few important concepts related to inventory cos ...
- Jmeter参数化
使用jmeter时有时需要访问不同的uri,或POST不同的数据.这时候可以对数据参数化,将数据写入文件,再从文件读取.下面举个例子说明如何使用CSV Data Set Config参数化. 这里有两 ...
- web前端开发学习路径图
第一阶段 WEB前端工程师课程 HTML语句,HTML页面结构.css语法.style属性.link和style标签.id属性.等HTML语句中的相关属性: 通过Dreamweaver制作出跨越平台限 ...
- Python开发【前端】:DOM
DOM(文档对象模型(Document Object Model)) 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.在网页 ...
- 利用paramiko模块实现堡垒机+审计功能
paramiko模块是一个远程连接服务器,全真模拟ssh2协议的python模块,借助paramiko源码包中的demos目录下:demo.py和interactive.py两个模块实现简单的堡垒机+ ...
- 优化phpstorm运行卡顿问题!
在PHPSTORM中点击导航菜单:Help -> Edit Custom VM Options 如果是第一次点击,会提示是否新建配置文件,点击“是” 在弹出的编辑框末尾加上以下配置 -Dawt. ...