struts2中的拦截器

今天写了个用户登录的拦截器,就是对于只有登录之后才能访问的界面,若用户没登录则不能访问,只能转到登陆界面进行登录,有几点理解与迷惑之处,写下来让大家点评一下下:

1.如果用户在登录界面请求登录:login,则返回returninvocation.invoke();表示继续执行配置文件中这个拦截器下边的内容,在执行invocation.invoke()时,本拦截器下面的内容都会执行,知道最后执行action,action会返回一个result,这个result就等于return invocation.invoke()的值。1->2-action->2->1

2.如果用户进行非法访问,则return "login";这个login也是一个result,在配置文件的action里有很多的result,<resultname="login">/success.jsp</result>。

3.

// Map session =    (Map)ac.get(ServletActionContext.SESSION);

            Map session=ActionContext.getContext().getSession();//

这两句有什么不同呢?一般是怎么使用?

看代码:

if (name.equals("login"))
		 {
             // 如果用户想登录,则使之通过,会执行配置文件里拦截器后面的内容
			
             return invocation.invoke();
         } else {
             // 取得Session。
             ActionContext ac = invocation.getInvocationContext();
            // Map session =    (Map)ac.get(ServletActionContext.SESSION);
             Map session=ActionContext.getContext().getSession();//
 
             if (session == null) 
             {
                 // 如果Session为空,则让用户登陆。          	
                 return "login";
             } 
             else 
             {
                 User user = (User) session.get("user");
              
                 if (user == null) {
                     // Session不为空,但Session中没有用户信息,
                     // 则让用户登陆
                	 System.out.println("请求了,但是用户没登陆");
                	
                     return  "login";
                 } else {
                     // 用户已经登陆,放行~
                	 System.out.println("放行了");
                	 
                	 String result=invocation.invoke();
                	
                     return result;
                 }
             }
         }


























                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值