`

[code] java过滤器 三个

阅读更多
1.登陆过滤器
同理是网站开关过滤器
数据库一字段控制网站开关,后台可更改,无开就跳到指定的页面.
2.在每个页面的request中加入Attribute
3.中文过滤器

package com.zhao.util;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

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;

/**   
* 用于检测用户是否登陆的过滤器,如果未登录,则重定向到指的登录页面    


* 配置参数    


* checkSessionKey 需检查的在 Session 中保存的关键字   

* redirectURL 如果用户未登录,则重定向到指定的页面,URL不包括 ContextPath   

* notCheckURLList 不做检查的URL列表,以分号分开,并且 URL 中不包括 ContextPath   

*/ 

public class CheckLoginFilter implements Filter {

	 protected FilterConfig filterConfig = null;    
     private String redirectURL = null;    
     private List notCheckURLList = new ArrayList();    
     private String checkSessionKey = null; 
     
	public void destroy() {
		 notCheckURLList.clear();   
	}

	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
			FilterChain filterChain) throws IOException, ServletException {

		   HttpServletRequest request = (HttpServletRequest) servletRequest;    
		   HttpServletResponse response = (HttpServletResponse) servletResponse;    
		   
		    HttpSession session = request.getSession();    
		   if(checkSessionKey == null)    
		   {    
		    filterChain.doFilter(request, response);    
		    return;    
		   }    
		   if((!checkRequestURIIntNotFilterList(request)) && session.getAttribute(checkSessionKey) == null)    
		   {    
		    response.sendRedirect(request.getContextPath() + redirectURL);    
		    return;    
		   }    
		   filterChain.doFilter(servletRequest, servletResponse);    


	}

	public void init(FilterConfig filterConfig) throws ServletException {
		
		   this.filterConfig = filterConfig;    
		   redirectURL = filterConfig.getInitParameter("redirectURL");    
		   checkSessionKey = filterConfig.getInitParameter("checkSessionKey");    
		   
		   String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");    
		   
		   if(notCheckURLListStr != null)    
		   {    
		    StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");    
		    notCheckURLList.clear();    
		    while(st.hasMoreTokens())    
		    {    
		     notCheckURLList.add(st.nextToken());    
		    }    
		   }    


	}
	
	private boolean checkRequestURIIntNotFilterList(HttpServletRequest request)    
	{    
	   String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());    
	   return notCheckURLList.contains(uri);    
	}   

}



package com.zhao.util;

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 com.mobile.dao.jdbc.WebSetDaoJdbc;
import com.mobile.object.WebSet;

public class AddWebSetFilter implements Filter {

	private WebSetDaoJdbc wsDao;
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		
		HttpServletRequest httpreq = (HttpServletRequest) request;
		WebSet ws = wsDao.getSet();
		httpreq.setAttribute("webset", ws);
		
		chain.doFilter(request, response);

		
	}

	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		wsDao = new WebSetDaoJdbc();
	}

}



package com.zhao.util;

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;

/**   
* 用于设置 HTTP 请求字符编码的过滤器,通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题   
*/ 

public class CharacterEncodingFilter implements Filter {

	protected FilterConfig filterConfig = null;    
	protected String encoding = "";    
	   
	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException    
	{    
	         if(encoding != null)    
	          servletRequest.setCharacterEncoding(encoding);    
	         filterChain.doFilter(servletRequest, servletResponse);    
	}    
	   
	public void destroy()    
	{    
	   filterConfig = null;    
	   encoding = null;    
	}    
	   
	     public void init(FilterConfig filterConfig) throws ServletException    
	{    
	          this.filterConfig = filterConfig;    
	         this.encoding = filterConfig.getInitParameter("encoding");    
	   
	}    


}


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-name>myFilter</filter-name> 
<filter-class>com.zhao.util.CharacterEncodingFilter</filter-class> 
<init-param> 
  <param-name>encoding</param-name> 
  <param-value>utf-8</param-value> 
</init-param> 
</filter> 

<filter>                  
<filter-name>addwebsetFilter</filter-name> 
<filter-class>com.zhao.util.AddWebSetFilter</filter-class> 
</filter>

<filter>                  
<filter-name>checkLoginFilter</filter-name> 
<filter-class>com.zhao.util.CheckLoginFilter</filter-class>
<init-param> 
  <param-name>checkSessionKey</param-name> 
  <param-value>account</param-value> 
</init-param> 
<init-param> 
  <param-name>redirectURL</param-name> 
  <param-value>/login.jsp</param-value> 
</init-param> 
<init-param> 
  <param-name>notCheckURLList</param-name> 
  <param-value>/login.jsp</param-value> 
</init-param> 
</filter> 

<filter-mapping> 
   <filter-name>addwebsetFilter</filter-name> 
   <url-pattern>/*</url-pattern> 
</filter-mapping>

<filter-mapping> 
   <filter-name>checkLoginFilter</filter-name> 
   <url-pattern>/manager/*</url-pattern> 
</filter-mapping>

<filter-mapping> 
   <filter-name>myFilter</filter-name> 
   <url-pattern>/*</url-pattern> 
</filter-mapping>


  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>GetFeesbyId</servlet-name>
    <servlet-class>com.mobile.web.servlet.GetFeesbyId</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>GetFeesbyId</servlet-name>
    <url-pattern>/servlet/GetFeesbyId</url-pattern>
  </servlet-mapping> 

	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>





过滤器的运行顺序是同设置时相同的。
分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目

     QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

    Java EE常用框架.xmind

    使用过滤器实现登录和退出功能 步骤 当用户没有认证时,请求loginurl进行认证【上边我们已经配置了】,用户身份和用户密码提交数据到loginurl FormAuthenticationFilter拦截住取出request中的username...

    JAVA上百实例源码以及开源项目源代码

     QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

    java开源包11

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包6

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包9

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包101

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包4

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包5

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包8

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包10

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包3

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包1

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包2

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    java开源包7

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    Java资源包01

    jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新...

    Java开源的下一代社区平台Symphony.zip

    CodeMirror:前端 Markdown 编辑器内核 Highlight.js:前端代码高亮库 emojify.js:前端 Emoji 处理库 APlayer:前端 HTML5 音乐播放器 ECharts:前端 JavaScript 交互式图表库 MathJax:前端数学公式渲染引擎...

    java基础题 很全面

    64. List、Map、Set三个接口,存取元素时,各有什么特点? 14 65. UML方面 14 66. 说出一些常用的类,包,接口,请各举5个 14 67. 开发中都用到了那些设计模式?用在什么场合? 15 68. Anonymous Inner Class (匿名内部类) ...

    Javashop开发规范V2.2

    提示器用于显示校验的结果,如果不指定默认会在校验的控件后面创建一个span做为提示器。 可以通过两种方式指定提示器: 一、在控件中声明tiper属性: &lt;input type="text" name="username" tiper="#name_tiper" ...

Global site tag (gtag.js) - Google Analytics