Java 利用过滤器Filter 实现登录过滤
2016-03-10 19:20
561 查看
本次的demo一共包含3个页面
1.登录页面 /LoginTest/Login/index.html
2.登录成功页面【加入了登录验证,必须登录后才能访问】 /LoginTest/Home/index.html
3.登录失败页面 /LoginTest/Login/ErrorPage.html
数据库连接不再赘述,如有疑问,移步至:点击打开链接
首先 在未登录的情况下访问页面1,请求会被重定向到页面2
然后 在登录页输入错误的用户名会重定向到页面3
最后返回到页面2输入正确用户名和密码,会被重定向到页面1
项目目录结构如下
相关代码:
过滤器
配置文件
Servlet
登录页
1.登录页面 /LoginTest/Login/index.html
2.登录成功页面【加入了登录验证,必须登录后才能访问】 /LoginTest/Home/index.html
3.登录失败页面 /LoginTest/Login/ErrorPage.html
数据库连接不再赘述,如有疑问,移步至:点击打开链接
首先 在未登录的情况下访问页面1,请求会被重定向到页面2
然后 在登录页输入错误的用户名会重定向到页面3
最后返回到页面2输入正确用户名和密码,会被重定向到页面1
项目目录结构如下
相关代码:
过滤器
package cn.xyj.study; 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.HttpServletResponse; import javax.servlet.http.HttpSession; public class LoginCheckFilter implements Filter { private String url; @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse respose, FilterChain chain) throws IOException, ServletException { HttpServletRequest httprequest=(HttpServletRequest)request; HttpServletResponse httprespose=(HttpServletResponse)respose; HttpSession session=httprequest.getSession(); if(session.getAttribute("uid")==null) { httprespose.sendRedirect(url); } chain.doFilter(request, respose); } @Override public void init(FilterConfig config) throws ServletException { url=config.getInitParameter("ErrorPage"); System.out.println("----------------url="+url); } }
配置文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name> <!-- servlet开始 --> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>LoginController</servlet-name> <servlet-class>cn.xyj.study.LoginController</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginController</servlet-name> <url-pattern>/servlet/Login</url-pattern> </servlet-mapping> <!-- servlet结束 --> <!-- 过滤器开始 --> <filter> <filter-name>LoginCheckFilter</filter-name> <filter-class>cn.xyj.study.LoginCheckFilter</filter-class> <init-param> <param-name>ErrorPage</param-name> <param-value>/LoginTest/Login/index.html</param-value> </init-param> </filter> <filter-mapping> <filter-name>LoginCheckFilter</filter-name> <url-pattern>/Home/*</url-pattern> </filter-mapping> <!-- servlet结束 --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
Servlet
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); String uid= (String) request.getParameter("uid"); String psw= (String) request.getParameter("psw"); String tip="默认提示"; String sql="select * from T_User where UserName='"+uid+"' and Pwd='"+psw+"'"; ResultSet rs=SqlHelper.executeQuery(sql); try { if(rs.next()) { HttpSession session=request.getSession(); session.setAttribute("uid", uid); response.sendRedirect("/LoginTest/Home/index.html"); } else { response.sendRedirect("/LoginTest/Login/ErrorPage.html"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
登录页
<form name="f1" id="f1" action="/LoginTest/servlet/Login" method="post"> <table border="0"> <tr> <td>用户名:</td> <td><input type="text" name="uid" id="login"></td> </tr> <tr> <td>密码:</td> <td><input type="password" name="psw" id="password"></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="提交"></td> </tr> </table> </form>
相关文章推荐
- Java编程思想学习(四) 访问权限
- Spring Integration入门
- 使用IntelliJ IDEA开发SpringMVC网站(二)框架配置
- 第一个java程序
- 使用IntelliJ IDEA开发SpringMVC网站(一)开发环境
- 《JAVA与模式》之简单工厂模式
- Java String的构造和getByte
- 《JAVA与模式》之工厂方法模式
- Eclipse上安装配置goclipse on windows
- 使用Spring Session做分布式会话管理
- spring 面试题
- java线程(1)-线程同步
- Java流程控制语句
- JDK的安装与第一个Java小程序的运行(在win7和win10上检验过)
- JAVA学习笔记
- Java IO复习(一)
- leetcode:Remove Linked List Elements 【Java】
- String的按值传递,java传参都是传值
- java学习日记——java中的多态
- spring MVC解决中文传参乱码问题