读书人

怎么在struts2中登录后跳转到前置页面

发布时间: 2012-09-05 15:19:34 作者: rapoo

如何在struts2中登录后跳转到前置页面
我们定义一个拦截器,拦截器的功能:判断SESSION中是否存在用户登录信息,如果存在,直接执行该请求,如果不存在,则在SESSION中保存该次请求的URL地址,如果我们请求的是一个ACTION,使用request.getHeader("Referer")会返回空值。参考了许多网上写的代码,感觉太复杂了,现在我将拦截器的代码贴出来,供大家参考:

view plaincopy to clipboardprint?package actions;   import javax.servlet.http.HttpServletRequest;   import javax.servlet.http.HttpSession;   import org.apache.struts2.ServletActionContext;   import com.opensymphony.xwork2.ActionInvocation;   import com.opensymphony.xwork2.interceptor.AbstractInterceptor;   public class AuthorizationInterceptor extends AbstractInterceptor   {       private static final long serialVersionUID = 2071704648277594728L;       public String intercept(ActionInvocation invocation) throws Exception           {                HttpServletRequest request=ServletActionContext.getRequest();                             HttpSession session=request.getSession();               //通过session 判断用户是否登录            if(session!=null && session.getAttribute("user")!=null) {                       return invocation.invoke();                }               //设置客户原来请求的url地址               session.setAttribute("url", getGoingURL(request));            return Action.LOGIN;           }                   private String getGoingURL(HttpServletRequest request)           {                String url=request.getHeader("Referer");               if(url==null || url.equals(""))               {                   //如果请求的是ACTION 则通过该代码获取URL地址,当然可以完善其功能                url = request.getContextPath()+request.getServletPath()+"?"+request.getQueryString();                              }               return url;        }   }   


读书人网 >软件架构设计

热点推荐