Помощь в создании сервлета в существующем проекте jsf

#java #jsf #servlets

#java #jsf #сервлеты

Вопрос:

Я пытаюсь создать сервлет внутри проекта JSF. Это первый сервлет, который я создал и использую http://www.servletworld.com/servlet-tutorials/simple-servlet-example.html в качестве примера, который поможет мне начать.

Единственное, что моя структура папок немного отличается из-за существующего jsf.

Я могу получить form.html страница для отображения, но когда я ввожу свое имя и нажимаю отправить, я получаю 404.

Моя структура папок следующая (показаны только соответствующие файлы)


 catalog (my project in eclipse)
- src
  - a
    - b
      - c
        - catalog
          - backing
            - WelcomeServlet.java
- WebContent
  - catalog
    - form.html
  - WEB-INF
    - web.xml
    - classes
      - a
        - b
          - c
            - catalog
              - backing
                - WelcomeServlet.class
  

Вот сопоставления сервлетов в web.xml

 <servlet>
    <servlet-name>WelcomeServlet</servlet-name>
    <servlet-class>a.b.c.catalog.backing.WelcomeServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>WelcomeServlet</servlet-name>
    <url-pattern>/WelcomeServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
    <welcome-file>/form.html </welcome-file>
</welcome-file-list>

<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>

<welcome-file-list>
    <welcome-file>/index.jsp</welcome-file>
    <welcome-file>/index.html</welcome-file>
</welcome-file-list>
  

Этот URL выводит form.html страница в порядке http://localhost:8080/catalog/catalog/form.html

Когда вы нажимаете кнопку отправки, появляется URL http://localhost:8080/catalog/catalog/WelcomeServlet и это выдает ошибку 404. Я думаю, что в моем web.xml файл, но я не уверен, и я не могу в этом разобраться.

Спасибо

Комментарии:

1. Есть ли у вас какие-либо другие сопоставления сервлетов, объявленные в web.xml ?

2. ДА. Я отредактировал вопрос с остальными сопоставлениями сервлетов для части jsf.

Ответ №1:

Попробуйте добавить это после первого сопоставления сервлета:

 <servlet-mapping>
    <servlet-name>WelcomeServlet</servlet-name>
    <url-pattern>/catalog/WelcomeServlet</url-pattern>
</servlet-mapping>
  

Комментарии:

1. Это работает, но я бы счел это обходным путем. Я не могу представить, что URL catalog / каталог / WelcomeServlet был бы намерением разработчика.

2. Необходимо прояснить некоторые вопросы о пути: корень контекста, вероятно, мог бы быть более чистым, но я ожидаю, что конкретный артефакт основан на том, как страница JSP генерирует ссылки. Если JSP не выполняет удвоение в корневом каталоге контекста, то дополнительный каталог не обязательно должен быть там.

Ответ №2:

Из того, что я вижу, ваш сервлет сопоставлен с contextroot / WelcomeServlet, и вы переходите к contextroot / catalog / WelcomeServlet. Это не одно и то же.

Я предполагаю, что вы забыли косую черту в своем html.

Комментарии:

1. Извините, но я не понимаю, что нужно сделать. Не могли бы вы, пожалуйста, пояснить?