博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSP之应用Servlet过滤器进行身份验证
阅读量:5208 次
发布时间:2019-06-14

本文共 2557 字,大约阅读时间需要 8 分钟。

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>

注意:从Servlet3.0开始,配置Servlet除了通过在web.xml文件中进行配置,还可以通过使用@WebServlet注解进行配置。同样的,配置Filter也可以通过@WebFilter注解方式进行。

@WebFilter(filterName="/FilterStation",urlPatterns={"/welcome.jsp","/a.jsp"})

public class FilterStation implements Filter {

  ----

}

 

转载于:https://www.cnblogs.com/zhouhb/p/4889747.html

你可能感兴趣的文章
在.net core上使用Entity FramWork(Db first)
查看>>
obiee11g中关闭缓存
查看>>
Eclipse中如何开启断言(Assert),方法有二
查看>>
System.Net.WebException: 无法显示错误消息,原因是无法找到包含此错误消息的可选资源程序集...
查看>>
Eclipse注释模板
查看>>
WordCount运行详解
查看>>
压缩图片 待验证
查看>>
冲刺进度条7
查看>>
UIImage 和 iOS 图片压缩UIImage / UIImageVIew
查看>>
MongoDB的数据库、集合的基本操作
查看>>
JS 多种变量定义
查看>>
redis可执行文件说明
查看>>
ajax向后台传递数组
查看>>
剑指offer系列14:包含min函数的栈
查看>>
疯狂JAVA16课之对象与内存控制
查看>>
[转载]树、森林和二叉树的转换
查看>>
WPF移动Window窗体(鼠标点击左键移动窗体自定义行为)
查看>>
Java核心技术梳理-类加载机制与反射
查看>>
1593: [Usaco2008 Feb]Hotel 旅馆 (线段树)
查看>>
软件测试-----Graph Coverage作业
查看>>