在做一些后台信息管理系统时,我们经常需要一个拦截器禁止未登录用户进入信息管理页面,下面是一个简单的实现案例
1.首先我们需要一个过滤器
package com.travel.filters;
public class CheckAdminIsLoginFilter implements Filter{
private String errorPage="index.html";
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
HttpSession session = request.getSession();
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//如果为空说明没有登录,则要求先登录
if(session.getAttribute("session中的登录用户")==null){
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();
PrintWriter out = response.getWriter();
out.println("<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />"+
"<script type='text/javascript'>alert('请先登录...');location.href='"+basePath+errorPage+"'</script>");
out.flush();
out.close();
}else{
arg2.doFilter(arg0, arg1);
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
String page = arg0.getInitParameter("errorPage");
if(page!=null){
errorPage=page;
}
}
}
2.在web.xml中配置
<!-- 管理员登录拦截器 -->
<filter>
<filter-name>CheckAdminIsLoginFilter</filter-name>
<filter-class>com.travel.filters.CheckAdminIsLoginFilter</filter-class>
<init-param>
<param-name>errorPage</param-name>
<param-value>/back/login.html</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CheckAdminIsLoginFilter</filter-name>
<url-pattern>/back/manager/*</url-pattern>
</filter-mapping>
以上就是一个简单的拦截器
本文介绍了如何在Java Web应用中创建一个过滤器来拦截未登录用户,防止他们访问信息管理页面。主要步骤包括定义过滤器类和在web.xml中进行配置。

2437

被折叠的 条评论
为什么被折叠?



