java web过滤器在登录时的使用
来源:互联网 发布:淘宝店中国制造 编辑:程序博客网 时间:2024/05/22 16:46
我们经常在各种网站登录账户,有的网站只有登录账户后才能访问到网页内容。
如果我们直接键入登陆成功后的页面网址 能不能访问呢?不能访问的原因是什么呢?
我写了一个登录页面 希望在登录成功的时候进入访问成功页面 失败的时候进入访问失败页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--> </head> <body> <form action="servlet/LoginServlet" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" name="username"></td> </tr> <tr> <td>密码:</td> <td><input type="password" name=password></td> </tr> <tr> <td><input type="submit" value="登录"> </td> <td><input type="reset" value="重置"> </td> </tr> </table> </form> </body></html>登录成功
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'success.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--> </head> <body> 欢迎你,${username} </body></html>
登录失败
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'success.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--> </head> <body> 登陆失败!! </body></html>
servlet处理登录界面的表单数据
String username;String password;//获取表单的帐号 密码username=req.getParameter("username");password=req.getParameter("password");//如果帐号为admin 密码为123456 则登录成功if("admin".equals(username)&&"123456".equals(password)){//将用户保存的session中req.getSession().setAttribute("username", username);//跳转到成功界面resp.sendRedirect("../success.jsp");}else{//跳转到失败界面resp.sendRedirect("../fail.jsp");}运行结果:
运行结果似乎很正确。帐号密码输入正确成功登录 否则登录失败。
可是如果我们直接键入成功页面好像也登录成功了 ,但是与我们的设计是不一致的。
这时候就需要过滤器了
web.xml
<filter> <filter-name>LoginFilter</filter-name> <filter-class>Filter.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Filter类
package Filter;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;public class LoginFilter implements Filter {public void destroy() {}public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain chain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) arg0;HttpServletResponse responst = (HttpServletResponse) arg1;//如果是登录页面 或者servlet处理页面 直接放行if(request.getRequestURI().indexOf("/index.jsp")!=-1||request.getRequestURI().indexOf("/servlet/LoginServlet")!=-1||request.getRequestURI().indexOf("/fail.jsp")!=-1){chain.doFilter(arg0, arg1);return ;}if(request.getSession().getAttribute("username")!=null){chain.doFilter(arg0, arg1);}else{responst.sendRedirect("index.jsp");}}public void init(FilterConfig arg0) throws ServletException {}}
运行结果如下
使用过滤器后发现 我们直接键入登录成功页面 会自动跳转到登录界面 不会存在未登录就进入成功访问页面的问题。
合理的使用过滤器 能够避免用户未经登录就成功访问的页面的不安全。
0 0
- java web过滤器在登录时的使用
- Java web登录验证过滤器
- JAVA WEB 中Servlet过滤器的使用
- Java Web Filter(过滤器的使用)
- java web过滤器之用户登录过滤
- Java web过滤器验证登录防止未登录进入界面
- java中使用过滤器实现自动登录
- java web 过滤器跟拦截器的区别和使用
- java web 过滤器跟拦截器的区别和使用
- java web 过滤器跟拦截器的区别和使用
- java web 过滤器跟拦截器的区别和使用
- Java Web中使用filter(过滤器)的原因
- java web 过滤器跟拦截器的区别和使用
- java web 过滤器跟拦截器的区别和使用
- java web 过滤器跟拦截器的区别和使用
- java web 过滤器跟拦截器的区别和使用
- java 过滤器的使用
- java过滤器的使用
- 总结
- 注册表注入
- 软件开发的一般流程
- android常用控件RecyclerView(三) RecyclerView的使用
- 浅析User Agent Stylesheet属性
- java web过滤器在登录时的使用
- 无DLL注入(函数直接注入)
- Hadoop中maper和reducer数目的调节
- DOS磁盘操作系统常用命令总结
- 自定义属性format大全和使用方法
- 十大Intellij IDEA快捷键
- 【并行计算与CUDA开发】基于NVIDIA显卡的硬编解码的一点心得 (完结)
- CUDA-CODE6-共享和同步
- 个人总结Activity,fragment传值