⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rulefilter.java

📁 实现图书的借阅和管理信息化
💻 JAVA
字号:
package com.moonman.libraryManager.filter;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.moonman.libraryManager.model.vo.Admin;
import com.moonman.libraryManager.model.vo.Reader;

public class RuleFilter extends HttpServlet implements Filter {
	private FilterConfig filterConfig;

	// Handle the passed-in FilterConfig
	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
	}

	// Process the request/response pair
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain filterChain) {
		try {
			HttpServletRequest req = (HttpServletRequest) request;
			HttpServletResponse res = (HttpServletResponse) response;
			HttpSession session = req.getSession();
			Reader reader = (Reader) session.getAttribute("reader");
			Admin admin = (Admin) session.getAttribute("admin");
			if (!this.isImageCssJs(req.getRequestURI())) {
				if (!this.judgeIsLogin(req.getRequestURI())) {
					if (reader != null) {
						// 对用户权限进行限制
						if (this.judgeIsReader(req.getRequestURI())) {
							filterChain.doFilter(request, response);
						} else {
							req.getRequestDispatcher("/errorShow.do").forward(
									req, res);
						}
					} else if (admin != null) {
						if (this.judgeIsAdmin(req.getRequestURI())) {
							filterChain.doFilter(request, response);
						} else {
							req.getRequestDispatcher("/errorShow.do").forward(
									req, res);
						}
					} else {
						req.getRequestDispatcher("/login.jsp")
								.forward(req, res);
					}
				} else {
					filterChain.doFilter(request, response);
				}
			} else {
				filterChain.doFilter(request, response);
			}
		} catch (ServletException sx) {
			filterConfig.getServletContext().log(sx.getMessage());
		} catch (IOException iox) {
			filterConfig.getServletContext().log(iox.getMessage());
		}
	}

	/**
	 * 判断是否是图片或者是css样式表,js脚本等
	 * 
	 * @param url
	 * @return
	 */
	private static List<String> start;
	static {
		start = new ArrayList<String>();
		start.add("/libraryManager/images/");
		start.add("/libraryManager/css/");
		start.add("/libraryManager/js/");
	}

	/**
	 * 判断是否是图片什么的
	 * 
	 * @param url
	 * @return
	 */
	private boolean isImageCssJs(String url) {
		for (String path : start) {
			if (url.startsWith(path)) {
				return true;
			}
		}
		return false;
	}

	private static List<String> login;

	static {
		login = new ArrayList<String>();
		login.add("/libraryManager/");
		login.add("/libraryManager/login.do");
	}

	/**
	 * 判断是否是登陆界面
	 * 
	 * @param url
	 * @return
	 */
	private boolean judgeIsLogin(String url) {
		for (String s : login) {
			if (url.equals(s)) {
				return true;
			}
		}
		return false;
	}

	/**
	 * 判断是否是读者
	 */
	private static List<String> urls;

	static {
		urls = new ArrayList<String>();
		urls.add("/libraryManager/");
		urls.add("systemIndex.do");
		urls.add("getBookByClassId.do");
		urls.add("bookDestineShow.do");
		urls.add("systemHelp.do");
		urls.add("pageman.do");
		urls.add("errorShow.do");
	}

	/**
	 * 判断是否是普通读者
	 * 
	 * @param url
	 * @return
	 */
	private boolean judgeIsReader(String url) {
		String[] s = url.split("/");
		for (String string : urls) {
			if (s[2].startsWith(string)) {
				return true;
			}
		}
		return false;
	}

	/**
	 * 管理员需要处理的路径
	 */
	private static List<String> adminUrl;
	static {
		adminUrl = new ArrayList<String>();
		adminUrl.add("bookDestineShow.do");
	}

	/**
	 * 判断是否是管理员
	 * 
	 * @param url
	 * @return
	 */
	private boolean judgeIsAdmin(String url) {
		String[] s = url.split("/");
		for (String string : adminUrl) {
			if (s[2].startsWith(string)) {
				return false;
			}
		}
		return true;
	}

	// Clean up resources
	public void destroy() {
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -