`

[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>





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

相关推荐

    jsp 过滤器中文乱码的处理

    在本例中,我们可以创建一个名为`ModifyCodeFilter`的过滤器,该过滤器实现`javax.servlet.Filter`接口并覆盖其三个方法:`init()`, `destroy()` 和 `doFilter()`。 `ModifyCodeFilter`的核心代码如下: ```java ...

    一个简单的JAVA字符集过滤器实现

    本文将详细介绍如何在JAVA中实现一个简单的字符集过滤器,包括过滤器的功能、实现原理、配置方法等。 一、什么是字符集过滤器? 字符集过滤器是一个用于过滤HTTP请求和响应中的字符集的 Filter。它可以根据需要对...

    java后台获取小程序用户信息和生成自定义token,并使用filter过滤header的token源码

    在Java后台开发中,与小程序集成是一个常见的需求,涉及到用户身份验证、权限管理等多个关键环节。本主题将详细讲解如何实现“java后台获取小程序用户信息”、“生成自定义token”以及“使用filter过滤header的token...

    Java project code6

    - `web.xml`:这是Web应用的部署描述符,用于配置Servlet、过滤器、监听器以及整个应用的行为。它定义了URL映射、错误处理、会话管理等关键设置。 - `lib`目录:存储项目依赖的外部JAR库,这些库对于Web应用的运行...

    过滤Java多行注释

    3. **第三方库**: 有些工具和库,如Java的`javax.tools.JavaCompiler` API或者Antlr等解析库,提供了更高级的功能,可以方便地处理注释过滤,同时还能处理语法分析等其他任务。 总之,过滤Java多行注释可以通过多种...

    Java_Advanced_Programming_File_Directory_code.rar_java programmi

    5. **文件过滤器**: `FileFilter`和`FilenameFilter`接口允许自定义文件选择规则,如选择特定扩展名的文件或指定日期内的文件。 6. **文件观察服务**: Java 7引入的`java.nio.file.FileSystemWatcher`服务可以...

    Java EE常用框架.xmind

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

    java web 实现QQ第三方登录Demo

    如果Demo使用了Spring Security或Apache Shiro这样的安全框架,那么你可能会看到它们如何与QQ登录集成,设置过滤器链来处理授权过程。 8. **Session管理**: 登录成功后,通常会将用户信息存储在服务器的Session...

    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用ffmpeg实现MP4转ogg源代码技术方案资料

    对于更高级的用例,如控制转换质量、调整比特率、添加水印等,你可能需要深入学习FFmpeg的命令行选项和过滤器。例如,你可以使用`-c:v libvorbis`指定使用Vorbis编码器进行音频编码,`-b:a`设置音频比特率,`-ar`...

    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资源包01

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

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

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

Global site tag (gtag.js) - Google Analytics