Filter登录验证过滤器(全局)
2015-08-26 16:44
393 查看
通过Filter来定义一个登录验证过滤器,这是就不需要在每一个JSP页面添加判断用户合法性的代码了。
以下示例中包含了5个文件,一个是登录表单LoginForm.jsp,一个是登录判断页LoginConf.jsp,
一个是登录验证过滤器LoginFilter.java,一个是登录成功页面LoginSucess.jsp,一个是登录失败
页面Loginfailure.jsp。
LoginForm.jsp
LoginConf.jsp
LoginFilter.java
LoginSuccess.jsp
LoginFailure.jsp
web.xml配置
验证过程:
1)在浏览器中直接输入登录页面,输入正确用户名密码(CeShi,123456)跳转至成功页面。
2)在浏览器中直接输入登录页面,输入错误的用户名密码跳转至登录失败页面。
3)在浏览器中直接输入登录成功页面,直接跳转至登录页面(此步骤注意清空浏览器缓存)。
以下示例中包含了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)在浏览器中直接输入登录成功页面,直接跳转至登录页面(此步骤注意清空浏览器缓存)。
相关文章推荐
- myeclipse 中查看jar包的源码
- hibernate lazy策略
- i686只是cpu的指令等级,包括32bit和64bit
- 【数据结构】-冒泡排序法Java实现
- 可重入性和线程安全性——Reentrancy and Thread-Safety
- PHP中使用参数化查询
- Jsp页面引入天气预报
- 归并排序实现
- Sublime 同时打开多个文件夹(项目)
- [python] UDP客户端/服务器端
- UISlider滑块
- Mybatis的输出映射
- MySQL索引背后的数据结构及BTree B+Tree算法原理
- ☆算法竞赛入门经典(第二版) 例题4-2 猜单词(Hangman Judge) UVa489
- JSON -- 介绍
- C++ 面向对象 知识点 小结
- android 编译FFmpeg
- JS
- java进程 线程分析
- 截取字符 并智能判断长度是否需要截取