zoukankan      html  css  js  c++  java
  • Struts2自定义拦截器实例—登陆权限验证

    版本:struts2.1.6

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

    代码如下:

    一、页面

    login.jsp

     

    [xhtml] view plaincopy
    1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
    2.   
    3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    4. <html>  
    5.   <head>    
    6.     <title>yuewei'Login</title>   
    7.     <!-- 
    8.     <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> 
    9.     -->  
    10.   </head>  
    11.     
    12.   <body>  
    13.   <form action="login.action" method="post">  
    14.   User:<input type="text" name="username"><br>  
    15.   Passoword:<input type="password" name="password"><br>  
    16.   <input type="submit" value="submit">  
    17.   </form>  
    18.      
    19. </body>  
    20. </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.      
    6.     <title> yuewei's Welcome</title>  
    7.       
    8.  <!-- 
    9.  <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> 
    10.  -->  
    11.   
    12.   </head>  
    13.     
    14.   <body>  
    15.   <h1>登录成功后显示此页面</h1>  
    16.   <a href="show.action" mce_href="show.action">show</a>  
    17.   </body>  
    18. </html>  

    show.jsp

     

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

     

    二、Action

    LoginFormAction

     

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

    LoginAction

     

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

    ShowAction

     

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

    三、拦截器

     

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

    四 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.         <!-- 定义一个拦截器 -->  
    9.         <interceptors>  
    10.             <interceptor name="authority"  
    11.                 class="com.ywjava.interceptot.LoginInterceptor">  
    12.             </interceptor>  
    13.             <!-- 拦截器栈 -->  
    14.             <interceptor-stack name="mydefault">  
    15.                 <interceptor-ref name="defaultStack" />  
    16.                 <interceptor-ref name="authority" />  
    17.             </interceptor-stack>  
    18.         </interceptors>  
    19.   
    20.         <!-- 定义全局Result -->  
    21.         <global-results>  
    22.             <!-- 当返回login视图名时,转入/login.jsp页面 -->  
    23.             <result name="login">/login.jsp</result>  
    24.         </global-results>  
    25.   
    26.         <action name="loginform"  
    27.             class="com.ywjava.action.LoginFormAction">  
    28.             <result name="success">/login.jsp</result>  
    29.         </action>  
    30.           
    31.         <action name="login" class="com.ywjava.action.LoginAction">  
    32.             <result name="success">/welcome.jsp</result>  
    33.             <result name="error">/login.jsp</result>  
    34.             <result name="input">/login.jsp</result>  
    35.         </action>  
    36.   
    37.         <action name="show" class="com.ywjava.action.ShowAction">  
    38.             <result name="success">/show.jsp</result>  
    39.             <!-- 使用此拦截器 -->  
    40.             <interceptor-ref name="mydefault" />  
    41.         </action>  
    42.           
    43.     </package>  
    44. </struts>  

    这篇文章我用到的关键地方是struts.xml配置文件中对自定义拦截器的配置

    <!-- 定义一个拦截器 -->  
            <interceptors>  
                <interceptor name="authority"  
                    class="com.ywjava.interceptot.LoginInterceptor">  
                </interceptor>  
                <!-- 拦截器栈 -->  
                <interceptor-stack name="mydefault">  
                    <interceptor-ref name="defaultStack" />  
                    <interceptor-ref name="authority" />  
                </interceptor-stack>  
            </interceptors>  
    
    <!--在Action中使用拦截器-->
    
    	<action name="show" class="com.ywjava.action.ShowAction">  
                <result name="success">/show.jsp</result>  
                <!-- 使用此拦截器 -->  
                <interceptor-ref name="mydefault" />  
            </action> 
    

     另外还有第三部分的自定义拦截器的编写

    转自:http://blog.csdn.net/java_cxrs/article/details/5514340

  • 相关阅读:
    分类模型之支持向量机
    数据预处理
    数据挖掘基本流程
    【项目】项目95
    【项目】项目94
    【项目】项目93
    【项目】项目92
    【项目】项目91
    【项目】项目90
    【项目】项目89
  • 原文地址:https://www.cnblogs.com/shanmao/p/3477527.html
Copyright © 2011-2022 走看看