Struts2多方法实现登录过滤拦截

目录:
        1.需求概述
        2.解决方案
            2.1 filter过滤器实现登录 过滤  
             2.2  action拦截器实现登录过滤  
             2.3  方法拦截器实现登录过滤  
1.需求概述
        有时候我们在做管理系统的时候,出于安全考虑我们有些页面是不能够直接供用户访问的,这个时候就需要我们添加一些过滤操作,让已经登录的用户可访问,未登录的用户不能访问。
2.解决方案
   2.1 filter过滤器实现登录过滤
        案例中我们会建立LoginAction.java和TestAction.java两个action,main.jsp和login.jsp两个页面;我们要做到的效果就是当用户不登陆直接访问TestAction和main.jsp让他跳转到登录界面,当登录成功以后我无论是访问main.jsp还是TestAction都可以直接进入main.jsp页面。
    (1)login.jsp
   
   
   
  1. <%@ page language="java" contentType="text/html; charset=utf8"
  2. pageEncoding="utf8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <form action="login.action" method="post">
  11. 用户名:<input type="text" id="username" name="username"><br> 密码:<input
  12. type="password" id="password" name="password"><br> <input type="submit"
  13. value="提交">
  14. </form>
  15. </body>
  16. </html>
    (2)LoginAction.java
   
   
   
  1. package com.elimy.admin;
  2. import javax.servlet.http.Cookie;
  3. import javax.servlet.http.HttpServletRequest;
  4. import javax.servlet.http.HttpServletResponse;
  5. import javax.servlet.http.HttpSession;
  6. import org.apache.struts2.ServletActionContext;
  7. import com.elimy.entity.User;
  8. import com.opensymphony.xwork2.ActionSupport;
  9. import com.opensymphony.xwork2.ModelDriven;
  10. public class LoginAction extends ActionSupport implements ModelDriven<User> {
  11. private User user= new User();
  12. /*
  13. * 管理员登录功能
  14. */
  15. public String login() {
  16. //通过ServletActionContext获取到requst和 response请求对象
  17. HttpServletRequest request = ServletActionContext.getRequest();
  18. HttpServletResponse response= ServletActionContext.getResponse();
  19. //获取到浏览器上午cookies
  20. Cookie cookies[] = request.getCookies();
  21. //遍历cookie是否有登录信息
  22. if (cookies!=null){
  23. for(int i=0;i<cookies.length;i++){
  24. Cookie cookie = cookies[i];
  25. if ("elimy".equals(cookie.getValue())){
  26. System.out.println("你已经登录过了");
  27. //直接返回跳转到管理页面
  28. return SUCCESS;
  29. }
  30. }
  31. }
  32. //判断用户名和密码是否成功,这里就不从数据库获取了
  33. if ("elimy".equals(user.getUsername())&& "8888".equals(user.getPassword())) {
  34. System.out.println("登录成功");
  35. //将登录状态写入session
  36. request.getSession().setAttribute("username", user.getUsername());
  37. //用户名存入cookie
  38. Cookie cookie1 = new Cookie("username", user.getUsername());
  39. //设置Cookie生命周期为一天
  40. cookie1.setMaxAge(60 * 60 * 24 * 1);
  41. //保存cookie
  42. response.addCookie(cookie1);
  43. System.out.println("Session="+request.getAttribute("username"));
  44. return SUCCESS;
  45. }else {
  46. //检测是否内容为空
  47. if (user.getUsername()==null&&user.getPassword()==null) {
  48. System.out.println("输入内容为空,请输入内容先");
  49. }else {
  50. System.out.println(user.getUsername());
  51. System.out.println(user.getPassword());
  52. System.out.println("登录失败");
  53. }
  54. return ERROR ;
  55. }
  56. }
  57. @Override
  58. public User getModel() {
  59. return user;
  60. }
  61. }
    (3)mian.jsp
   
   
   
  1. <%@ page language="java" contentType="text/html; charset=utf8"
  2. pageEncoding="utf8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf8">
  7. <title>管理页面</title>
  8. </head>
  9. <body background="<%=request.getContextPath()%>/images/back.jpg"
  10. style=" background-repeat:no-repeat;
  11. background-size:100% 100%;
  12. background-attachment: fixed;"
  13. >
  14. welcome to struts2~~main.jsp!
  15. <table>
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值