仅重定向HTML页面一次

时间:2013-03-22 05:28:51

标签: java javascript html spring jsp

我有使用JSP的Spring应用程序。我需要重定向一个页面,但只需要一次。这是由于春天的安全性 - 一旦用户进入这个页面,我需要调用重定向来记录他,但要保持在同一页面上。有什么办法,如何只通过java,html或js这样做?或者也许我错了 - 必须有一些方法,如何做到这一点,但我不是很喜欢前端技术,所以我很高兴,如果有人可以发布一些代码来告诉我,如何做到这一点工作..谢谢:)

所以用例:用户输入mywebsite.com/login - >在他已经登录的情况下我需要调用重定向来记录他 - >相同的网站应该出现,但现在没有重定向。

PS:我无法将用户重定向到其他网站 - 它必须是具有相同源代码的同一网站。

2 个答案:

答案 0 :(得分:0)

如果我了解您的用例,我宁愿将用户注销为登录操作的一部分(即将登出过程分解出来,并从注销操作以及登录操作中调用它)

如果这不可行(并且我不能解释为什么它不会),我将专注于“重定向,如果他已登录”部分而不是“仅重定向一次”部分 - 前者非常假设您正在使用某种会话来跟踪登录状态,那么几乎不需要对代码进行任何修改就可以轻松检查。

免责声明:我对Sprint几乎一无所知,这些都是非常通用的评论,可以适用于任何经典的网络应用程序。

答案 1 :(得分:-1)

您可以使用过滤器。

@Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
            HttpServletRequest test1=    (HttpServletRequest) arg0;

         test1.getRequestURL()); it gives  http://localhost:8081/applicationName/menu/index.action
         test1.getRequestURI()); it gives applicationName/menu/index.action
         String pathname = test1.getServletPath()); it gives //menu/index.action


        if(pathname.equals("//menu/index.action")){ 
            arg2.doFilter(arg0, arg1); // call to urs servlet or frameowrk managed controller method


            // in resposne 
           HttpServletResponse httpResp = (HttpServletResponse) arg1;
           RequestDispatcher rd = arg0.getRequestDispatcher("another.jsp");  redirect to another page at response time 
           rd.forward(arg0, arg1);





    }

不要忘记将<dispatcher>FORWARD</dispatcher>放在web.xml中的过滤器映射中 如果您不想使用过滤器,可以从urs控制器方法重定向到另一个jsp。