struts2拦截器

做一个项目时遇到一个问题,需要拦截未登录的用户通过地址栏直接访问网络上的资源,解决办法是定义自己的拦截器,但要放过登录的action,把自定义的拦截器和默认的拦截器栈重新组合定义成默认的拦截器栈

拦截器的代码:

package chao.tool;

import java.util.Map;

//判断用户是否登录
public class MyInterceptor extends AbstractInterceptor
{

	@Override
	public String intercept(ActionInvocation invocation) throws Exception
	{
		// 获得拦截到的action名称
		String actionName = invocation.getInvocationContext().getName();
		// 如果拦截到的action是请求登录的action,则放行.
		if ("login".equals(actionName))
		{
			return invocation.invoke();
		}
		//从Session中取得用户信息,判断用户是否登录
		Map session = invocation.getInvocationContext().getSession();
		Dlb user = (Dlb) session.get("user");
		if (user == null)
		{       
			return Action.LOGIN;
		}
		// 执行下一个拦截器或执行Action的Execute方法
		return invocation.invoke();
	}

}

struts.xml中的配置:

 
        
         
             
             
             
               
               
             
         
         
         
         
         
             /login.jsp
             /error.jsp
         



你可能感兴趣的:(JAVAEE,struts,action,interceptor,exception,session,string)