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

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • servlet过滤器(Filter)详解(九)

    本文实例为大家分享了servlet过滤器的具体代码,供大家参考,具体内容如下 1.servlet过滤器产生背景 项目中我们会遇到这样一类的需求,对访问服务器的用户ip实施过滤,只有在允许名单中的ip才能访问服务,为了实现需求,每当有客户端请求时,我们都会写校验ip的代码,客户端能够访问到的servlet我们都需要这样做,很明显这样做有一个缺点,就是代码冗余,维护不方便,如果验证规则改变,修改起来也特别麻烦. 为了解决以上问题,Filter 技术应运而生. 2.servlet过滤器是什么? ser

  • Servlet 过滤器详细介绍

    1. 建立一个实现Filter接口的类所有过滤器都必须实现javax.servlet.Filter.这个接口包含三个方法,分别为doFilter.init和destroy. 复制代码 代码如下: public void doFilter(ServletRequset request,                ServletResponse response,               FilterChain chain)    thows ServletException, IOExce

  • 详解Servlet之过滤器(Filter)

    过滤器 1.为什么使用它? 有很多全站性的东西需要处理,例如乱码问题,通过过滤器统一进行过滤更简单 2.有什么用? 实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截.简单说,就是可以实现web容器对某资源的访问前截获进行相关的处理,还可以在某资源向web容器返回响应前进行截获进行处理. 3.怎么用? 步骤1:先写一个类实现javax.servlet.Filter接口 步骤2:重写抽象方法 步骤3:在doFilter()方法中写处理代码,最后用FilterChain调用FilterCha

  • java servlet过滤器使用示例

    Servlet过滤器简介      Servlet过滤器实际上就是一个标准的java类,这个类通过实现Filter接口获得过滤器的功能.它在jsp容器启动的时候通过web.xml配置文件被系统加载.Servlet过滤器在接收到用户请求的时候被调用,当服务器接收到用户的请求的时候,依次调用配置好的过滤器,完成后将执行请求所要求的servlet,而servlet执行后的响应,则先通过配置好的过滤器后再发送给用户. 过滤器的用途:1.用户认证和授权管理.2.统计web应用的访问量和访问命中率,生成访问

  • 深入解析Java的Servlet过滤器的原理及其应用

    1.Servlet过滤器 1.1 什么是过滤器 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上.过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进入这些资源的请求信息.在这之后,过滤器可以作如下的选择: ①以常规的方式调用资源(即,调用servlet或JSP页面). ②利用修改过的请求信息调用资源. ③调用资源,但在发送响应到客户机前对其进行修改. ④阻止该资源调用,代之以转到其他的资源,返回一个特定的状态代码或生成替换输出.   1.2 Servl

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

    本文实例讲述了JSP使用Servlet过滤器进行身份验证的方法.分享给大家供大家参考,具体如下: 1.Servlet过滤器的作用描述 (1)在HttpServletRequest到达Servlet 之前,拦截客户的HttpServletRequest. 根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据. (2)在HttpServletResponse 到达客户端之前,拦截HttpServletResponse. 根据需要检查HttpServ

  • AngularJS身份验证的方法

    权限的设计中比较常见的就是RBAC基于角色的访问控制,基本思想是,对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合.每一种角色对应一组相应的权限. 一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限.这样做的好处是,不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要少得多,这样将简化用户的权限管理,减少系统的开销. 在Angular构建的单页面应用中,要实现这样的架构我们需要额外多做一些事

  • PHP中配置IIS7实现基本身份验证的方法

    在PHP运行环境中配置IIS7实现基本身份验证的方法,其实IIS7身份验证的方法有好几种,比如Windows身份验证.摘要式身份验证等,相对来说IIS7基本身份验证是最简单的一种,下面以图文方式介绍下IIS7基本身份验证的实现方法及注意事项,希望对PHP入门学习的朋友有所帮助. 准备工作 1.由于默认IIS7并没有安装配置身份验证功能,所以如果想要实现IIS7基本身份验证,首先必须安装IIS7身份验证功能,你需要打开 控制面板>程序和功能>打开或关闭Windows功能,找到IIS,选择基本身份

  • Laravel框架用户登陆身份验证实现方法详解

    本文实例讲述了Laravel框架用户登陆身份验证实现方法.分享给大家供大家参考,具体如下: laravel中检测用户是否登录,有以下的代码: if ( !Auth::guest() ) { return Redirect::to('/dashboard'); } 那Auth::guest是如何调用的呢? laravel用了Facade模式,相关门面类在laravel/framework/src/Illuminate/Support/Facades文件夹定义的,看下Auth类的定义: class

  • 基于Token的身份验证的方法

    最近了解下基于 Token 的身份验证,跟大伙分享下.很多大型网站也都在用,比如 Facebook,Twitter,Google+,Github 等等,比起传统的身份验证方法,Token 扩展性更强,也更安全点,非常适合用在 Web 应用或者移动应用上.Token 的中文有人翻译成 "令牌",我觉得挺好,意思就是,你拿着这个令牌,才能过一些关卡. 传统身份验证的方法 HTTP 是一种没有状态的协议,也就是它并不知道是谁是访问应用.这里我们把用户看成是客户端,客户端使用用户名还有密码通过

  • 编写php应用程序实现摘要式身份验证的方法详解

    通基本身份认证一样,也可以使用PHP网页处理HTTP请求报头字段来匹配摘要式身份验证信息.例如下边的代码使用header()函数要求客户端使用Digest验证,它在HTTP消息报头中增加了一个WWW-Authenticate字段:header('WWW-Authenticate:Digest Realm="MyRealm",nonce="47alf7cf25ce7",algorithm=MD5,qop="auth"');-------------

  • Nodejs中session的简单使用及通过session实现身份验证的方法

    session 不用多介绍,使一个http可以对应一个终端用户. session的本质使用cookie来实现. 原理大概是:http 带来服务端提前设置 cookie,服务端拿到标示用户身份的cookie, 再去固定地点(数据库,文件)检索出对应的用户身份.把身份赋值给本次请求的request,在程序处理中就知晓了用户的身份了.(在PHP,ASP或者其他服务端语言中都自动帮你实现了) 实现cookie 需要为每一个用户设置一个可以标示用户身份的cookie.可以使用如下规则 注册邮箱MD5值+密

  • SpringBoot 使用jwt进行身份验证的方法示例

    这里只供参考,比较使用jwt方式进行身份验证感觉不好,最不行的就是不能退出 登陆时设定多长过期时间,只能等这个时间过了以后才算退出,服务端只能验证请求过来的token是否通过验证 Code: /** * Created by qhong on 2018/6/7 15:34 * 标注该注解的,就不需要登录 **/ @Target({ElementType.METHOD,ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documente

  • 使用React Router v6 添加身份验证的方法

    目录 开始 基础路由 创建受保护的路由 使用嵌套路由和< Outlet /> 结尾 React Router v6是React应用程序的一个流行且功能强大的路由库.它提供了一种声明式的.基于组件的路由方法,并能处理URL参数.重定向和加载数据等常见任务. 这个最新版本的React Router引入了很多新概念,比如<Outlet />和layout布局路由,但相关文档仍然很少. 本文将演示如何使用React Router v6创建受保护的路由以及如何添加身份验证. 开始 打开终端,

  • JAVA中的Token 基于Token的身份验证实例

    最近在做项目开始,涉及到服务器与安卓之间的接口开发,在此开发过程中发现了安卓与一般浏览器不同,安卓在每次发送请求的时候并不会带上上一次请求的SessionId,导致服务器每次接收安卓发送的请求访问时都新建一个Session进行处理,无法通过传统的绑定Session来进行保持登录状态和通讯状态. 基于传统方法无法判断安卓的每次请求访问状态,故查询资料了解到Token,特殊的身份证验证.以下是网上搜寻资料所得,作为学习总结资料. 令牌是一种能够控制站点占有媒体的特殊帧,以区别数据帧及其他控制帧.to

随机推荐