【问题标题】:How to check if 404 coming only for jsp page如何检查 404 是否仅适用于 jsp 页面
【发布时间】:2014-01-13 10:00:15
【问题描述】:

我正在处理 jsp/tomcat 中的错误。我的 web.xml 是这样的。

<servlet>
        <description></description>
        <display-name>ErrorServlet</display-name>
        <servlet-name>ErrorServlet</servlet-name>
        <servlet-class>
                com.nsn.flexi.webtest.ErrorServlet
        </servlet-class>
        </servlet>
       <servlet-mapping>
        <servlet-name>ErrorServlet</servlet-name>
        <url-pattern>/ErrorServlet</url-pattern>
        </servlet-mapping>
    <error-page>
        <error-code>404</error-code>
        <location>/ErrorServlet</location>
    </error-page>

还有几个错误代码。如果状态为 404,我想将用户重定向到 Servlet 中的错误页面。

Integer statusCode = (Integer)
    request.getAttribute("javax.servlet.error.status_code");
        switch(statusCode){
        case 403:
            System.out.println("error 403 --");
            break;
        case 404:
            System.out.println("error 404 ");
        **//SEND REDIRECT**
            break;
        default:
            System.out.println("default error");
        }

我的问题是,如果在 jsp 中找不到一些 java 脚本,这段代码也会被执行。 无论如何,只有当 JSP 或 Servlet 出现 404 错误时,我才能执行此代码。

【问题讨论】:

  • 你为什么不首先确保你的 Javascript 文件被找到?
  • 因为webapp可以自定义。用户必须添加一个配置 js 文件。如果未找到,则使用默认设置。
  • 我认为BalusC & Bozho 可以帮助你。 stackoverflow.com/questions/4948275/… 。获取 url 并确定它是否是导致 404 的 jsp。
  • @BalusC。你能帮忙吗?

标签: java jsp tomcat servlets


【解决方案1】:

你的 web.xml 应该是这样的

<error-page>
    <error-code>404</error-code>
    <location>/ErrorServlet?error=404</location>
</error-page>
<error-page>
    <error-code>405</error-code>
    <location>/ErrorServlet?error=405</location>
</error-page>

这里是你通过参数传递的错误代码。

您可以通过 servlet 请求访问参数。 您访问请求的代码应如下所示

Integer statusCode = (Integer) request.getAttribute("error")
        switch(statusCode){
        case 403:
            System.out.println("error 403 --");
            break;
        case 404:
            System.out.println("error 404 ");
             **//SEND REDIRECT**
            break;
        default:
            System.out.println("default error");
        }

statusCode 变量中会有错误代码,现在可以轻松使用了。

谢谢

【讨论】:

  • 我可以通过这个获取错误代码——request.getAttribute("javax.servlet.error.status_code");我想知道这个错误是否只针对jsp
  • 当然错误只会出现在 JSP 而不是 Javascript
  • WEB-INF文件夹中不存在JS文件,因此它只会为JSP提供错误代码
  • 嗯,来了,jsps不在WEB-INF文件夹,结构是WebContent/js-img-css-jsp/
【解决方案2】:

如果 url 不正确,我不认为会出现 404 错误,这意味着如果请求的资源未创建,或者某些脚本丢失, 但是我们无法区分是因为缺少脚本还是jsp...

【讨论】:

  • 它来了。我已经测试过了。
猜你喜欢
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
  • 2019-08-11
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
  • 2013-05-07
相关资源
最近更新 更多