拦截器再应用学习

拦截器
如果用户登录后可以访问action中的所有方法
user.jsp{
request.getSession().setAttribute(
"user""itcast");
//专门设置用户是否登录状态,session来专门标注用户是否登录
}
退出登录
quit.jsp{
request.getSession().removeAttribute(
"user");
//将session去掉就行了..
}
如果用户没有登录不允许访问action中的方法,并且提示

1.定义拦截器
1.1实现com.opensymphony.xwork2.ActionInvocation.Interceptor接口
    @Override
    
public void destroy() {//当此类被摧毁的时候执行
        
    }

    @Override
    
public void init() {//实例化自动执行
        
    }
public String intercept(ActionInvocation invocation) throws Exception {
        
// TODO Auto-generated method stub
        Object user = ActionContext.getContext().getSession().get("user");
        
if(user!=null)//判断用户是否登录
            invocation.invoke();//执行被拦截到的方法,不掉用,被拦截的action方法

不会被执行
        ActionContext.getContext().put(
"message""you have not right");
        
return "success";//定义全局
    }//当拦击到action就会执行此方法
1.2注册拦截器 在struts的package中注册拦截器
<package name="employee" namespace="/control/employee" extends="struts-default">
        
<interceptors> <!-- 注册拦截器 -->
            
<interceptor name="permission" 

class="cn.itcast.interceptor.PermissionInterceptor"></interceptor>
            
<!-- 使用拦截器栈可以使用自定义拦截器,且 不失去系统自定义拦截器功能 

-->
            
<interceptor-stack name="permissionStack">
                
<!-- 系统默认拦截器 -->
                
<interceptor-ref name="defaultStack"></interceptor-ref>
                
<!-- 自定义拦截器的引入 -->
                
<interceptor-ref name="permission"></interceptor-ref>
            
</interceptor-stack>
        
</interceptors>
        
<!--默认包里面全用此拦截器  1 与 @@对应-->
        
<default-interceptor-ref name="permissionStack"></default-interceptor-ref>
        
<global-results>
            
<result name="success">/WEB-INF/page/message.jsp</result>
        
</global-results>
        
        
        
<action name="list_*" class="cn.itcast.action.HelloWorldAction" 

method
="{1}">
            
<!-- 使用拦截器 @@ -->
            
<!-- <interceptor-ref name="permissionStack"></interceptor-ref>
            
<interceptor-ref name="增加自定义新拦截器"></interceptor-ref> -->
        
</action>
    
</package>

1.3 需要定义拦截器栈,否则自定义拦截器会覆盖struts自带的拦截器,使struts失去自身的拦截器功能
/control/employee

posted on 2012-06-07 11:55 youngturk 阅读(165) 评论(0)  编辑  收藏 所属分类: struts2


只有注册用户登录后才能发表评论。


网站导航:
 
<2012年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

公告

this year :
1 jQuery
2 freemarker
3 框架结构
4 口语英语

常用链接

留言簿(6)

随笔分类

随笔档案

文章分类

文章档案

相册

EJB学习

Flex学习

learn English

oracle

spring MVC web service

SQL

Struts

生活保健

解析文件

搜索

最新评论

阅读排行榜

评论排行榜