tomcat 8 jsp javax.servlet.ServletException

tomcat 8 jsp javax.servlet.ServletException,java,jsp,tomcat,servlets,Java,Jsp,Tomcat,Servlets,我不明白这个错误和饼干问题,希望有人能告诉我 当我运行requestDispatcher时,我得到了一个我无法计算的内部错误500。ressource是/WEB-INF/jsp/index.jsp,但在错误消息中显示/WEB-INF/jsp/cookie 错误消息 HTTP状态500-javax.servlet.ServletException: javax.servlet.jsp.JspException:java.io.FileNotFoundException: 请求的资源 (/MyNew

我不明白这个错误和饼干问题,希望有人能告诉我

当我运行requestDispatcher时,我得到了一个我无法计算的内部错误500。ressource是/WEB-INF/jsp/index.jsp,但在错误消息中显示/WEB-INF/jsp/cookie

错误消息

HTTP状态500-javax.servlet.ServletException: javax.servlet.jsp.JspException:java.io.FileNotFoundException: 请求的资源 (/MyNewRandomBlog1.0/WEB-INF/jsp/{cookie=JSESSIONID=4724BBA140EA29EFF07AD782C755ED13, 缓存控制=无缓存,连接=保持活动状态,主机=本地主机:8080, accept language=da,en-US;q=0.7,en;q=0.3,accept=image/jpeg, application/x-ms-application、image/gif、application/xaml+xml、, image/pjpeg,application/x-ms-xbap,application/vnd.ms-excel, application/vnd.ms-powerpoint,application/msword,/, 用户代理=Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.2;Win64; x64;Trident/7.0;ASU2JS),接受编码=gzip,放气, ua cpu=AMD64})不可用

My web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>MyNewRandomBlog1.0</display-name>
  <welcome-file-list>
    <welcome-file>frontpage</welcome-file>
  </welcome-file-list>

  <servlet>
    <servlet-name>intname</servlet-name>
    <servlet-class>dk.danicait.servlets.FrontpageCreation</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>intname</servlet-name>
    <url-pattern>/frontpage</url-pattern>
  </servlet-mapping>
</web-app>
这可以很好地获取ressource url

编辑。添加了servlet代码

public class FrontpageCreation extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext sc = getServletContext();

//      Set request attributes
        request.setAttribute("header", sc.getResource("/includes/nav.jsp").toString());
        request.setAttribute("footer", sc.getResource("/includes/footer.jsp").toString());

//      Request dispatcher
        getServletContext().getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response);
    }

}

问题在于

request.setAttribute("header", sc.getResource("/includes/nav.jsp").toString());
request.setAttribute("footer", sc.getResource("/includes/footer.jsp").toString());
我尝试将这些值传递给

<c:import url="${header}"/>
<c:import url="${footer}"/>


在index.jsp页面中,我认为import语句不理解传递的值的格式。然后他们会给出一条错误消息500。

确保在使用JSP之前在JSP中导入JSTL库

i、 e.将其添加到
index.jsp的顶部

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

拨打此电话之前:

<c:import url="${header}"/>


您将您的serlvet定义为映射到
/frontpage
intname
,因此尝试将其调用为
http://:/MyNewRandomBlog1.0/frontpage
-顺便说一句,
WEB-INF
中的所有资源都受到保护,不能直接从WEB应用程序外部(即从用户的浏览器)访问。谢谢您的回复。据我所知,欢迎文件中的frontpage、/forntpage和intname都是我们所希望的内部值。我也在其他项目中使用这种风格,没有任何问题。我将.jsp文件放在WEB-INF文件中,因此我可以首先执行servlet调用,该调用将依次生成index.jsp和所有其他.jsp页面。因此,动态内容可以插入到页面中,用户无法直接浏览页面。当我调用时,我得到了错误。您可以共享
FrontpageCreation
servlet中的一些代码吗?在最后的原始问题中共享了servlet代码。尝试更改
页眉
页脚
的路径,以在前面包含一个
(点)-如,
/includes/nav.jsp
——或者先尝试删除这两个属性,然后查看简化的
index.jsp
(带有一条简单的hello world消息)正在被正确地提供给浏览器。我在第二行的文档顶部有这个文件,在/WEB-INF/lib/中有.jar文件javax.servlet.jsp.jstl-api-1.2.1.jar和jstl-impl-1.2.jar,但是我仍然收到import语句的错误。在import语句中有一个额外的分号(
),请删除它
<c:import url="${header}"/>