Java Web---登录验证和字符编码过滤器
来源:互联网 发布:淘宝指数怎么查询 编辑:程序博客网 时间:2024/06/05 07:21
什么是过滤器?
在Java Web中,过滤器即Filter。Servlet API中提供了一个Filter接口(javax.servlet.Filter),开发web应用时,如果编写的Java类实现了这个接口,则把这个Java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。简单说,就是可以实现web容器对某资源的访问前截获进行相关的处理,还可以在某资源向web容器返回响应前进行截获进行处理。
创建一个Filter的步骤
1.创建一个Filter处理类(实现javax.servlet.Filter接口)
2.在web.xml文件中配置Filter
Filter执行流程
1.Filter对用户的请求进行预处理
2.处理好后将请求交给Servlet处理并生成响应
3.最后Filter再对服务器响应进行后处理
字符编码过滤器
CharacterFilter.java
package org.LabReserve.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;public class CharacterFilter implements Filter { //实现Filter接口 private String character; //保存字符编码的类型 @Override public void destroy() { //在Filter销毁前,完成某些资源的回收 } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("utf-8"); //可以直接设置编码 servletResponse.setCharacterEncoding(character); //也可以读取初始化的参数character filterChain.doFilter(servletRequest, servletResponse); //转到下一个过滤器 } @Override public void init(FilterConfig fc) throws ServletException { //完成Filter的初始化 //读取web.xml中Filter配置的初始化参数 character = fc.getInitParameter("character"); }}
web.xml文件中的配置
<!-- 定义一个Filter --> <filter> <!-- Filter的名字 --> <filter-name>CharacterFilter</filter-name> <!-- Filter的实现类 --> <filter-class>org.LabReserve.filter.CharacterFilter</filter-class> <!-- 初始化参数 --> <init-param> <!-- 参数名 --> <param-name>character</param-name> <!-- 参数值,编码为utf-8 --> <param-value>utf-8</param-value> </init-param> </filter> <!-- 定义Filter要拦截的url地址 --> <filter-mapping> <!-- Filter的名字 --> <filter-name>CharacterFilter</filter-name> <!-- 要拦截的url,这里是全部拦截 --> <url-pattern>/*</url-pattern> </filter-mapping>
登录验证过滤器
LoginFilter.java
package org.LabReserve.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 LoginFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { // 转换为HTTP请求对象 HttpServletRequest request = (HttpServletRequest) servletRequest; // 转化为HTTP响应对象 HttpServletResponse response = (HttpServletResponse) servletResponse; // 获得请求对应的session对象 HttpSession session = request.getSession(); // 获得用户请求的URI String path = request.getRequestURI(); // 不用验证登录过滤的页面 String[] noCheckPages = { "index.jsp","findPassword.jsp", "LoginServlet","UserServlet", "css","images","js"}; // int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。没找到则返回-1 for (int i = 0; i < noCheckPages.length; ++i) { if (path.indexOf(noCheckPages[i]) > -1) { // 转到下一个过滤器 filterChain.doFilter(servletRequest, servletResponse); return; //不再过滤,防止页面重定向循环 } } // 如果session为null,说明用户是第一次访问 if (session.getAttribute("userId") != null || session.getAttribute("teacherId") != null || session.getAttribute("adminId") != null) { // 转到下一个过滤器 filterChain.doFilter(request, response); } else { // 重新定向到首页 response.sendRedirect("index.jsp"); return; //不再过滤,防止页面重定向循环 } } @Override public void init(FilterConfig arg0) throws ServletException { }}
web.xml文件配置
<filter> <filter-name>LoginFilter</filter-name> <filter-class>org.LabReserve.filter.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
参考链接:http://lavasoft.blog.51cto.com/62575/275586/
http://www.cnblogs.com/lyp3314/archive/2012/11/03/2752097.html
0 0
- Java Web---登录验证和字符编码过滤器
- Java web登录验证过滤器
- Java web实现登录验证和过滤器权限设置
- JAVA配置登录过滤器和编码过滤器
- java 登录过滤器, 编码过滤器
- JSP登录验证编码过滤器
- Java web过滤器验证登录防止未登录进入界面
- web.xml 字符编码过滤器
- 过滤器应用:编码过滤、登录验证
- Web.xml里的字符编码过滤器
- Java web过滤器验证登录(避免未经登录进入主页)
- Java web过滤器验证登录(避免未经登录进入主页)
- Java web过滤器验证登录(避免未经登录进入主页)
- Java web过滤器验证登录(避免未经登录进入主页)
- Java web过滤器验证登录(避免未经登录进入主页)
- Java web过滤器验证登录(避免未经登录进入主页)
- Java web过滤器验证登录(避免未经登录进入主页)
- java web之编码过滤器
- #ifdef vs #if defined
- js日历
- iOS开发UI篇—Quartz2D使用(图形上下文栈)
- Linux学习之CentOS(二十八)--RAID原理基础及Linux下软件RAID配置
- [安卓]新闻客户端(五) 主页面之slidingMenu & fragment(3)
- Java Web---登录验证和字符编码过滤器
- nginx
- POJ 2225 && HDU 1240 Asteroids!(bfs)
- 充分发挥Node.js程序性能的一些方法介绍
- 3. IoC 和DI
- locationInView:和translationInView:的区别
- Linux学习之CentOS(二十九)--Linux网卡高级命令、IP别名及多网卡绑定
- VS和matlab混合编程的推荐书籍!
- 判断是否为素数或质数