Java 发布以获取重定向

Java 发布以获取重定向,java,spring,jsp,http,Java,Spring,Jsp,Http,在会话到期后的jsp页面上,如果用户执行某些DB操作,Post url HTTP状态显示为302,该状态应重定向到我的注销页面,但由于它是注销的GET调用,因此不会被重定向 如何从POST Http状态302重定向到GET,或者有什么其他方法可以实现此目的?一些评论/建议: 当服务器以附加的方式响应时,它还发送一个位置头,浏览器读取该头并发出另一个GET请求 这就是它通常的工作方式。因此,请确保当您发送http302时,您也会发送一个Location头作为响应,然后浏览器会处理其余的事情 请

在会话到期后的jsp页面上,如果用户执行某些DB操作,Post url HTTP状态显示为302,该状态应重定向到我的注销页面,但由于它是注销的GET调用,因此不会被重定向


如何从POST Http状态302重定向到GET,或者有什么其他方法可以实现此目的?

一些评论/建议:

  • 当服务器以附加的方式响应时,它还发送一个
    位置
    头,浏览器读取该头并发出另一个
    GET
    请求
  • 这就是它通常的工作方式。因此,请确保当您发送
    http302
    时,您也会发送一个
    Location
    头作为响应,然后浏览器会处理其余的事情

请注意,这里我冒昧地假设您可以更改发送
http302
的服务器端代码。如果不是这样,请告诉我

您可以使用如下会话筛选器:

      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);
        }
}
公共类SessionFilter实现过滤器{
私有ArrayList URL列表;
公共空间销毁(){
}
公共无效doFilter(ServletRequest-req、ServletResponse-res、,
FilterChain链)抛出IOException、ServletException{
HttpServletRequest请求=(HttpServletRequest)请求;
HttpServletResponse=(HttpServletResponse)res;
字符串url=request.getServletPath();
布尔allowedRequest=false;
if(urlist.contains(url)){
allowedRequest=true;
}
如果(!allowedRequest){
HttpSession session=request.getSession(false);
if(null==会话){
sendRedirect(“index.jsp”);
}
}
}
链式过滤器(要求、恢复);
}
}
并在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>

会话过滤器
net.viralpatel.servlet.filter.SessionFilter
避免URL
index.jsp
会话过滤器
/*
或者通过在web.xml中放置以下条目来隐藏详细信息:

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

302
/302ErrorPage.jsp

您可以使用,也可以查看您是否有servlet或使用Spring MVC的控制器?我使用的是Spring MVC