java过滤器
在基于 JSP 页面系统设计开发中,经常有一批页面需要对用户的身份进行验证,只有合法的用户才可以访问这些页面。显然可以在每个页面中添加身份验证,但这样做会给编程造成很大的麻烦,而且增加多余的代码。那么,如何解决JSP 页面用户身份验证呢?
二、JSP 页面中用户身份验证分析
在有多个用户使用的 JSP 系统中,为了保障系统的隐秘性安全性,就需要对登录系统的用户进行身份验证以保证用户身份的合法性。一个用户首次登录系统后会在session 对象中留下它的标识[1],就可以利用这个标识来完成各个JSP页面的用户身份验证。为了避免每个页面都进行身份验证而出现的麻烦,这里将通过Servlet 过滤器对JSP 页面统一进行身份验证。
三、用户身份验证的设计思路和技术要点
1、设计思路
Servlet 过滤器验证用户是围绕session 对象进行的。首先是实现用户登录的功能,在用户登录成功后产生一个session 标识;然后创建Servlet 过滤器,判断标识值是否正确,如果正确则通过验证,否则将给出提示信息并跳转到用户登录页面。
2、技术要点
使用 Servlet 过滤器实现JSP 页面中用户身份验证,首先必须实现Filter 接口,且重写doFilter() 方法,由doFilter() 方法去处理过滤业务;其次,在web.xml 文件中配置Servlet 过滤器,指定过滤器的名称、过滤器包所在类的名称及过滤器的映射范围等[2]。
四、JSP 页面中用户身份验证的实现
1、用户身份合法性确认
为了能够使用 Servlet 过滤器实现用户对JSP 页面访问的合法性验证,首先需要根据用户登录号和密码等与数据库中的信息相比较,若能匹配成功,则是用户登录成功,就用session 对象存储该用户的标识;然后再由Servlet 过滤器实现对用户访问的各个页面的过滤。存储用户登录成功的session 标识的核心代码为:session.setAttribute("user",
用户登录号 )。
2、Servlet 过滤器的实现
用 Servlet 过滤器实现用户身份验证的关键代码如下:
package hzu.util.filters;
public class UserFilter extends HttpServlet implements Filter {
private FilterConfig filterConfig;
public void init(FilterConfig filterConfig)
throws ServletException{
this.filterConfig=filterConfig;
}[NextPage]
public void doFilter(ServletRequest request,ServletResponse response, FilterChain chain) throws ServletException,IOException{
HttpSession session=((HttpServletRequest)
request).getSession();
if(session.getAttribute(“user”)= =null){
PrintWriter out=response.getWriter();
out.print(“");
out.flush();
out.close();
}
else{
chain.doFilter(request, response);
}
}
}
3、在web.xml 中配置Servlet 过滤器
在编写完Servlet过滤器后,要在web.xml文件中配置过滤器。也就是通过
filter-class>