【发布时间】:2014-07-30 03:20:02
【问题描述】:
我需要在 tomcat 会话超时后向用户提供错误页面。因此,为了处理这个问题,创建了一个过滤器并添加了一些逻辑来检测这个,然后我说去错误页面。
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain chain) throws IOException, ServletException {
M_log.debug("startFilter");
HttpServletRequest request=(HttpServletRequest)arg0;
HttpServletResponse response=(HttpServletResponse)arg1;
String title = request.getParameter("context_title");
TcSessionData tcSession = (TcSessionData) request.getSession.getAttribute("TcSessionData");
if((title!=null && tcSession==null) || (title==null && tcSession!=null) ){
chain.doFilter(request, response);
}else if(title==null && tcSession==null) {
//response.sendRedirect("/error/error.jsp");
request.getRequestDispatcher("/error/error.jsp").forward(request, response);
}
}
会话超时后,我看到它会正确“如果”逻辑,它不会转发/重定向到我的 error.jsp。它给出了 404 错误。我尝试了页面的重定向和转发,但没有成功。我厌倦了 error.jsp 页面的绝对路径和相对路径,但我仍然看到 404 错误说它找不到 error.jsp 页面。我也试过把error.jsp的各个位置放在webapps目录下还是不行
我的应用程序只有一个名为 root.jsp 的页面。当会话超时时,应用程序将始终是 root.jsp,超时后我写信转到 error.jsp。
这是我的web.xml
<filter>
<filter-name>CheckSessionExpirationFilter</filter-name>
<filter-class>lti.google.CheckSessionExpirationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CheckSessionExpirationFilter</filter-name>
<servlet-name>GoogleDriveLti</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>GoogleDriveLti</servlet-name>
<servlet-class>lti.google.GoogleLtiServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>GoogleDriveLti</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>1</session-timeout> <!-- in minutes -->
</session-config>
这是我的文件夹结构
【问题讨论】:
-
根应用程序在
webapps/ROOT下而不是在 webapps 下。你不应该把你的 WEB-INF 放在 webapps 下。 -
使用 response.sendRedirect("/error/error.jsp");并发布您的地址栏完整 URL
-
@Tusar:这是网址。 localhost:8080/google-drive-lti/service。我正在使用 response.sendRedirect("/error/error.jsp");但仍然没有运气
-
@developerwjk:webapps目录下有WEB-INF有什么问题?
-
@developerwjk:根应用程序在 webapps/ROOT 下,而不是在 webapps 下?你是什么意思?我很困惑。
标签: jsp session tomcat servlets servlet-filters