Struts2自定义拦截器实例—登陆权限验证



Struts2自定义拦截器实例—登陆权限验证。

版本:struts2.1.6

此实例实现功能:用户需要指定用户名登陆,登陆成功进入相应页面执行操作,否则返回到登陆页面进行登陆,当直接访问操作页面(登陆后才能访问的页面)时则不允许,须返回登陆页面。

代码如下:

一、页面

login.jsp

 

[xhtml] view plaincopy

  1. <%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%>
  2. <!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 4.01 Transitional//EN”>
  3. <html>
  4.   <head>
  5.     <title>yuewei’Login</title>
  6.     <!–
  7.     <link rel=”stylesheet” type=”text/css” href=”styles.css” mce_href=”styles.css”>
  8.     –>
  9.   </head>
  10.   <body>
  11.   <form action=”login.action” method=”post”>
  12.   User:<input type=”text” name=”username”><br>
  13.   Passoword:<input type=”password” name=”password”><br>
  14.   <input type=”submit” value=”submit”>
  15.   </form>
  16. </body>
  17. </html>

 

welcome.jsp

 

[xhtml] view plaincopy

  1. <%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%>
  2. <!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 4.01 Transitional//EN”>
  3. <html>
  4.   <head>
  5.     <title> yuewei’s Welcome</title>
  6.  <!–
  7.  <link rel=”stylesheet” type=”text/css” href=”styles.css” mce_href=”styles.css”>
  8.  –>
  9.   </head>
  10.   <body>
  11.   <h1>登录成功后显示此页面</h1>
  12.   <a href=”show.action” mce_href=”show.action”>show</a>
  13.   </body>
  14. </html>

 

show.jsp

 

[xhtml] view plaincopy

  1. <%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%>
  2. <!DOCTYPE HTML PUBLIC ”-//W3C//DTD HTML 4.01 Transitional//EN”>
  3. <html>
  4.   <head>
  5.     <title>yuewei’s Show</title>
  6.     <!–
  7.     <link rel=”stylesheet” type=”text/css” href=”styles.css” mce_href=”styles.css”>
  8.     –>
  9.   </head>
  10.   <body>
  11.     Show This Page
  12.         登录后执行此页面<br>
  13.   </body>
  14. </html>

 

 


二、Action

LoginFormAction

 

  1. package com.ywjava.action;
  2. import com.opensymphony.xwork2.ActionSupport;
  3. public class LoginFormAction extends ActionSupport {
  4.     public String exexcute() {
  5.         return ”success”;
  6.     }
  7. }

 

LoginAction

 

  1. package com.ywjava.action;
  2. import com.opensymphony.xwork2.ActionContext;
  3. import com.opensymphony.xwork2.ActionSupport;
  4. import com.ywjava.utils.Constants;
  5. public class LoginAction extends  ActionSupport{
  6. private String username;
  7. private String password;
  8. public String getPassword() {
  9.     return password;
  10. }
  11. public void setPassword(String password) {
  12.     this.password = password;
  13. }
  14. public String getUsername() {
  15.     return username;
  16. }
  17. public void setUsername(String username) {
  18.     this.username = username;
  19. }
  20. private boolean isInvalid(String value) {
  21.     return (value == null || value.length() == 0);
  22. }
  23. public String execute(){
  24.         System.out.println(username);
  25.         System.out.println(password);
  26.          if (isInvalid(getUsername()))
  27.                 return INPUT;
  28.             if (isInvalid(getPassword()))
  29.                 return INPUT;
  30.     if(this.getUsername().equals(“yuewei”)&& this.getPassword().equals(“yuewei”)){
  31.         ActionContext.getContext().getSession().put(Constants.USER_SESSION,getUsername());
  32.         ActionContext.getContext().getSession().put(Constants.PASS,getPassword());
  33.         return ”success”;
  34.     }
  35.     return ”error”;
  36. }
  37. }

 

ShowAction

 

  1. package com.ywjava.action;
  2. import com.opensymphony.xwork2.ActionSupport;
  3. public class ShowAction extends ActionSupport {
  4.  public String execute() {
  5.   return ”success”;
  6.  }
  7. }

 

三、拦截器

 

  1. package com.ywjava.interceptot;
  2. import java.util.Map;
  3. import com.opensymphony.xwork2.Action;
  4. import com.opensymphony.xwork2.ActionContext;
  5. import com.opensymphony.xwork2.ActionInvocation;
  6. import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
  7. import com.ywjava.utils.Constants;
  8. public class LoginInterceptor extends AbstractInterceptor {
  9.     @Override
  10.     public String intercept(ActionInvocation invocation) throws Exception {
  11.         // 取得请求相关的ActionContext实例
  12.         ActionContext ctx = invocation.getInvocationContext();
  13.         Map session = ctx.getSession();
  14.         String user = (String) session.get(Constants.USER_SESSION);
  15.         // 如果没有登陆,或者登陆所有的用户名不是yuewei,都返回重新登陆
  16.         if (user != null && user.equals(“yuewei”)) {
  17.             System.out.println(“test”);
  18.             return invocation.invoke();
  19.         }
  20.         ctx.put(“tip”, ”你还没有登录”);
  21.         return Action.LOGIN;
  22.     }
  23. }

 

四 struts.xml

 

[c-sharp] view plaincopy

  1. <?xml version=”1.0″ encoding=”UTF-8″?>
  2. <!DOCTYPE struts PUBLIC
  3.     ”-//Apache Software Foundation//DTD Struts Configuration 2.1//EN”
  4.     ”http://struts.apache.org/dtds/struts-2.1.dtd”>
  5. <struts>
  6.     <package name=”authority” extends=”struts-default”>
  7.         <!– 定义一个拦截器 –>
  8.         <interceptors>
  9.             <interceptor name=”authority”
  10.                 class=”com.ywjava.interceptot.LoginInterceptor”>
  11.             </interceptor>
  12.             <!– 拦截器栈 –>
  13.             <interceptor-stack name=”mydefault”>
  14.                 <interceptor-ref name=”defaultStack” />
  15.                 <interceptor-ref name=”authority” />
  16.             </interceptor-stack>
  17.         </interceptors>
  18.         <!– 定义全局Result –>
  19.         <global-results>
  20.             <!– 当返回login视图名时,转入/login.jsp页面 –>
  21.             <result name=”login”>/login.jsp</result>
  22.         </global-results>
  23.         <action name=”loginform”
  24.             class=”com.ywjava.action.LoginFormAction”>
  25.             <result name=”success”>/login.jsp</result>
  26.         </action>
  27.         <action name=”login” class=”com.ywjava.action.LoginAction”>
  28.             <result name=”success”>/welcome.jsp</result>
  29.             <result name=”error”>/login.jsp</result>
  30.             <result name=”input”>/login.jsp</result>
  31.         </action>
  32.         <action name=”show” class=”com.ywjava.action.ShowAction”>
  33.             <result name=”success”>/show.jsp</result>
  34.             <!– 使用此拦截器 –>
  35.             <interceptor-ref name=”mydefault” />
  36.         </action>
  37.     </package>
  38. </struts>