通过Filter来定义一个登录验证过滤器,这是就不需要在每一个JSP页面添加判断用户合法性的代码了。

以下示例中包含了5个文件,一个是登录表单LoginForm.jsp,一个是登录判断页LoginConf.jsp,

一个是登录验证过滤器LoginFilter.java,一个是登录成功页面LoginSucess.jsp,一个是登录失败

页面Loginfailure.jsp。

LoginForm.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

 <html>
<head><title>用户登录</title></head> <body>
<center>
<form action="LoginConf.jsp" method="post">
<table>
<tr>
<td colspan="2">用户登录</td>
</tr>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密&nbsp;&nbsp;码</td>
<td><input type="password" name="userpassword"></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="登录">
<input type="reset" value="重置">
</td>
</tr>
</table>
</form>
</center>
</body>
</html>

LoginConf.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

 <html>
<head><title>登录判断</title></head> <body>
<center>
<%
//接受用户名,密码参数
String username=request.getParameter("username");
String userpassword = request.getParameter("userpassword"); //判断用户名以及密码,如果为指定用户则跳转到登陆成功页面。
if("CeShi".equals(username)&&"123456".equals(userpassword)){
session.setAttribute("username",username);
%>
<jsp:forward page="LoginSuccess.jsp"/>
<%
}
//如果不是指定用户,则跳转到登录失败页面
else{
%>
<jsp:forward page="LoginFailure.jsp" />
<%
}
%>
</center>
</body>
</html>

LoginFilter.java

 package com.mhb;

 import java.io.IOException;

 import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; public class LoginFilter implements Filter { //初始化方法
public void init(FilterConfig arg0) throws ServletException {
System.out.println("登录验证过滤器初始化!");
} //过滤方法
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
//获得session对象
HttpSession session = request.getSession();
String login = (String) session.getAttribute("username"); //如果是登录判断页面,不用进行过滤检查
if("/JavaWeb/LoginConf.jsp".equals(request.getRequestURI())){
chain.doFilter(req, res);
}else{
//判断用户是否进行登录,如果进行了登录则继续操作,否则跳转到登录页面
if(login == null || "".equals(login)){
request.getRequestDispatcher("LoginForm.jsp").forward(req, res);
}else{
chain.doFilter(req, res);
}
}
} //销毁方法
public void destroy() {
System.out.println("登录验证过滤器销毁!");
}
}

LoginSuccess.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

 <html>
<head><title>登录成功</title></head> <body>
<center>
<h1>登录成功</h1>
${sessionScope.username}欢迎您的登录!
</center>
</body>
</html>

LoginFailure.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

 <html>
<head><title>登录失败</title></head> <body>
<h1>登录失败</h1>
</body>
</html>

web.xml配置

   <filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.mhb.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

验证过程:

  1)在浏览器中直接输入登录页面,输入正确用户名密码(CeShi,123456)跳转至成功页面。

2)在浏览器中直接输入登录页面,输入错误的用户名密码跳转至登录失败页面。

3)在浏览器中直接输入登录成功页面,直接跳转至登录页面(此步骤注意清空浏览器缓存)。

Filter登录验证过滤器(全局)的更多相关文章

  1. Java Web Filter登录验证

    初做网站需要登录验证,转自 :http://blog.csdn.net/daguanjia11/article/details/48995789 Filter: Filter是服务器端的组件,用来过滤 ...

  2. jsp filter登录限制过滤器

    http://www.cnblogs.com/hemingwang0902/archive/2012/01/09/2316956.html UserFilter.java package filter ...

  3. Yii登录验证和全局访问用户ID

    注意:Yii默认的代码,Yii::app()->user->id返回的不是我们想要的用户ID,而是用户名.因此在useridentity类中要用一个变量来存储登录用户的ID,然后重载get ...

  4. asp.net mvc中的用户登录验证过滤器

    在WEB项目中建立 类:      public class LoginFilter : ActionFilterAttribute     {         public override voi ...

  5. 使用filter进行登录验证,并解决多次重定向问题

    最近在做关于filter登录验证的功能,防止未登录的用户直接通过地址进入系统 LoginFilter类:继承Filter接口 package com.ss.filter; import java.io ...

  6. Spring Security 学习笔记-登录认证过滤器

    UsernamePasswordAuthenticationFilter用户登录验证过滤器,它继承自AbstractAuthenticationProcessingFilter. 登录处理url默认使 ...

  7. [MVC学习笔记]5.使用Controller来代替Filter完成登录验证(Session校验)

          之前的学习中,在对Session校验完成登录验证时,通常使用Filter来处理,方法类似与前文的错误日志过滤,即新建Filter类继承ActionFilterAttribute类,重写On ...

  8. MVC过滤器进行统一登录验证

    统一登录验证: 1.定义实体类Person:利用特性标签验证输入合法性设计登录页面 1 2 3 4 5 6 7 8 9 public class Person {     [DisplayName(& ...

  9. 过滤器实现Token验证(登录验证+过期验证)---简单的实现

    功能:登录验证+过期验证+注销清除cookie+未注销下关闭或刷新浏览器仍可直接访问action概述:token只存在客户端cookie,后端AES加密+解密+验证,每一次成功访问action都会刷新 ...

随机推荐

  1. Linux内核学习方法

    Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉.毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了 ...

  2. Redis 二:入门基本篇

    .多数据库设置 - ,代表16个数据库 .glob风格通配符 keys * 返回所有 keys ba? 返回 bar keys b[a-z][a-z] 返回btt bar \x 匹配转义字符 .判断一 ...

  3. 有关UIView、subview的几个基础知识点-IOS开发 (实例)

    环境是xcode4.3 首先要弄懂几个基本的概念. 一)三个结构体:CGPoint.CGSize.CGRect 1.  CGPoint /* Points. */ struct CGPoint { C ...

  4. 把NodeJS注册成Windows服务

    为了让NodeJS开发的网站能在服务器端正常运行,最好把NodeJS需要运行的代码注册成Windows服务,服务器如果重启也不需要重新去启动NodeJS. 1.编写一个执行NodeJS脚本的bat文件 ...

  5. android重写view和viewgroup的区别

    重写view: View类一般用于绘图操作,重写它的onDraw方法,但它不可以包含其他组件,没有addView(View view)方法. 重写viewgroup: ViewGroup是一个组件容器 ...

  6. windows最基本命令行

    7:计算机运行命令全集 winver---------检查Windows版本 wmimgmt.msc----打开windows管理体系结构 wupdmgr--------windows更新程序 win ...

  7. 3157: 国王奇遇记 & 3516: 国王奇遇记加强版 - BZOJ

    果然我数学不行啊,题解君: http://www.cnblogs.com/zhuohan123/p/3726933.html const h=; var fac,facinv,powm,s:..]of ...

  8. Mysql登录异常的一个问题:

    问题描述: 正常在启动mysql的时候是这样的: 1. win打开输入界面: 2. 输入cmd命令,鼠标右键选择“以管理员身份运行”: 3, 之后再在界面输入登录mysql的登录语句: mysq -u ...

  9. PE文件结构详解(六)重定位

    前面两篇 PE文件结构详解(四)PE导入表 和 PE文件结构详解(五)延迟导入表 介绍了PE文件中比较常用的两种导入方式,不知道大家有没有注意到,在调用导入函数时系统生成的代码是像下面这样的: 在这里 ...

  10. Windows ftp 连不上Linux

    1.首先检查vsftpd服务器 是否安装 $ rpm -qa | grep vsftpdvsftpd-2.2.2-11.el6.x86_64 2.显示已安装,restart the vsftpd ¥ ...