繁体   English   中英

仅重定向HTML页面一次

[英]Redirecting HTML page only once

我有使用JSP的Spring应用程序。 而且我需要重定向一页,但只能重定向一次。 这是由于spring的安全性-用户进入此页面后,我需要调用重定向将其注销,但要保留在同一页面上。 有什么办法,如何仅通过java,html或js做到这一点? 或也许我问错了-一定有某种方法,该怎么做,但是我对前端技术并不十分了解,所以我很高兴,如果有人可以发布一些代码向我展示,如何做到这一点工作..谢谢:)

因此,用例:用户键入mywebsite.com/login->如果他已经登录,我需要调用redirect来注销他->应该会出现相同的站点,但现在没有重定向。

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

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

如果那不可行(并且我不能说为什么不这样做),我将专注于“如果他已登录则重定向”部分,而不是“仅重定向一次”部分-前者很容易检查假设您正在使用某种会话来跟踪登录状态,而无需对代码进行几乎任何修改。

免责声明:我对Sprint几乎一无所知,这些都是非常普通的评论,应该适用于任何经典的Webapp。

您可以使用filter。

@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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM