`
houday123
  • 浏览: 217497 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java过滤器

    博客分类:
  • Java
阅读更多

 

ps:本人破解了润乾报表,全部功能可用,低价销售,需要要的请加qq:229501642联系

 

实现简单的页面过滤,比如只能通过登陆才能登陆系统:代码如下

//配置了两个过滤器,SetCharacterEncodingFilter 是字符集过滤器,SessionFilter 是页面过滤器

package com.project.glq;

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 SetCharacterEncodingFilter implements Filter{
 FilterConfig config=null;
 public void init(FilterConfig config) throws ServletException{
  
  this.config=config;
 }
 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException{
  String encoding=config.getInitParameter("gbk");
  //System.out.println("过滤器1请求处理开始");
  request.setCharacterEncoding(encoding);
  response.setCharacterEncoding(encoding);
  chain.doFilter(request,response);
  //System.out.println("过滤器1响应处理开始");
 }
 public void destroy(){
  
 }
 

}

 

package com.project.glq;

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.HttpServletResponseWrapper;
import javax.servlet.http.HttpSession;

import com.project.po.EmpPo;

public class SessionFilter implements Filter{
 FilterConfig config=null;
  public static boolean isContains(String container, String[] regx) {
         boolean result = false;

         for (int i = 0; i < regx.length; i++) {
             if (container.indexOf(regx[i]) != -1) {
                 return true;
             }
         }
         return result;
     }
 public void init(FilterConfig config) throws ServletException{
  
  this.config=config;
 }
 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException{
  //System.out.println("过滤器2请求处理开始");
  HttpServletRequest httpreq = (HttpServletRequest) request;
  HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper((HttpServletResponse) response);
  HttpSession session=httpreq.getSession();
  //System.out.println("请求路径:"+httpreq.getRequestURI());
  Object emppo=session.getAttribute("emppo");//获取用户对象
  String logonStrings = config.getInitParameter("logonStrings");//获取web.xml文件配置参数login.jsp
  String includeStrings = config.getInitParameter("includeStrings");//获取web.xml文件配置参数.jsp;.html
        String[] logonList = logonStrings.split(";");
        String[] includeStringlist = includeStrings.split(";");
        String redirectPath = httpreq.getContextPath()+"/login.jsp";
  
  if(emppo==null){//判断用户是否登陆
    if (this.isContains(httpreq.getRequestURI(), logonList)) {
     //System.out.println("这是login.jsp等请求执行的代码");
                 chain.doFilter(request, response);//执行下一个过滤器
                // System.out.println("过滤器2响应处理开始");
                return;
             }
    if (!this.isContains(httpreq.getRequestURI(), includeStringlist)) {
    // System.out.println("这是非.jsp;.html等请求执行的代码");
                 chain.doFilter(request, response);
                 //System.out.println("过滤器2响应处理开始");
                 return;
             }
   //System.out.println("这是.jsp;.html等请求执行的代码,非login.jsp");
            wrapper.getResponse().getWriter().write("<script language =javascript>window.location.href='"+redirectPath+"';</script>");
            wrapper.getResponse().getWriter().close();
            chain.doFilter(request, response);
           // System.out.println("过滤器2响应处理开始");
            return;
     }
  else{
   chain.doFilter(request, response);
  // System.out.println("过滤器2响应处理开始");
  }
  
  
 }
 public void destroy(){
  
 }
}

 

web.xml文件配置如下:

<filter>
  <filter-name>filter</filter-name>
  <filter-class>com.project.glq.SetCharacterEncodingFilter</filter-class>
  <init-param>
     <param-name>gbk</param-name>
     <param-value>gbk</param-value>
     </init-param>
 </filter>
 
 <filter>
  <filter-name>sessionfilter</filter-name>
  <filter-class>com.project.glq.SessionFilter</filter-class>
  <init-param>
       <param-name>logonStrings</param-name>
       <param-value>login.jsp</param-value>
     </init-param>
     <init-param>
        <param-name>includeStrings</param-name>
        <param-value>.jsp;.html</param-value>
    </init-param>
 </filter>
  
 <filter-mapping>
  <filter-name>filter</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>REQUEST</dispatcher>
  <dispatcher>FORWARD</dispatcher>
 </filter-mapping>
 <filter-mapping>
  <filter-name>sessionfilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

1
0
分享到:
评论

相关推荐

    JAVA过滤器标准代码

    ### JAVA过滤器标准代码解析与应用 在Java Web开发中,过滤器(Filter)是一种用于拦截请求和响应的重要机制,可以实现对用户请求的预处理和后处理,以及对响应的处理。本文将深入解析“JAVA过滤器标准代码”,探讨...

    JAVA过滤器 过滤器

    JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器JAVA过滤器 过滤器

    java过滤器的使用

    Java过滤器(Filter)是Java Web开发中的一个重要概念,它主要应用于Servlet容器中,如Tomcat、Jetty等。过滤器允许我们在请求被发送到目标资源(如Servlet、JSP页面)之前或之后进行预处理和后处理。在这个场景中,...

    accp java过滤器 PPT

    Java过滤器(Filter)是Java Web开发中的一个重要概念,它主要应用于Servlet容器中,如Tomcat、Jetty等。在ACCP课程中,这个“accp java过滤器 PPT”很可能是为了帮助学习者深入理解如何在Web应用程序中有效地使用...

    JAVA过滤器及原理

    Java过滤器(Filter)是Java Web开发中的一个重要概念,它主要应用于Servlet容器中,如Tomcat、Jetty等。过滤器允许我们在数据处理前后插入自定义逻辑,对请求和响应进行拦截、修改或增强。本教程将深入讲解Java过滤...

    java 过滤器

    java 过滤器

    Java过滤器,字符过滤,标签过滤

    首先,让我们了解一下Java过滤器的基础知识。在Java Servlet规范中,Filter接口定义了过滤器的行为。一个过滤器可以通过实现`doFilter()`方法来拦截请求和响应,并对其进行处理。通过在web.xml配置文件中定义过滤器...

    Filter-四个有用的Java过滤器

    在给定的文件中,提到了四个有用的Java过滤器实例,分别是: 1. **使浏览器不缓存页面的过滤器**: 这个过滤器的目的是防止用户浏览器缓存页面,确保每次请求都能获取服务器最新的内容。它通过设置HTTP响应头来...

    java过滤器防sql注入

    外网可能会被攻击,简单的处理可以避免! 外网可能会被攻击,简单的处理可以避免! 外网可能会被攻击,简单的处理可以避免! 外网可能会被攻击,简单的处理可以避免!...外网可能会被攻击,简单的处理可以避免!...

    java过滤器例子

    Java过滤器,全称为Servlet Filter,在Java Web开发中扮演着重要的角色。它是Java Servlet API的一部分,主要用于在HTTP请求被实际处理之前或者之后进行拦截、修改或增强。通过使用过滤器,开发者可以实现诸如数据...

    java过滤器-filter

    java过滤器-CharsetAllEncodingFilter.java 及 web.xml的配置

    java 过滤器(附代码)

    Java 过滤器详解 Java 过滤器是一种特殊的Java类,用于对HTTP请求和响应进行过滤和处理。下面我们将详细介绍五个有用的过滤器,每个过滤器都有其特定的作用和实现方式。 一、使浏览器不缓存页面的过滤器 这个过滤...

    java过滤器对所有参数去除前后空格

    对项目中的所有参数去除前后空格...可以基于此过滤器实现过滤跨站脚本攻击,参数的增加,修改!敏感词汇过滤。实现原理为重写HttpServletRequestWrapper,获取参数的方法。include和 Forwarded 内部转发不在过滤之内。

    Java过滤器及其特性

    Java过滤器(Filter)是Java Web开发中的一个重要概念,它主要应用于Servlet容器中,如Tomcat、Jetty等。过滤器允许开发者在请求被实际处理之前或者响应被发送到客户端之后进行拦截和处理,实现诸如数据校验、权限...

    java过滤器简单实例

    Java过滤器(Filter)是Java Web开发中的一个重要概念,它主要应用于Servlet容器中,如Tomcat、Jetty等。过滤器允许我们在请求被处理之前或之后进行预处理和后处理,以此来拦截、修改或者增强请求和响应。在这个简单...

    六个有用的java过滤器

    ### 六个有用的Java过滤器知识点详解 在Java Web开发中,过滤器(Filter)是一种非常重要的技术,它能够对用户的请求和响应进行预处理或后处理,从而实现各种功能需求,例如设置缓存策略、登录验证、字符编码转换等...

    四个有用的Java过滤器收藏

    ### 四个有用的Java过滤器收藏:深入解析与应用 #### 一、使浏览器不缓存页面的过滤器 在Web开发中,控制浏览器的缓存机制是非常重要的,特别是对于那些需要频繁更新或实时交互的网页。Java Servlet过滤器提供了一...

Global site tag (gtag.js) - Google Analytics