Java Servlet Filter实现Web路径和用户日志过滤器
2009-11-24 09:39
459 查看
以下是本人在项目中用Servlet Filter实现的Web路径和用户日志过滤器:
package com.sunfairs.filter; import java.io.IOException; import java.util.List; import java.util.Vector; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.RequestDispatcher; 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; import org.apache.log4j.Logger; import com.sunfairs.bean.Authority; import com.sunfairs.constant.ShopConstants; import com.sunfairs.dao.AuthorityDAO; public class ApplicationFilter implements Filter { private static final Logger logger = Logger.getLogger(ApplicationFilter.class); private String filterPaths; public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; HttpServletResponse httpResponse = (HttpServletResponse) response; AuthorityDAO authorityDao = new AuthorityDAO(); httpRequest.setCharacterEncoding("UTF-8"); String requestPath = httpRequest.getRequestURI(); String requestServer = requestPath.substring(0,requestPath.indexOf("/", 1)); String filterPath = httpRequest.getServletPath(); String queryString = httpRequest.getQueryString(); String action = ""; if(queryString!=null && !queryString.equals("")){ if(queryString.indexOf("&")!=-1){ action = "?"+queryString.substring(0, queryString.indexOf("&")); } else{ action = "?"+queryString; } } //logger.info(action); RequestDispatcher dispatcher = httpRequest.getRequestDispatcher("/system_login.jsp"); //logger.info(filterPath); //logger.info(requestPath); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+requestPath; HttpSession session = httpRequest.getSession(); String department = (String) session.getAttribute(ShopConstants.LOGIN_DEPARTMENT); String requestUser = (String) session.getAttribute(ShopConstants.LOGIN_USER); Long userId = (Long) session.getAttribute(ShopConstants.LOGIN_ID); logger.info(department+"/"+requestUser+"--"+basePath+action); String[]filterPathArray = this.filterPaths.split(","); boolean isStartsWith = false; if(userId!=null && requestUser != null){ if(filterPath.indexOf("j_logout")==-1){ for(int i=0;i<filterPathArray.length;i++){ if(filterPath.startsWith(filterPathArray[i])){ isStartsWith = true; break; } } if(isStartsWith){ List authorityList = authorityDao.findUsedByUserId(userId); Vector<String> paths = new Vector<String>(); for(int j=0;j<authorityList.size();j++){ Authority userAuthor = (Authority) authorityList.get(j); paths.add(userAuthor.getPath()); } if(!paths.contains(filterPath+action)){ httpResponse.sendRedirect(requestServer+"/requestDeny.jsp"); } else{ chain.doFilter(request, response); } } else{ chain.doFilter(request, response); } } else{ chain.doFilter(request, response); } } else{ if(!filterPath.equals("/system/userTable.do")){ session.setAttribute("lastPage", filterPath+queryString); dispatcher.forward(httpRequest, httpResponse); } else{ chain.doFilter(request, response); } } //chain.doFilter(httpRequest, httpResponse); } public void init(FilterConfig config) throws ServletException { String filterPaths = config.getInitParameter("filterPaths"); if(filterPaths!=null){ this.filterPaths = filterPaths; logger.info("初始化拦截路径成功!"); } else{ this.filterPaths = "/order/"; } } }
相关文章推荐
- javaweb--Servlet过滤器Filter简单实现
- javaWeb自定义可排序过滤器注解,解决Servlet3.0下@WebFilter注解无法排序问题
- 【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能
- JavaWeb -- Servlet Filter 过滤器
- javaWeb-Servlet之Filter(过滤器)
- Java Web 的servlet 之过滤器 filter
- Java Web入门之用Filter实现用户权限的管理
- javaWeb-Servlet之Filter(过滤器二)
- JavaWeb -- Servlet Filter 过滤器
- Java Web中的Servlet及Filter
- servlet+jsp+java实现Web 应用
- JAVA WEB 过滤器(Filter)中向容器 Spring 注入 bean
- 【JavaWeb】之过滤器Filter
- java中javax.servlet.Filter这个接口实现登陆验证之类得说明
- JAVA 取JAVA 取得当前目录的路径/Servlet/class/文件路径/web路径/url地址 得当前目录的路径/Servlet/class/文件路径/web路径/url地址
- JAVA_WEB项目(结合Servlet+jsp+ckEditor编辑器+jquery easyui技术)实现新闻发布管理系统第二篇:登陆和注销功能实现
- java 过滤器(Filter)与springMVC 拦截器(interceptor)的实现案例
- Java Web笔记 – Servlet中的Filter过滤器的介绍和使用 编写过滤器
- JavaWeb之Filter讲解和实现页面静态化(上)
- servlet+jsp+java实现Web 应用 概念,实现