Struts2拦截器-实现登录拦截实例

【1】struts.xml:

 

 <!-- 定义一个拦截器 -->  
        <interceptors>  
            <interceptor name="authority"  
                class="org.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="show" class="org.action.showAction">  
            <result name="success">/main.jsp</result>  
            <!-- 使用此拦截器 -->  
            <interceptor-ref name="mydefault" />  
        </action>  
        
        
        <!--验证登录用户信息  -->
        <action name="login" class="org.action.loginAction" method="execute">
            <result name="error">/login.jsp</result>  
            <result name="input">/login.jsp</result> 
        </action>
       

 【2】自定义拦截器org.interceptot.LoginInterceptor:

package org.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;  
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("username");  
  
        // 如果没有登陆,即用户名不存在,都返回重新登陆  
        System.out.println("user:"+user);
        if (user != null) {  
            System.out.println("test");  
            return invocation.invoke();  
        }  
        System.out.println("你还没有登录"); 
        ctx.put("tip", "你还没有登录");  
        return Action.LOGIN;    //返回一个叫login的result结果
  
    }  
  
}  

 【3】进入主页面的Action:org.action.showAction

package org.action;

import com.opensymphony.xwork2.ActionSupport;  

public class showAction extends ActionSupport {  
 public String execute() {  
  return "success";  
 }  
}  

 

 

【4】LoginAction:

private boolean isInvalid(String value) {     
return (value == null || value.length() == 0);     
}  
if (isInvalid(user.getUsername()))   
       return INPUT;     
 if (isInvalid(user.getPassword()))     
       return INPUT;    
 //登录成功将User放入session中
HttpServletRequest request = ServletActionContext.getRequest();
Map  map=ActionContext.getContext().getSession();
map.put("username", user.getUsername());

 转自http://blog.sina.com.cn/s/blog_77cb836301015m3y.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值