首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

拦截器是Struts2的基础,什么是拦截器呢?(2)

2012-11-01 
拦截器是Struts2的基础,什么是拦截器呢?(二)package tutorial import com.opensymphony.xwork2.ActionSup

拦截器是Struts2的基础,什么是拦截器呢?(二)
package tutorial;

import com.opensymphony.xwork2.ActionSupport;

public class AuthorizatedAccess extends ActionSupport implements RoleAware  {
     private String role;
   
     public void setRole(String role)  {
         this .role = role;
    }
   
     public String getRole()  {
         return role;
    }

    @Override
     public String execute()  {
         return SUCCESS;
    }
}
以下是ShowUser.jsp的代码:

<% @ page  contentType = " text/html; charset=UTF-8 " %>
<% @taglib prefix = " s " uri = " /struts-tags " %>
< html >
< head >
    < title > Authorizated User </ title >
</ head >
< body >
    < h1 > Your role is: < s:property value ="role" /></ h1 >
</ body >
</ html >
然后,创建tutorial.Roles初始化角色列表,代码如下:

package tutorial;

import java.util.Hashtable;
import java.util.Map;


public class Roles  {
     public Map < String, String > getRoles()  {
        Map < String, String > roles = new Hashtable < String, String > ( 2 );
        roles.put( " EMPLOYEE " , " Employee " );
        roles.put( " MANAGER " , " Manager " );
         return roles;
    }
}
接下来,新建Login.jsp实例化tutorial.Roles,并将其roles属性赋予<s:radio>标志,代码如下:

<% @ page  contentType = " text/html; charset=UTF-8 " %>
<% @taglib prefix = " s " uri = " /struts-tags " %>
< html >
< head >
    < title > Login </ title >
</ head >
< body >
    < h1 > Login </ h1 >
    Please select a role below:
    < s:bean id ="roles" name ="tutorial.Roles" />
    < s:form action ="Login" >
        < s:radio list ="#roles.roles" value ="'EMPLOYEE'" name ="role" label ="Role" />
        < s:submit />
    </ s:form >
</ body >
</ html >
创建Action类tutorial.Login将role放到session中,并转到Action类tutorial.AuthorizatedAccess,代码如下:

package tutorial;

import java.util.Map;

import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

public class Login extends ActionSupport implements SessionAware  {
     private String role;   
     private Map session;

     public String getRole()  {
         return role;
    }

      public void setRole(String role)  {
         this .role = role;
    }
   
     public void setSession(Map session)  {
         this .session = session;
    }

    @Override
     public String execute()  {
        session.put( " ROLE " , role);
         return SUCCESS;
    }   
}
最后,配置struts.xml文件,内容如下:

<! DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd" >
< struts >
    < include file ="struts-default.xml" />   
    < package name ="InterceptorDemo" extends ="struts-default" >
        < interceptors >
            < interceptor name ="auth" class ="tutorial.AuthorizationInterceptor" />
        </ interceptors >
        < action name ="Timer" class ="tutorial.TimerInterceptorAction" >
            < interceptor-ref name ="timer" />
            < result > /Timer.jsp </ result >
        </ action >
        < action name ="Login" class ="tutorial.Login" >
            < result type ="chain" > AuthorizatedAccess </ result >
        </ action >
        < action name ="AuthorizatedAccess" class ="tutorial.AuthorizatedAccess" >
            < interceptor-ref name ="auth" />
            < result name ="login" > /Login.jsp </ result >
            < result name ="success" > /ShowRole.jsp </ result >
        </ action >
    </ package >
</ struts >
发布运行应用程序,在浏览器地址栏中输入:http://localhost:8080/Struts2_Interceptor/AuthorizatedAccess.action。由于此时,session还没有键为“ROLE”的值,所以返回Login.jsp页面,如图2所示:


图2 Login.jsp

选中Employee,点击Submit,出现图3所示页面:


图3 ShowRole.jsp

总结
拦截器是Struts 2比较重要的一个功能。通过正确地使用拦截器,我们可以编写高可复用的代码




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2242764

热点排行