本文主要对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注销方法@Overridepublic void destroy() {}//filter要实现的功能@Overridepublic 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");}//初始化方法@Overridepublic 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 {@Overridepublic void destroy() {}@Overridepublic 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");}}@Overridepublic 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就会起作用。

java web filter 之一 基础实现相关推荐

  1. java清华大学教程_清华大学出版社-图书详情-《Java Web应用开发基础教程》

    目录                                                  ...

  2. filter java web_java web filter 之一 基础实现

    本文主要对filter的基本使用进行了讲解,其中涉及到了 filter是什么 Filter 是java下的一种过滤器 ,能实现对java web程序 客户端和服务器端消息的过滤,也就是在服务器段接受r ...

  3. java大数据开发训练营--Java Web 后端技术基础(上)

    题记: 文章内容输出来源:拉勾教育大数据开发高薪训练营 本篇文章是java学习课程中的一部分笔记. 本博文主要是记录一些基础的知识点,通过实操更容易理解 这章主要讲的是JAVA Web后端基础 一 W ...

  4. 小猿圈之学习java web需要有什么基础?

    有很多人想学java,因为java虽然已经火了多年,但是其发展前景还是很不错的,有很大一部分人选择走java web方向,那么java web应该提前掌握哪些知识呢?小猿圈加加下面说一下. 首先找准自 ...

  5. java web filter标签是什么,Java Web:5.Filter

    目录 什么是Filter? Filter是由Servlet容器进行调用,对 Servlet容器请求java服务端程序(调用资源:JSP,Servlet,静态HTML),java服务端程序响应Servl ...

  6. Java Web Start入门基础教程

    关于Web Start的JNLP Specification可以到sun网站http://java.sun.com/products/javawebstart/download-spec.html下载 ...

  7. java web filter链_filter过滤链:Filter链是如何构建的?

    在一个Web应用程序中可以注册多个Filter程序,每个Filter程序都可以针对某一个URL进行拦截.如果多个Filter程序都对同一个URL进行拦截,那么这些Filter就会组成一个Filter链 ...

  8. java web filter 入口_springboot 通过@WebFilter(urlPatterns )配置Filter过滤路径

    前言 以往的javaEE增加Filter是在web.xml中配置,然而spring-boot中很明显不能这样实现,那怎么办呢?看完下面的教程,答案自然知道了. 前言 传统的javaEE增加Filter ...

  9. Java Web 动态网页基础

    一.把项目部署到tomcat下 四步走: (1)在webapps下创建一个工程并把资源放入该工程下 (2)启动tomcat--省略 (第一章里已经讲过了) (3)访问服务器下指定的资源 未来你写好的w ...

最新文章

  1. java设置图书管理系统界面设计_java 图书管理系统 界面漂亮 绝对好用
  2. Java中正则表达式提取字符串
  3. 培养“资源意识”,有助于职场晋升
  4. ImageView.ScaleType 属性值
  5. 程序员应该练练太极拳
  6. 中国人工智能学会通讯——KS-Studio:一个知识计算引擎 1.4 结束语
  7. 【OCP题库-12c】最新CUUG OCP 071考试题库(69题)
  8. 微信语音技术原理_微信语音多群直播原理-一起学堂
  9. 搭建 LimeSurvey投票调查问卷系统
  10. JS实现数据库连接并查询
  11. HttpClient和RestTemplate
  12. 矩阵特征值的求解例子
  13. 香港长和集团开创P2F金融理财新征程
  14. 32位/64位处理器:*char与*int的区别?不同类型的指针+1的区别?
  15. 一个我记了十几年的BUG
  16. 对于Android11无法访问Android/data的解决方案 还在为你的大姐姐找不到而担心吗?还在为你的学习资料找不到而发愁吗?2021-03-11
  17. 数据库课程设计------书店管理系统
  18. scratch少儿编程实例教程(模拟动画片项目式教学)——幻影龙动画编程
  19. 动物识别——人工智能
  20. pip问题:Traceback (most recent call last):File “/home/coin/anaconda3/lib/python3.7/site-packages/pip/_

热门文章

  1. [小北De编程手记] : Lesson 02 - Selenium For C# 之 核心对象
  2. nyoj--120--校园网络(scc+缩点)
  3. Material design 色彩
  4. [转]网页栅格系统研究(2):蛋糕的切法
  5. 深度相机 物体三维重建_基于深度相机进行室内完整场景三维重建的方法及系统_2017100513665_说明书_专利查询_专利网_钻瓜专利网...
  6. python绘制三维地形_【学习笔记】Python科学计算三维可视化(黄天羽、嵩天)(学习中。。)|python基础教程|python入门|python教程...
  7. 解决crontab 定时任务加载失败
  8. java 新区 老区_优学院《土地资源学》答案在线查题2020高校邦《Java核心开发技术【实境编程】》章测试答案...
  9. 电脑技巧:键盘上ESC按键的使用小技巧,你都知道吗?
  10. Win10软件:推荐两款Windows操作系统下的远程软件,值得收藏!