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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值