通过过滤器对一批页面或Servlet统一进行身份验证
运行本例,直接进入loginsuccess.jsp页面,会弹出提示信息

过滤器实现类FilterLogin.java

public class FilterLogin extends HttpServlet implements Filter {private FilterConfig filterConfig;@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)throws IOException, ServletException {HttpSession session=((HttpServletRequest)request).getSession();response.setCharacterEncoding("utf-8");if(session.getAttribute("user")==null){            //判断session是否由user这个对象PrintWriter out=response.getWriter();        //创建一个输出流//如果为空则通过javascript脚本输出提示并跳转到index页面out.println("<script language=javascript>alert('您还没有登录');window.location.href='../index.jsp';</script>");}else{filterChain.doFilter(request, response);}}@Overridepublic void init(FilterConfig arg0) throws ServletException {this.filterConfig=filterConfig;}}

JavaBean类User

public class User {
private String username;
private String password;
public String getUsername() {return username;
}
public void setUsername(String username) {this.username = username;
}
public String getPassword() {return password;
}
public void setPassword(String password) {this.password = password;
}
}

用户登录页面index.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function checkEmpty(){if(document.form.name.value==""){alert("用户名不能为空");document.form.name.focus();return false;}if(document.form.password.value==""){alert("密码不能为空");document.form.password.focus();return false;}
}
</script>
</head>
<body><h3>&nbsp;</h3><p align="center">使用过滤器身份验证</p><form name="form" method="post" action="loginresult.jsp" onSubmit="return checkEmpty()"><table width="220" border="1" align="center" cellpadding="0" cellspacing="0" cgcolor="808080"><tr><td align="center">用户名</td><td><input type="text" name="name"></td></tr><tr><td align="center">密码</td><td><input type="password" name="password"></td></tr><tr><td align="center" colspan="2"><input type="submit" name="Submit" value="登录"><input type="submit" value="退出"></td></tr></table>
</body>
</html>

创建loginresult.jsp页面,在user对象的session中执行跳转到下一页面

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@page import="com.cn.zj.Filter.User" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String name=request.getParameter("name");
String password=request.getParameter("password");
User user=new User();
user.setUsername(name);
user.setPassword(password);
session.setAttribute("user",user);
response.sendRedirect("filter/loginsuccess.jsp");
%>
</body>
</html>

创建loginsuccess.jsp页面

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="com.cn.zj.Filter.User"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>使用过滤器身份验证</title>
</head>
<body><div align="center"><table width="333" height="285" cellpadding="0" cellspacing="0"><tr><td align="center"><p>您己成功登录</p><p><br><a href="backtrack.jsp">返回</a></p></td></tr>
</table>
</div></body>
</html>

backtrack.jsp页面

<%
session.invalidate();
out.print("<script language='javascript'>window.location.href='../index.jsp';</script>");
%>

web.xml文件配置

<welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
<filter><filter-name>filterUSer</filter-name><filter-class>com.cn.zj.Filter.FilterLogin</filter-class>
</filter>
<filter-mapping><filter-name>filterUser</filter-name><url-pattern>/filter/*</url-pattern>
</filter-mapping>

验证用户身份Filter过滤器相关推荐

  1. shiro中的验证用户身份认证以及授权

    目录 1.运用shiro进行用户身份认证: 1.1导入基于Shiro的数据库脚本 1.2.引入依赖(shiro-1.4.1) shiro-core  shiro-web  shiro-spring 1 ...

  2. java ladp用户认证_java – LDAP:如何使用连接详细信息验证用户身份

    我无法使用LDAP对用户进行身份验证.我有以下细节: URL=ldap://10.10.10.10:389 LDAP BASE:DC=lab2,DC=ins LDAP Bind Account: CN ...

  3. 华为帐号服务升级,助力应用快速验证用户身份

    目前,在电商.金融.社交等多种行业的APP中,"帐号+短信验证码"已成为验证用户身份的主流方式.短信验证具有易操作.安全性高.成本低的优势,在用户注册.登录.绑定手机号等许多场景中 ...

  4. 通过耳道形状来验证用户身份?苹果:未来,AirPods可能实现

    据根据外国名媒体报道称:苹果公司正在考虑为新款AirPods加入"生物识别技术",让未来的AirPods能够"通过耳道形状"来识别用户身份. 目前,大多数的苹果 ...

  5. 用WSE在Web服务中验证用户身份

    一.Web服务安全与WS-Security 毫无疑问,SOAP和XML Web服务在交互操作和标准上已经完全改变了电子商务领域的格局. 然而直到最近,在Web服务技术领域仍然存在着一些缺陷,那就是处理 ...

  6. 用户身份验证最佳做法清单

    用户身份验证是每个Web应用程序共享的功能. 我们已经实现了很多次,所以很早以前就应该完善它. 然而,错误无时无刻不在发生. 造成这种情况的部分原因是,可能出问题的清单很长. 您可能会错误地存储密码, ...

  7. 身份证验证 校验码_用户身份验证最佳做法清单

    身份证验证 校验码 用户身份验证是每个Web应用程序共享的功能. 我们已经实施了很多次了,所以早就应该完善它了. 然而,错误无时无刻不在. 造成这种情况的部分原因是,可能出错的事情列表很长. 您可能会 ...

  8. 使用护照js进行用户身份验证

    介绍Passport.js (Introducing Passport.js) Passport.js is an authentication middleware. It attempts to ...

  9. 构建具有用户身份认证的 React + Flux 应用程序

    序言:这是一篇内容详实的 React + Flux 教程,文章主要介绍了如何使用 API 获取远程数据以及如何使用 JSON Web Tokens 进行用户身份认证.在阅读本文之后,我一直使用文章介绍 ...

最新文章

  1. jmeter名词解释之聚合报告
  2. impala jdbc驱动执行impala sql的一个坑(不支持多行sql)
  3. python打包exe之打包深度学习模型踩坑记录及其解决办法。
  4. PAI和Hologres的个性化推荐最佳实践
  5. C#温故而知新学习系列之XML编程—Xml写入器XmlWriter类(三)
  6. Linux文件目录基础笔记
  7. hibernate自定义校验器使用(字段在in范围之内)
  8. linux csi驱动添加,CSI接口Camera驱动学习
  9. 手机APP的秘密,看的一清二楚!
  10. hugo_如何将Hugo用于教室的开源CMS
  11. 正则表达式**************************
  12. 解决atom安装emmet的问题
  13. OLED SH1108 STM32 8080接口实际使用
  14. MATLAB中绘制椭圆
  15. C++层次分析法一致性检验
  16. 电脑重装系统需要多少钱?
  17. Docker Dockerfile 验证Docker内部使用jmap报错问题解决
  18. 12.6学习笔记 HTML5表单元素/嵌入图片/视频(未完)
  19. h2 使用liquibase的changelog表格创建不成功
  20. 微信小程序从零开始开发步骤(一)

热门文章

  1. 成功解决cx_Freeze打包的时候出现importError:can not import name idnadata
  2. os_mem.c(全)
  3. PHP-fpm 优化问题
  4. ORACLE纯SQL实现多行合并一行
  5. (线段树)Just a Hook -- hdu -- 1689
  6. 在多台服务器上简单实现Redis的数据主从复制
  7. stm32f103rb升级到stm32f103rc时代码移植注意事项
  8. 个推通知栏修改_浙大一院五一劳动节放假通知!手机办住院手续!还有这些攻略不能错过!...
  9. C++ Primer 5th笔记(chap 17 标准库特殊设施)regex_replace
  10. C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板特例化