在jsp页面上会话到期后,如果用户执行某些数据库操作,则邮政URL HTTP状态显示为302,应该重定向到我的注销页面,但由于它是GET调用注销,因此没有被重定向。
如何从POST Http状态302重定向到GET或者可以通过什么方式实现此目的?
答案 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>