SessionFilter的简单使用
2016-01-21 13:53
399 查看
Web.xml中配置:
<filter-name>sessionFilter</filter-name>
<filter-class>xyt.first.web.filter.SessionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>sessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
SessionFilter配置:
public class SessionFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
// TODO Auto-generated method stub
// 不过滤的uri
String[] notFilter = new String[] { "first.html", "index.html" };
// 请求的uri
String uri = request.getRequestURI();
System.out.println(uri);
boolean doFilter = true;
for (String s : notFilter) {
if (uri.indexOf(s) != -1) {
// 如果uri中包含不过滤的uri,则不进行过滤
doFilter = false;
break;
}
}
if (doFilter) {
// 执行过滤
// 从session中获取登录者实体
Object obj = request.getSession().getAttribute("loginUser");
if (null == obj) {
System.out.println("loginUser"+" :NULL");
// 如果session中不存在登录者实体,则弹出框提示重新登录
// 设置request和response的字符集,防止乱码
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");//用于response.getWriter()输出的字符流的乱码问题
response.setContentType("text/html;charset=UTF-8");//控制浏览器进行解码
PrintWriter out = response.getWriter();
String loginPage = "user/first.html";
StringBuilder builder = new StringBuilder();
builder.append("<script type=\"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中存在登录者实体,则继续
System.out.println("loginUser有值:"+obj.toString());
filterChain.doFilter(request, response);
}
} else {
// 如果不执行过滤,则继续
filterChain.doFilter(request, response);
}
}
}
<filter-name>sessionFilter</filter-name>
<filter-class>xyt.first.web.filter.SessionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>sessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
SessionFilter配置:
public class SessionFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
// TODO Auto-generated method stub
// 不过滤的uri
String[] notFilter = new String[] { "first.html", "index.html" };
// 请求的uri
String uri = request.getRequestURI();
System.out.println(uri);
boolean doFilter = true;
for (String s : notFilter) {
if (uri.indexOf(s) != -1) {
// 如果uri中包含不过滤的uri,则不进行过滤
doFilter = false;
break;
}
}
if (doFilter) {
// 执行过滤
// 从session中获取登录者实体
Object obj = request.getSession().getAttribute("loginUser");
if (null == obj) {
System.out.println("loginUser"+" :NULL");
// 如果session中不存在登录者实体,则弹出框提示重新登录
// 设置request和response的字符集,防止乱码
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");//用于response.getWriter()输出的字符流的乱码问题
response.setContentType("text/html;charset=UTF-8");//控制浏览器进行解码
PrintWriter out = response.getWriter();
String loginPage = "user/first.html";
StringBuilder builder = new StringBuilder();
builder.append("<script type=\"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中存在登录者实体,则继续
System.out.println("loginUser有值:"+obj.toString());
filterChain.doFilter(request, response);
}
} else {
// 如果不执行过滤,则继续
filterChain.doFilter(request, response);
}
}
}
相关文章推荐
- Android 自定义控件入门篇之自定义验证码
- 2015 年 Ruby 大盘点
- 工作中遇到的oracle分页查询问题及多表查询相关
- Unable to add window -- token android.os.BinderProxy@164db98f is not valid解决办法f
- chrdevs数组
- Eclipse js文件选中变量名,相同变量都变色显示的设置
- office2007每次打开都要配置文件,怎么取消配置
- swift数组与字典
- 责任链模式(chain)—员工请假
- 使用HttpClient进行远程接口测试
- 5个常用的Java分布式缓存框架
- RDD创建彻底解密
- Solr4.10使用教程(三):solr crud
- Shell Script 基础
- angularjs中的e2e测试实例
- 集合初探(七)
- Objective-C的Runtime机制的应用示例总结
- 弹出框提示的使用 - 不是很完善
- RAC数据库与asm数据库
- 转-SecureCRT设置