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,都是对 ...
随机推荐
- 使用dbghelp生成dump文件以及事后调试分析
前言 在产品的实际应用环境中,如果我们的程序在客户那里出现了问题,例如程序异常了,而这个时候的现象又不能还原或者很难还原重现,那么只有使用dump文件来保存程序的当前运行信息,例如调用堆栈等,同时使用 ...
- mongodb数据库迁移
如果遇到权限问题,终极解决办法:关掉权限! 如:assertion: 18 { ok: 0.0, errmsg: "auth failed", code: 18 }等错误
- GIT-查看本地html帮助文档
GIT安装后可以直接在命令行中通过指令调取本地html帮助文档如下所示: 格式: git help remote--git help 指令名称 git help remote 显示结果 获取branc ...
- 浅谈MySQL数据类型
MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 一.数值类型 MySQL支持所有标 ...
- Python开发【前端】:CSS
css样式选择器 标签上设置style属性: <body> <div style="background-color: #2459a2;height: 48px;" ...
- 在 shell 脚本获取 ip、数字转换等网络操作
在 shell 脚本获取 ip.数字转换等网络操作 ip 和数字的相互转换 ip转换为数字 :: function ip2num() { local ip=$1 local a=$(echo $ip ...
- java内存泄漏的定位与分析
1.为什么会发生内存泄漏 java 如何检测内在泄漏呢?我们需要一些工具进行检测,并发现内存泄漏问题,不然很容易发生down机问题. 编写java程序最为方便的地方就是我们不需要管理内存的分配和释放, ...
- String转json
一.下载json 具体到http://www.json.org/上找Java-json下载,并把其放到项目源代码中,这样就可以引用其类对象了 转载地址:http://blog.csdn.net/tax ...
- ibatis输入多个参数
ibatis输入多个参数 在ibatis中,会发现其输入参数只能有一个,于是当出现需要进行多个输入参数的时候,就要想点办法了,我看到的有以下两种比较好的方法能够解决这个问题1) 用String ...
- WPF中Grid绑定DataTable数据。
1.首先引用DocumentFormat.OpenXml.dll 2.然后新建一个OpenExcelHelper类,将Excel转化为Datatable. /// <summary> ...