Filter登录验证过滤器(全局)
通过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>密 码</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登录验证过滤器(全局)的更多相关文章
- Java Web Filter登录验证
初做网站需要登录验证,转自 :http://blog.csdn.net/daguanjia11/article/details/48995789 Filter: Filter是服务器端的组件,用来过滤 ...
- jsp filter登录限制过滤器
http://www.cnblogs.com/hemingwang0902/archive/2012/01/09/2316956.html UserFilter.java package filter ...
- Yii登录验证和全局访问用户ID
注意:Yii默认的代码,Yii::app()->user->id返回的不是我们想要的用户ID,而是用户名.因此在useridentity类中要用一个变量来存储登录用户的ID,然后重载get ...
- asp.net mvc中的用户登录验证过滤器
在WEB项目中建立 类: public class LoginFilter : ActionFilterAttribute { public override voi ...
- 使用filter进行登录验证,并解决多次重定向问题
最近在做关于filter登录验证的功能,防止未登录的用户直接通过地址进入系统 LoginFilter类:继承Filter接口 package com.ss.filter; import java.io ...
- Spring Security 学习笔记-登录认证过滤器
UsernamePasswordAuthenticationFilter用户登录验证过滤器,它继承自AbstractAuthenticationProcessingFilter. 登录处理url默认使 ...
- [MVC学习笔记]5.使用Controller来代替Filter完成登录验证(Session校验)
之前的学习中,在对Session校验完成登录验证时,通常使用Filter来处理,方法类似与前文的错误日志过滤,即新建Filter类继承ActionFilterAttribute类,重写On ...
- MVC过滤器进行统一登录验证
统一登录验证: 1.定义实体类Person:利用特性标签验证输入合法性设计登录页面 1 2 3 4 5 6 7 8 9 public class Person { [DisplayName(& ...
- 过滤器实现Token验证(登录验证+过期验证)---简单的实现
功能:登录验证+过期验证+注销清除cookie+未注销下关闭或刷新浏览器仍可直接访问action概述:token只存在客户端cookie,后端AES加密+解密+验证,每一次成功访问action都会刷新 ...
随机推荐
- 第27章 项目8:使用XML-RPC进行文件共享
1.问题 创建一个简单的P2P文件共享程序. P2P文件共享程序是在不同计算机上的程序交换文件.P2P交互内,任何节点(peer)都可以是链接到其他节点.在这样一个由节点组成的虚拟网络中,是没有中央节 ...
- 内部技术分享的 PPT
本文的基础是搞了一次内部的技术分享,在此也分享一下本次的PPT的一些内容.先列一下大概内容吧. EF-Code First API(WCF.WebAPI) Xaml MVVM AOP Xamarin. ...
- hdu 5690 2016"百度之星" - 初赛(Astar Round2A) All X 快速二次幂 || 寻找周期
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5690 题意:m个数字全为x mod k ?= c;其中m <= 1010,0 < c,k ...
- nginx搭建流媒体服务器的方法详解
一.FLV视频发布方式简介 FLV视频有两总发布方式 1. HTTP方式 这种方式要下载FLV视频文件到本地播放,一旦FLV视频文件下载完成,就不会消耗服务器的资源和带宽,但是拖动功能没有RTM ...
- Python默认模块 os和shutil 实用函数
os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是 ' ...
- layout_weight体验(实现按比例显示)
在android开发中LinearLayout很常用,LinearLayout的内控件的android:layout_weight在某些场景显得非常重要,比如我们需要按比例显示.android并没用提 ...
- 1833: [ZJOI2010]count 数字计数 - BZOJ
Description给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次.Input输入文件中仅包含一行两个整数a.b,含义如上所述.Output输出文件中包含一 ...
- 如何在Eclipse中配置Tomcat服务器
之前使用MyEclipse来开发Web应用,可以在MyEclipse中配置服务器,配置完后,直接运行服务器即可,很方便. 最近切换到Eclipse开发环境,发现使用Tomcat的方式不太一样,因此在此 ...
- STS中取消show in Breadcrumb方法
前言:STS是Spring产品下的一个开发工具,它和eclipse很像,只不过对Spring有更好的兼容.Show in Breadcrumb是快速导航条,可以清晰的看到我们当前的类,属性或方法的导航 ...
- Asp.Net原理Version2.0
有些部分被省略,可以看看Asp.Net原理Version1.0 Asp.Net原理Version3.0_页面声明周期