欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JSP使用Servlet过滤器进行身份验证的方法

程序员文章站 2023-10-27 15:22:22
本文实例讲述了jsp使用servlet过滤器进行身份验证的方法。分享给大家供大家参考,具体如下: 1、servlet过滤器的作用描述 (1)在httpservletre...

本文实例讲述了jsp使用servlet过滤器进行身份验证的方法。分享给大家供大家参考,具体如下:

1、servlet过滤器的作用描述

(1)在httpservletrequest到达servlet 之前,拦截客户的httpservletrequest。
根据需要检查httpservletrequest,也可以修改httpservletrequest头和数据。
(2)在httpservletresponse 到达客户端之前,拦截httpservletresponse。
根据需要检查httpservletresponse,可以修改httpservletresponse头和数据。

2、应用servlet过滤器进行身份验证

假设网站根目录下的login1.htm、longin1.jsp用于用户登录,而chap08目录下的文件需要用户登录后才能访问。

(1)编写servlet过滤器

@webfilter("/filterstation")
public class filterstation extends httpservlet implements filter {
private filterconfig filterconfig;
public filterstation() {
super();
}
public void destroy() {
}
public void dofilter(servletrequest request, servletresponse response, filterchain chain) throws ioexception, servletexception {
httpsession session=((httpservletrequest)request).getsession();
response.setcharacterencoding("gb2312");
if(session.getattribute("me")==null){
printwriter out=response.getwriter();
out.print("<script>alert('请登录!');location.href='../login1.htm'</script>");
}
else{
// pass the request along the filter chain
chain.dofilter(request, response);
}
}
public void init(filterconfig fconfig) throws servletexception {
// todo auto-generated method stub
this.filterconfig=fconfig;
}
}

(2)配置web.xml

<filter>
<filter-name>filterstation</filter-name>
<filter-class>zhou.filterstation</filter-class>
</filter>
<filter-mapping>
<filter-name>filterstation</filter-name>
<url-pattern>/chap08/*</url-pattern>
</filter-mapping>

(3)login1.htm代码

<html>
<head>
<title>用户登录</title>
</head>
<body>
<form method="post" action="login1.jsp">
<p>用户名:<input type="text" name="user" size="18"></p>
<p>密码:<input type="text" name="pass" size="20"></p>
<p><input type="submit" value="提交" name="ok">
<input type="reset" value="重置" name="cancel"></p>
</form>
</body>
</html>

(4)login1.jsp代码

<%@ page contenttype="text/html;charset=gb2312" %>
<html>
<head><title>session 应用演示</title></head>
<% 
if (request.getparameter("user")!=null && request.getparameter("pass")!=null)
{
string strname=request.getparameter("user");
string strpass=request.getparameter("pass");
if (strname.equals("admin") && strpass.equals("admin"))
{
session.setattribute("login","ok");
session.setattribute("me",strname);
response.sendredirect("chap08/welcome.jsp");
}
else
{
out.print("<script>alert('用户名或密码错误');location.href='login1.htm'</script>");
}
}
%>
</html>

希望本文所述对大家jsp程序设计有所帮助。