最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Spring MVC过滤器-登录过滤的实现代码
时间:2017-01-07 编辑:简简单单 来源:一聚教程网
一个非常简单的登录权限拦截器,具体代码如下:
以下代码是继承OncePerRequestFilter实现登录过滤的代码:
代码如下 | 复制代码 |
/**
*
* @author geloin
* @date 2012-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;
/**
* 登录过滤
*
* @author geloin
* @date 2012-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(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain)
throwsServletException, IOException {
// 不过滤的uri
String[] notFilter =newString[] {"login.html","index.html"};
// 请求的uri
String uri = request.getRequestURI();
// uri中包含background时才进行过滤
if(uri.indexOf("background") != -1) {
// 是否过滤
booleandoFilter =true;
for(String s : notFilter) {
if(uri.indexOf(s) != -1) {
// 如果uri中包含不过滤的uri,则不进行过滤
doFilter =false;
break;
}
}
if(doFilter) {
// 执行过滤
// 从session中获取登录者实体
Object obj = request.getSession().getAttribute("loginedUser");
if(null== obj) {
// 如果session中不存在登录者实体,则弹出框提示重新登录
// 设置request和response的字符集,防止乱码
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String loginPage ="....";
StringBuilder builder =newStringBuilder();
builder.append("");
out.print(builder.toString());
}else{
// 如果session中存在登录者实体,则继续
filterChain.doFilter(request, response);
}
}else{
// 如果不执行过滤,则继续
filterChain.doFilter(request, response);
}
}else{
// 如果uri中不包含background,则继续
filterChain.doFilter(request, response);
}
}
}
|
写完过滤器后,需要在web.xml中进行配置:
代码如下 | 复制代码 |
|
-
上一个: 15个顶级Java多线程面试题(附答案)
-
下一个: java语句块的使用详解及实例
相关文章
- SpringBoot测试配置属性与web启动环境解析 10-24
- vue中将el-switch值true、false改为number类型的1和0解析 10-24
- Vue中的路由配置项meta使用解读 10-24
- SpringBoot自定义bean绑定解析 10-24
- SpringBoot常用计量与bean属性校验和进制数据转换规则解析 10-24
- 工厂方法在Spring框架中的运用介绍 10-24