как ссылаться на файл более высокой иерархии в проекте сервлета Java - PullRequest
0 голосов
/ 02 декабря 2011

Я пытаюсь реализовать базовый шаблон MVC для проекта веб-приложения Java в NetBeans.у меня правильный дескриптор развертывания (web.xml), но я не могу перенаправить на правильный jsp из самого сервлета java.вот каталог моей папки проекта:

/project
  /src
    /conf
      MANIFEST.MF
    /java
      /ph
        /com
          /client
            /esurvey
              /objects
                /* other .java files */
              /servlets
                ManageSurveysServlet.java
                /* other .java files */
  /build
    /empty
    /web
     index.jsp
     manage_surveys.jsp
     script.js
     style.css
     /META-INF
       context.xml
       MANIFEST.MF
     /WEB-INF
       web.xml
       /classes
         .netbeans_update_resources
         .netbeans_automatic_build
         /ph
           /com
             /client
               /esurvey
                 /objects
                   /* .class files found here */
                 /servlets
                   ManageSurveysServlet.class
                   /* other .class files found here */

ссылка из index.jsp вызывает ManageSurveysServlet, который, в свою очередь, перенаправляет объект request и перенаправляет на manage_surveys.jsp, но с учетом вышеуказанных каталоговя не знаю, какой путь / имя файла использовать для ссылки manage_surveys.jsp из сервлета.Вот код в сервлете, который перенаправляет объект запроса:

request.setAttribute("surveys", surveys); // surveys is an arraylist
RequestDispatcher dispatcher = request.getRequestDispatcher("manage_surveys.jsp"); // i'm guessing it can't find the jsp
dispatcher.forward(request, response);

ОБНОВЛЕНИЕ: web.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <servlet-name>ManageSurveysServlet</servlet-name>
    <servlet-class>ph.com.client.esurvey.servlets.ManageSurveysServlet</servlet-class>
  </servlet>
  <servlet-mapping>
     <servlet-name>ManageSurveysServlet</servlet-name>
     <url-pattern>/ManageSurveys</url-pattern>
  </servlet-mapping>
  <session-config><session-timeout>30</session-timeout></session-config>
  <welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

Ответы [ 2 ]

2 голосов
/ 02 декабря 2011

Переместить manage_surveys.jsp в папку WEB-INF. Я думаю, что это будет решением.

0 голосов
/ 02 декабря 2011

Javadoc говорит, что данный ресурс является относительным путем.Таким образом, выполнение в dir классов означает, что вы должны либо поместить свой jsp в dir «classes», но это не очень хорошая идея, но по причинам тестирования вы можете попытаться изменить свой код на контекстный корень относительно:*

или относительный:

RequestDispatcher dispatcher = request.getRequestDispatcher("../../manage_surveys.jsp");

Javadoc для справки: http://docs.oracle.com/javaee/5/api/javax/servlet/ServletRequest.html#getRequestDispatcher(java.lang.String)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...