【问题标题】:dispatcher.forward() produces HTTP 500dispatcher.forward() 产生 HTTP 500
【发布时间】:2014-04-10 21:46:55
【问题描述】:

考虑层次结构:

我将我的 JSP 从 WEB-INF 移动到 src 文件夹。但是当我尝试 dispatcher.forward() 时,我得到:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
    controller.LoginPage.doPost(LoginPage.java:214)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.50 logs.

Apache Tomcat/7.0.50

指定的异常发生在以下行中:

 String addressPath = "/../view/admin/adminPage.jsp";
 RequestDispatcher dispatcher = request.getRequestDispatcher(addressPath);
 dispatcher.forward(request, response);

如何修复路径?

谢谢

【问题讨论】:

    标签: java http tomcat servlets relative-path


    【解决方案1】:

    您的 JSP 位于源文件夹中这一事实似乎表明它将被放置在

    /WEB-INF/classes/view/admin/
    

    这真的不是哪里

    String addressPath = "/../view/admin/adminPage.jsp";
    

    正在指向它。

    如果 Servlet 容器无法为给定路径返回 RequestDispatcher,则getRequestDispatcher 返回 null

    JSP 不应真正位于/WEB-INF/classes 之下。将它们放在专用文件夹中,例如 /WEB-INF/jsp/view 并在那里访问它们。

    然后您可以使用它访问它

    String addressPath = "/WEB-INF/jsp/view/admin/adminPage.jsp";
    

    【讨论】:

    • 我把文件放在WEB-INFWEB-INF放在src,但是路径"/WEB-INF/jsp/view/admin/adminPage.jsp"不行。
    • @ron 不,src 是 Eclipse 下的源文件夹。使用Dynamic Web Project,Eclipse 将那里的所有内容放入WEB-INF/classes。将 JSP 放入 Web Content,在 WEB-INF 下。
    • 您的意思是无法从src 中访问JSP?
    • @ron 从技术上讲,我认为您应该能够通过/WEB-INF/classes/view/admin/adminPage.jsp 获得它。
    • @ron 不客气,但请不要那样做。 WEB-INF/classes 更适合 Java .class 文件和其他类路径资源。即使 JSP 最终被编译,它们也应该有自己的目录。
    猜你喜欢
    • 2020-12-09
    • 1970-01-01
    • 2017-05-16
    • 2012-06-30
    • 1970-01-01
    • 2013-01-24
    • 2017-07-15
    • 1970-01-01
    • 2012-07-02
    相关资源
    最近更新 更多