POST到GET重定向

时间:2014-06-18 06:39:44

标签: java spring jsp http

在jsp页面上会话到期后,如果用户执行某些数据库操作,则邮政URL HTTP状态显示为302,应该重定向到我的注销页面,但由于它是GET调用注销,因此没有被重定向。

如何从POST Http状态302重定向到GET或者可以通过什么方式实现此目的?

2 个答案:

答案 0 :(得分:0)

一些意见/建议:

  • 当服务器以HTTP 302响应时,它还会发送一个Location标头,浏览器会读取该标头并发出另一个GET请求。
  • 这就是它通常的工作方式。因此,请确保在发送HTTP 302时,您还会发送Location标头作为响应,然后其余部分将由浏览器处理。

请注意,我可以自由地假设您可以更改发送HTTP 302的服务器端代码。如果不是,请告诉我。

答案 1 :(得分:0)

您可以使用会话过滤器,如:

      public class SessionFilter implements Filter {

        private ArrayList<String> urlList;

        public void destroy() {
        }

        public void doFilter(ServletRequest req, ServletResponse res,
                FilterChain chain) throws IOException, ServletException {

            HttpServletRequest request = (HttpServletRequest) req;
            HttpServletResponse response = (HttpServletResponse) res;
            String url = request.getServletPath();
            boolean allowedRequest = false;

            if(urlList.contains(url)) {
                allowedRequest = true;
            }

            if (!allowedRequest) {
                HttpSession session = request.getSession(false);
                if (null == session) {
                    response.sendRedirect("index.jsp");
                }
            }
    }

            chain.doFilter(req, res);
        }
}

并在webl.xml中输入

  <filter>
    <filter-name>SessionFilter</filter-name>
    <filter-class>
        net.viralpatel.servlet.filter.SessionFilter
    </filter-class>
    <init-param>
        <param-name>avoid-urls</param-name>
        <param-value>index.jsp</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>SessionFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

或者通过在web.xml中放置以下条目来隐藏详细信息:

  <error-page>
        <error-code>302</error-code>
        <location>/302ErrorPage.jsp</location>
    </error-page>