java web filter 之一 基础实现
2016-05-14 02:10
661 查看
java web filter 之一 基础实现
本文主要对filter的基本使用进行了讲解,其中涉及到了
filter是什么
一个filter处理一个jsp
多个filter处理一个jsp
filter是什么
Filter 是java下的一种过滤器 ,能实现对java web程序 客户端和服务器端消息的过滤,也就是在服务器段接受request之前,可以预先对request进行处理,或在客户端接受response之前,对response进行处理。
Filter的使用非常灵活,是在“链”到客户端和服务器之间的,在需要时可以配置到客户端与服务器之间,在不需要时可以去掉。filter还可以设置其对发送到哪些页面或从哪些页面发出的消息进行过滤,即是一中横切性的编程,可插拔。Filter执行的大致过程如下图
![](https://img-blog.csdn.net/20130724150056984?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHFmMzA5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
实现filter相关的功能,需要实现javax.servlet.jar包下的filter接口,该接口有三个方法,分别是init doFilter,destory方法,把需要执行某些功能的代码放到doFilter方法中
一个Filter处理一个jsp:
实现filter要实现javax.servlet包下的filter接口,本例子实现的是设置所有jsp也的字符编码
写好filter类后,需要在配置文件中设置对哪些request和response进行过滤处理,本例子设置对所有的jsp页进行处理,在web.xml的web-app节点下,配置好后,可以写一个jsp页进行测试了。
多个filter处理一个jsp页
如果想实现多个filter对同一个jsp页进行处理,例如既需要设置字符编码,又需要验证身份,只需要在在写好响应的filter后继续配置在web.xml里。我们继续上面的例子,再写一个验证身份的Filter,命名为AuthenticationFilter,代码如下
然后在配置文件里继续进行下配置,代码如下
好了到此就可以设置两个filter对一个jsp页进行处理了,当启动tomcat,访问响应的jsp页时,设置的filter就会起作用。
好文要顶
关注我
收藏该文联系我
jlins
关注 - 0
粉丝 - 403
+加关注
0
0
(请您对文章做出评价)
«
上一篇:[置顶] android利用jni调用第三方库——第三篇——编写库android程序整合第三方库libhello.so到自己的库libhelloword.so
»
下一篇:服务器:RAID、AHCI、IDE
本文主要对filter的基本使用进行了讲解,其中涉及到了
filter是什么
一个filter处理一个jsp
多个filter处理一个jsp
filter是什么
Filter 是java下的一种过滤器 ,能实现对java web程序 客户端和服务器端消息的过滤,也就是在服务器段接受request之前,可以预先对request进行处理,或在客户端接受response之前,对response进行处理。
Filter的使用非常灵活,是在“链”到客户端和服务器之间的,在需要时可以配置到客户端与服务器之间,在不需要时可以去掉。filter还可以设置其对发送到哪些页面或从哪些页面发出的消息进行过滤,即是一中横切性的编程,可插拔。Filter执行的大致过程如下图
实现filter相关的功能,需要实现javax.servlet.jar包下的filter接口,该接口有三个方法,分别是init doFilter,destory方法,把需要执行某些功能的代码放到doFilter方法中
一个Filter处理一个jsp:
实现filter要实现javax.servlet包下的filter接口,本例子实现的是设置所有jsp也的字符编码
package com.tgb.drp.util.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; /** * 采用filter统一处理字符集 * */ public class CharsetEncodingFilter implements Filter { private String encodeString; //Filter注销方法 @Override public void destroy() { } //filter要实现的功能 @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("begin"); // 设置字符集 request.setCharacterEncoding(encodeString); //继续向下执行,如果还有其他filter继续调用其他filter,没有的话将消息发送给服务器或客户端 chain.doFilter(request, response); System.out.println("end"); } //初始化方法 @Override public void init(FilterConfig filterConfig) throws ServletException { // encodeString=filterConfig.getInitParameter("encoding"); } }
写好filter类后,需要在配置文件中设置对哪些request和response进行过滤处理,本例子设置对所有的jsp页进行处理,在web.xml的web-app节点下,配置好后,可以写一个jsp页进行测试了。
<filter> <filter-name>CharsetEncodingFilter</filter-name> <filter-class>com.tgb.drp.util.filter.CharsetEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharsetEncodingFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>
多个filter处理一个jsp页
如果想实现多个filter对同一个jsp页进行处理,例如既需要设置字符编码,又需要验证身份,只需要在在写好响应的filter后继续配置在web.xml里。我们继续上面的例子,再写一个验证身份的Filter,命名为AuthenticationFilter,代码如下
package com.tgb.drp.util.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; public class AuthenticationFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //控制用户访问权限 HttpServletRequest req=(HttpServletRequest)request; HttpServletResponse res=(HttpServletResponse)response; HttpSession session=req.getSession(); if(session.getAttribute("user_info")!=null){ chain.doFilter(request, response); }else{ res.sendRedirect(req.getContextPath()+"/error.html"); } } @Override public void init(FilterConfig filterConfig) throws ServletException { } }
然后在配置文件里继续进行下配置,代码如下
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> <filter> <filter-name>CharsetEncodingFilter</filter-name> <filter-class>com.tgb.drp.util.filter.CharsetEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharsetEncodingFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter> <filter-name>AuthenticationFilter</filter-name> <filter-class>com.tgb.drp.util.filter.AuthenticationFilter</filter-class> </filter> <filter-mapping> <filter-name>AuthenticationFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <session-config> <session-timeout>60</session-timeout> </session-config> </web-app>
好了到此就可以设置两个filter对一个jsp页进行处理了,当启动tomcat,访问响应的jsp页时,设置的filter就会起作用。
好文要顶
关注我
收藏该文联系我
jlins
关注 - 0
粉丝 - 403
+加关注
0
0
(请您对文章做出评价)
«
上一篇:[置顶] android利用jni调用第三方库——第三篇——编写库android程序整合第三方库libhello.so到自己的库libhelloword.so
»
下一篇:服务器:RAID、AHCI、IDE
相关文章推荐
- Spring核心技术Spring容器
- POJ 1001 Exponentiation(大数幂,还是Java大发好!需调用多个方法)
- Junit4学习笔记
- Spring自定义标签解析
- 各种排序算法的分析及java实现
- JAVA代码训练营—— keySet、entrySet
- javap命令工具
- POJ 2389 Bull Math(大数乘法,还是Java好)
- [LeetCode] 30. Substring with Concatenation of All Words 解题思路 - Java
- Java学习之static关键字
- java多线程系列1--线程实现与调度
- JAVA文件中获取路径及WEB应用程序获取路径方法
- Java获取WEB目录路径
- java-web易错汇总
- Java设计模式之策略设计模式
- java jdbc编程,运行总显示不允许链接
- Java泛型 泛型的上下限
- Spring Securty 4.1.0 基本概念说明
- SSM框架 SSM项目源码 SSM源码 下载 java框架整合Springmvc+mybatis+s
- myeclipse里的Hibernate关系映射