Spring MVC过滤器-登录过滤的代码实现
一个非常简单的登录权限拦截器,具体代码如下:
以下代码是继承OncePerRequestFilter实现登录过滤的代码:
/**
*
*@authorgeloin
*@date2012-4-10下午2:37:38
*/
packagecom.test.spring.filter;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.FilterChain;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.springframework.web.filter.OncePerRequestFilter;
/**
*登录过滤
*
*@authorgeloin
*@date2012-4-10下午2:37:38
*/
publicclassSessionFilterextendsOncePerRequestFilter{
/*
*(non-Javadoc)
*
*@see
*org.springframework.web.filter.OncePerRequestFilter#doFilterInternal(
*javax.servlet.http.HttpServletRequest,
*javax.servlet.http.HttpServletResponse,javax.servlet.FilterChain)
*/
@Override
protectedvoiddoFilterInternal(HttpServletRequestrequest,
HttpServletResponseresponse,FilterChainfilterChain)
throwsServletException,IOException{
//不过滤的uri
String[]notFilter=newString[]{"login.html","index.html"};
//请求的uri
Stringuri=request.getRequestURI();
//uri中包含background时才进行过滤
if(uri.indexOf("background")!=-1){
//是否过滤
booleandoFilter=true;
for(Strings:notFilter){
if(uri.indexOf(s)!=-1){
//如果uri中包含不过滤的uri,则不进行过滤
doFilter=false;
break;
}
}
if(doFilter){
//执行过滤
//从session中获取登录者实体
Objectobj=request.getSession().getAttribute("loginedUser");
if(null==obj){
//如果session中不存在登录者实体,则弹出框提示重新登录
//设置request和response的字符集,防止乱码
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriterout=response.getWriter();
StringloginPage="....";
StringBuilderbuilder=newStringBuilder();
builder.append("<scripttype=\"text/javascript\">");
builder.append("alert('网页过期,请重新登录!');");
builder.append("window.top.location.href='");
builder.append(loginPage);
builder.append("';");
builder.append("</script>");
out.print(builder.toString());
}else{
//如果session中存在登录者实体,则继续
filterChain.doFilter(request,response);
}
}else{
//如果不执行过滤,则继续
filterChain.doFilter(request,response);
}
}else{
//如果uri中不包含background,则继续
filterChain.doFilter(request,response);
}
}
}
写完过滤器后,需要在web.xml中进行配置:
<filter> <filter-name>sessionFilter</filter-name> <filter-class>com.test.spring.filter.SessionFilter</filter-class> </filter> <filter-mapping> <filter-name>sessionFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。