- package cn.bdqn.filter;
- /**
- * 用于记录操作日志的过滤器类(方法二)
- */
- import java.io.IOException;
- import java.util.Date;
- 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 org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- /**
- */
- import cn.bdqn.entity.PSFunction;
- import cn.bdqn.entity.PSRole;
- import cn.bdqn.entity.PSUser;
- import cn.bdqn.entity.PsLogs;
- import cn.bdqn.service.IPsLogsService;
- public class FunctionFilter implements Filter {
- public void destroy() {
- }
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
- ServletException {
- System.out.println("用于记录操作日志的过滤器类");
- HttpServletRequest req = (HttpServletRequest) request;
- String url = req.getRequestURI();
- System.out.println(url);
- //过滤掉所有静态资源,不做处理
- if (url.endsWith(".js")) {
- chain.doFilter(request, response);
- }
- if (url.endsWith(".CSS")) {
- chain.doFilter(request, response);
- }
- if (url.endsWith(".html")) {
- chain.doFilter(request, response);
- }
- if (url.endsWith(".txt")) {
- chain.doFilter(request, response);
- }
- if (url.endsWith(".gif")) {
- chain.doFilter(request, response);
- }
- if (url.endsWith(".jpg") || url.endsWith(".jpeg")) {
- chain.doFilter(request, response);
- }
- if (url.endsWith(".png")) {
- chain.doFilter(request, response);
- }
- int pos = url.indexOf("?");
- if (pos > -1) {
- url = url.substring(0, pos);
- }
- int actionindex = url.indexOf(".action");
- if (actionindex > -1) {
- url = url.substring(0, actionindex);
- }
- int of = url.indexOf("/", 2);
- url = url.substring(of + 1);
- System.out.println("url地址:" + url);
- //判断是否登录
- PSUser user = (PSUser) req.getSession().getAttribute("loginuserinfo");
- if (url.endsWith("login") || url.equals("")) {
- chain.doFilter(request, response);
- } else if (user != null) {
- for (PSRole role: user.getRole()) {
- for (PSFunction
- function: role.getPsFunctions()) {
- if (function.getFuncUrl().equals(url)) {
- PsLogs log = new PsLogs();
- log.setOperateDatetime(new Date());
- log.setOperateInfo(function.getFunctionName());
- log.setUserCode(user.getUserCode());
- //获取spring的上下文容器
- ApplicationContext contex = new ClassPathXmlApplicationContext("applicationContext.xml");
- //获取spring容器中定义的IRoleService对象实例用于查询角色信息
- IPsLogsService logsService = contex.getBean(IPsLogsService.class, "pslsi");
- logsService.save(log);
- chain.doFilter(request, response);
- }
- }
- }
- } else {
- HttpServletResponse resp = (HttpServletResponse) response;
- resp.setCharacterEncoding("utf-8");
- resp.getWriter().write("alert('您没有该权限')");
- }
- }
- public void init(FilterConfig arg0) throws ServletException {
- }
- }
来源: http://www.bubuko.com/infodetail-1868820.html