2015-03-12 3 views
0

Я не понимаю эту ошибку 500 и проблему с файлами cookie, надеясь, что кто-то сможет рассказать мне об этом.tomcat 8 jsp javax.servlet.ServletException

Когда я запускаю свой запросDispatcher, я получаю внутренний erro 500, который я не могу вычислить. Ressource является /WEB-INF/jsp/index.jsp, но в сообщении об ошибке он говорит/WEB-INF/jsp/cookie ???

Сообщение об ошибке

HTTP Status 500 - javax.servlet.ServletException: javax.servlet.jsp.JspException: java.io.FileNotFoundException: запрашиваемый ресурс (/MyNewRandomBlog1.0/WEB -INF/jsp/{cookie = JSESSIONID = 4724BBA140EA29EFF07AD782C755ED13, cache-control = no-cache, connection = Keep-Alive, host = localhost: 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, applyat ion/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, /, user-agent = Mozilla/5.0 (совместим; MSIE 9.0; Windows NT 6.2; Win64; x64; Trident/7.0; ASU2JS), Accept-Encoding = GZIP, выкачать, уа-процессор = AMD64}) не доступен

Мой 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> 

Мой файл дерева

enter image description here

Также я не использую файлы cookie в своей программе, поэтому файл cookie, отображаемый в сообщении, является стандартным файлом cookie?

Просто чтобы убедиться, что файл для RequestDispatcher действительно существует я сделал

String test = sc.getResource("/WEB-INF/jsp/index.jsp").toString(); 

Который работает нормально получать Ressource URL.

Редактировать. Добавлен код сервлета

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); 
    } 

} 
+0

Вы определяете свой serlvet как 'intname' отображается на'/frontpage' так попробуйте вызвать его как 'HTTP:// : /MyNewRandomBlog1.0/frontpage' - btw все ресурсы внутри 'WEB-INF' защищены и недоступны непосредственно из-за пределов веб-приложения (то есть из браузера пользователя) – ochi

+0

Спасибо за ответ Ochi. Поскольку я понимаю главную страницу в файле приветствия,/forntpage и intname - это все внутренние значения, которые могут быть такими, какие мы хотим. Также я использую этот стиль в других проектах без проблем. Я поместил файлы .jsp в файл WEB-INF, поэтому я могу принудительно выполнить вызов сервлета, который, в свою очередь, будет генерировать index.jsp и все другие .jsp-страницы. Таким образом, динамический контент может быть вставлен на страницы, и пользователи не могут напрямую просматривать их. Когда я вызываю http: // localhost: 8080/MyNewRandomBlog1.0/frontpage, я получаю сообщение об ошибке. –

+0

Можете ли вы поделиться некоторым кодом из сервлета 'FrontpageCreation'? – ochi

ответ

0

Проблема заключалась в том, что в

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, где я считаю, оператор импорта не понимает форматирование переданных значений. И их сообщение дает сообщение об ошибке 500.

+0

это решило проблему? – ochi

0

Убедитесь, что вы импортируете библиотеки JSTL в вашем JSP перед использованием их

т.е.добавьте это в верхней части index.jsp

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

перед вызовом этой линии:

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

У меня это в верхней части моего документа на второй строке <% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> и .jar-файлы javax .servlet.jsp.jstl-api-1.2.1.jar и jstl-impl-1.2.jar in/WEB-INF/lib/Но я все еще получаю ошибку с оператором импорта –

+0

, у вас есть дополнительная точка с запятой (' ; ') в вашем заявлении на импорт - удалите его – ochi

Смежные вопросы