java web filter 之一 基础实现
本文主要对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 之一 基础实现相关推荐
- java清华大学教程_清华大学出版社-图书详情-《Java Web应用开发基础教程》
目录 ...
- filter java web_java web filter 之一 基础实现
本文主要对filter的基本使用进行了讲解,其中涉及到了 filter是什么 Filter 是java下的一种过滤器 ,能实现对java web程序 客户端和服务器端消息的过滤,也就是在服务器段接受r ...
- java大数据开发训练营--Java Web 后端技术基础(上)
题记: 文章内容输出来源:拉勾教育大数据开发高薪训练营 本篇文章是java学习课程中的一部分笔记. 本博文主要是记录一些基础的知识点,通过实操更容易理解 这章主要讲的是JAVA Web后端基础 一 W ...
- 小猿圈之学习java web需要有什么基础?
有很多人想学java,因为java虽然已经火了多年,但是其发展前景还是很不错的,有很大一部分人选择走java web方向,那么java web应该提前掌握哪些知识呢?小猿圈加加下面说一下. 首先找准自 ...
- java web filter标签是什么,Java Web:5.Filter
目录 什么是Filter? Filter是由Servlet容器进行调用,对 Servlet容器请求java服务端程序(调用资源:JSP,Servlet,静态HTML),java服务端程序响应Servl ...
- Java Web Start入门基础教程
关于Web Start的JNLP Specification可以到sun网站http://java.sun.com/products/javawebstart/download-spec.html下载 ...
- java web filter链_filter过滤链:Filter链是如何构建的?
在一个Web应用程序中可以注册多个Filter程序,每个Filter程序都可以针对某一个URL进行拦截.如果多个Filter程序都对同一个URL进行拦截,那么这些Filter就会组成一个Filter链 ...
- java web filter 入口_springboot 通过@WebFilter(urlPatterns )配置Filter过滤路径
前言 以往的javaEE增加Filter是在web.xml中配置,然而spring-boot中很明显不能这样实现,那怎么办呢?看完下面的教程,答案自然知道了. 前言 传统的javaEE增加Filter ...
- Java Web 动态网页基础
一.把项目部署到tomcat下 四步走: (1)在webapps下创建一个工程并把资源放入该工程下 (2)启动tomcat--省略 (第一章里已经讲过了) (3)访问服务器下指定的资源 未来你写好的w ...
最新文章
- java设置图书管理系统界面设计_java 图书管理系统 界面漂亮 绝对好用
- Java中正则表达式提取字符串
- 培养“资源意识”,有助于职场晋升
- ImageView.ScaleType 属性值
- 程序员应该练练太极拳
- 中国人工智能学会通讯——KS-Studio:一个知识计算引擎 1.4 结束语
- 【OCP题库-12c】最新CUUG OCP 071考试题库(69题)
- 微信语音技术原理_微信语音多群直播原理-一起学堂
- 搭建 LimeSurvey投票调查问卷系统
- JS实现数据库连接并查询
- HttpClient和RestTemplate
- 矩阵特征值的求解例子
- 香港长和集团开创P2F金融理财新征程
- 32位/64位处理器:*char与*int的区别?不同类型的指针+1的区别?
- 一个我记了十几年的BUG
- 对于Android11无法访问Android/data的解决方案 还在为你的大姐姐找不到而担心吗?还在为你的学习资料找不到而发愁吗?2021-03-11
- 数据库课程设计------书店管理系统
- scratch少儿编程实例教程(模拟动画片项目式教学)——幻影龙动画编程
- 动物识别——人工智能
- pip问题:Traceback (most recent call last):File “/home/coin/anaconda3/lib/python3.7/site-packages/pip/_
热门文章
- [小北De编程手记] : Lesson 02 - Selenium For C# 之 核心对象
- nyoj--120--校园网络(scc+缩点)
- Material design 色彩
- [转]网页栅格系统研究(2):蛋糕的切法
- 深度相机 物体三维重建_基于深度相机进行室内完整场景三维重建的方法及系统_2017100513665_说明书_专利查询_专利网_钻瓜专利网...
- python绘制三维地形_【学习笔记】Python科学计算三维可视化(黄天羽、嵩天)(学习中。。)|python基础教程|python入门|python教程...
- 解决crontab 定时任务加载失败
- java 新区 老区_优学院《土地资源学》答案在线查题2020高校邦《Java核心开发技术【实境编程】》章测试答案...
- 电脑技巧:键盘上ESC按键的使用小技巧,你都知道吗?
- Win10软件:推荐两款Windows操作系统下的远程软件,值得收藏!