通过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&UNIX上卸载GoldenGate的方法

    1. Log on to the database server (as oracle) where the GoldenGate software is installed. [root@oracl ...

  2. 【转】Eazfuscator.NET 3.3中混淆化需要注意的一些问题

    对于DLL,Eazfuscator.NET默认不会混淆化任何公共成员,因为类库的公共成员很有可能被外界调用,而对于EXE的程序集,所有类型都可能被混淆化.注意上面这句话有一个“可能”,因为Eazfus ...

  3. 51nod 计算N!的位数

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1130 对于这类问题:斯特林近似公式:     百度百科的证明:http: ...

  4. 【BZOJ 2245】[SDOI2011]工作安排

    Description 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被编号为1~m员工能够制造的产品种类有所区别.一件产 ...

  5. LintCode-Implement Iterator of Binary Search Tree

    Design an iterator over a binary search tree with the following properties: Elements are visited in ...

  6. HTML & XML 转义字符

    HTML & XML 转义字符 HTML中<, >,&等有特殊含义,(前两个字符用于链接签,&用于转义),不能直接使用.使用这三个字符时,应使用它们的转义序列,如下 ...

  7. sqlserver 2008 卸载时提示 “重新启动计算机”失败

    问题:sqlserver 2008 卸载时提示 “重新启动计算机”失败 解决办法: 1.打开注册表:开始->运行: regedit 2.找到HKEY_LOCAL_MACHINE\SYSTEM\C ...

  8. SQL Server 创建表 添加主键 添加列常用SQL语句【转】

    --删除主键alter table 表名 drop constraint 主键名--添加主键alter table 表名 add constraint 主键名 primary key(字段名1,字段名 ...

  9. 如何在Eclipse中配置Tomcat服务器

    之前使用MyEclipse来开发Web应用,可以在MyEclipse中配置服务器,配置完后,直接运行服务器即可,很方便. 最近切换到Eclipse开发环境,发现使用Tomcat的方式不太一样,因此在此 ...

  10. log4j安装与简介

    问题描述:     在应用程序中添加日志记录总的来说基于三个目的:    (1) 监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作:     (2) 跟踪代码运行时轨迹,作为日 ...