您的位置:首页 > 编程语言 > Java开发

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

2014-08-08 07:51 369 查看
版本:struts2.1.6

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

代码如下:

一、页面

login.jsp

[xhtml]
view plaincopy

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>    
    <title>yuewei'Login</title>   
    <!-- 
    <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> 
    -->  
  </head>  
    
  <body>  
  <form action="login.action" method="post">  
  User:<input type="text" name="username"><br>  
  Passoword:<input type="password" name="password"><br>  
  <input type="submit" value="submit">  
  </form>  
     
</body>  
</html>  

welcome.jsp

[xhtml]
view plaincopy

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>  
     
    <title> yuewei's Welcome</title>  
      
 <!-- 
 <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> 
 -->  
  
  </head>  
    
  <body>  
  <h1>登录成功后显示此页面</h1>  
  <a href="show.action" mce_href="show.action">show</a>  
  </body>  
</html>  

show.jsp

[xhtml]
view plaincopy

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>  
      
    <title>yuewei's Show</title>  
      
    <!-- 
    <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> 
    -->  
  
  </head>  
    
  <body>  
    Show This Page   
        登录后执行此页面<br>  
  </body>  
</html>  

 

二、Action

LoginFormAction

[java]
view plaincopy

package com.ywjava.action;  
  
import com.opensymphony.xwork2.ActionSupport;  
  
public class LoginFormAction extends ActionSupport {  
    public String exexcute() {  
        return "success";  
    }  
}  

LoginAction

[java]
view plaincopy

package com.ywjava.action;  
  
import com.opensymphony.xwork2.ActionContext;  
import com.opensymphony.xwork2.ActionSupport;  
import com.ywjava.utils.Constants;  
  
public class LoginAction extends  ActionSupport{  
private String username;  
private String password;  
public String getPassword() {  
    return password;  
}  
public void setPassword(String password) {  
    this.password = password;  
}  
public String getUsername() {  
    return username;  
}  
public void setUsername(String username) {  
    this.username = username;  
}  
  
private boolean isInvalid(String value) {     
    return (value == null || value.length() == 0);     
}     
public String execute(){  
        System.out.println(username);  
        System.out.println(password);  
          
         if (isInvalid(getUsername()))     
                return INPUT;     
        
            if (isInvalid(getPassword()))     
                return INPUT;     
        
  
    if(this.getUsername().equals("yuewei")&& this.getPassword().equals("yuewei")){  
        ActionContext.getContext().getSession().put(Constants.USER_SESSION,getUsername());  
        ActionContext.getContext().getSession().put(Constants.PASS,getPassword());  
        return "success";  
    }  
    return "error";  
}  
}  

ShowAction

[java]
view plaincopy

package com.ywjava.action;  
  
import com.opensymphony.xwork2.ActionSupport;  
  
public class ShowAction extends ActionSupport {  
 public String execute() {  
  return "success";  
 }  
}  

三、拦截器

[java]
view plaincopy

package com.ywjava.interceptot;  
  
import java.util.Map;  
  
import com.opensymphony.xwork2.Action;  
import com.opensymphony.xwork2.ActionContext;  
import com.opensymphony.xwork2.ActionInvocation;  
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;  
import com.ywjava.utils.Constants;  
  
public class LoginInterceptor extends AbstractInterceptor {  
  
    @Override  
    public String intercept(ActionInvocation invocation) throws Exception {  
  
        // 取得请求相关的ActionContext实例  
        ActionContext ctx = invocation.getInvocationContext();  
        Map session = ctx.getSession();  
        String user = (String) session.get(Constants.USER_SESSION);  
  
        // 如果没有登陆,或者登陆所有的用户名不是yuewei,都返回重新登陆  
  
        if (user != null && user.equals("yuewei")) {  
            System.out.println("test");  
            return invocation.invoke();  
        }  
  
        ctx.put("tip", "你还没有登录");  
        return Action.LOGIN;  
  
    }  
  
}  

四 struts.xml

[c-sharp]
view plaincopy

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE struts PUBLIC  
    "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"  
    "http://struts.apache.org/dtds/struts-2.1.dtd">  
<struts>  
    <package name="authority" extends="struts-default">  
      
        <!-- 定义一个拦截器 -->  
        <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>  
  
        <!-- 定义全局Result -->  
        <global-results>  
            <!-- 当返回login视图名时,转入/login.jsp页面 -->  
            <result name="login">/login.jsp</result>  
        </global-results>  
  
        <action name="loginform"  
            class="com.ywjava.action.LoginFormAction">  
            <result name="success">/login.jsp</result>  
        </action>  
          
        <action name="login" class="com.ywjava.action.LoginAction">  
            <result name="success">/welcome.jsp</result>  
            <result name="error">/login.jsp</result>  
            <result name="input">/login.jsp</result>  
        </action>  
  
        <action name="show" class="com.ywjava.action.ShowAction">  
            <result name="success">/show.jsp</result>  
            <!-- 使用此拦截器 -->  
            <interceptor-ref name="mydefault" />  
        </action>  
          
    </package>  
</struts> 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: