过滤器(代码总结)

public class EncodeFilter implements Filter {
private String encode = "utf-8";
public void destroy() {

}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding(this.encode);
arg2.doFilter(arg0, arg1);
}
public void init(FilterConfig arg0) throws ServletException {
String encoding = arg0.getInitParameter("encodevalue");
if(encoding != null && encoding.length() > 0){
this.encode = encoding;
}
}
}
-----------------------------------------------------------------------

public class LoginFilter implements Filter {

public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)arg0;
HttpSession session = request.getSession();
Users user = (Users)session.getAttribute(https://www.360docs.net/doc/5e3887508.html,ER_SESSION_KEY);
String uri = request.getRequestURI();
//资源区分
if(uri.endsWith(".jsp") || uri.endsWith(".do")){
//如果用户请求的是login.jsp或者Userlogin.do来完成登录,那么对于这两资源需要放行
if(uri.indexOf("login.jsp") != -1 || uri.indexOf("UserLoginAction.do") != -1){
arg2.doFilter(arg0, arg1);
}else{
//如果用户没有登录那么需要用户登录
if(user == null || user.getUsername().length() <= 0){
request.setAttribute(Constants.REQUEST_MSG_KEY,"不登录不好使!");
request.getRequestDispatcher("login.jsp").forward(arg0, arg1);
}else{
arg2.doFilter(arg0, arg1);
}
}
}else{
arg2.doFilter(arg0, arg1);
}
}
}

-----------------------------------------------------------------------

public class SafeFilter implements Filter {

public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)arg0;
HttpSession session = request.getSession();
String uri = request.getRequestURI();
Users user = (Users)session.getAttribute(https://www.360docs.net/doc/5e3887508.html,ER_SESSION_KEY);
if(uri.endsWith(".jsp") || uri.endsWith(".do")){
if(uri.indexOf("login.jsp") != -1 || uri.indexOf("UserLoginAction.do") != -1){
arg2.doFilter(arg0, arg1);
}else{
Set menu = user.getRoles().getMenuses();
boolean flag = false;
for(Menus m:menu){
Set fun = m.getFunses();
for(Funs f:fun){
if(uri.indexOf(f.getFunurl()) != -1){
flag = true;
break;
}
}
if(flag)
break;
}
if(flag){
arg2.doFilter(arg0, arg1);
}else{
((HttpServletResponse)arg1).sendRedirect("norole.jsp");
}
}
}else{
arg2.doFilter(arg0, arg1);
}
}
}

相关文档
最新文档