Struts2自定义拦截器实例—只允许从登录页面进入系统

  1. 【1】struts.xml:
  2. <!-- 定义一个拦截器 -->
  3. <interceptors>
  4. <interceptor name="authority"
  5. class="org.interceptot.LoginInterceptor">
  6. </interceptor>
  7. <!-- 拦截器栈 -->
  8. <interceptor-stack name="mydefault">
  9. <interceptor-ref name="defaultStack" />
  10. <interceptor-ref name="authority" />
  11. </interceptor-stack>
  12. </interceptors>
  13. <!-- 定义全局Result -->
  14. <global-results>
  15. <!-- 当返回login视图名时,转入/login.jsp页面 -->
  16. <result name="login">/login.jsp</result>
  17. </global-results>
  18. <action name="show" class="org.action.showAction">
  19. <result name="success">/main.jsp</result>
  20. <!-- 使用此拦截器 -->
  21. <interceptor-ref name="mydefault" />
  22. </action>
  23. <!--验证登录用户信息 -->
  24. <action name="login" class="org.action.loginAction" method="execute">
  25. <result name="error">/login.jsp</result>
  26. <result name="input">/login.jsp</result>
  27. </action>
  28. 【2】自定义拦截器org.interceptot.LoginInterceptor:
  29. package org.interceptot;
  30. import java.util.Map;

  31. import com.opensymphony.xwork2.Action;
  32. import com.opensymphony.xwork2.ActionContext;
  33. import com.opensymphony.xwork2.ActionInvocation;
  34. import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
  35. public class LoginInterceptor extends AbstractInterceptor {
  36. @Override
  37. public String intercept(ActionInvocation invocation) throws Exception {
  38. // 取得请求相关的ActionContext实例
  39. ActionContext ctx = invocation.getInvocationContext();
  40. Map session = ctx.getSession();
  41. String user = (String) session.get("username");
  42. // 如果没有登陆,即用户名不存在,都返回重新登陆
  43. System.out.println("user:"+user);
  44. if (user != null) {
  45. System.out.println("test");
  46. return invocation.invoke();
  47. }
  48. System.out.println("你还没有登录");
  49. ctx.put("tip", "你还没有登录");
  50. return Action.LOGIN; //返回一个叫login的result结果
  51. }
  52. }
  53. 【3】进入主页面的Action:org.action.showAction
  54. package org.action;

  55. import com.opensymphony.xwork2.ActionSupport;

  56. public class showAction extends ActionSupport {
  57. public String execute() {
  58. return "success";
  59. }
  60. }

  61. 【4】LoginAction:

  62. private boolean isInvalid(String value) {
  63. return (value == null || value.length() == 0);
  64. }
  65. if (isInvalid(user.getUsername()))
  66. return INPUT;
  67. if (isInvalid(user.getPassword()))
  68. return INPUT;
  69. //登录成功将User放入session中
  70. HttpServletRequest request = ServletActionContext.getRequest();
  71. Map map=ActionContext.getContext().getSession();
  72. map.put("username", user.getUsername());

  73. 【5】如果我们通过show.action访问main.jsp那么就会被自定义拦截器拦住,拦截器检查session中
  74. 是否有值,有证明用户已经登录,没有则为没有登录,那么就会被跳转到登陆页面
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值