Отображение URL сервлета Java - PullRequest
0 голосов
/ 05 марта 2011

Я довольно плохо знаком с Java сервлетом.

Пожалуйста, прости меня, если этот вопрос кажется глупым.

Я добавил отображение сервлета, такое как класс сервлета и шаблон URL, используя netbeans на вкладке сервлета web.xml, но когда приложение работало, оно не напрямую переходило к целевому URL, который равен http://localhost:8080/HelloDuke2/greeting, http://localhost:8080/HelloDuke2/

Чего мне не хватает в конфигурации?

Как установить начальный URL-адрес на http://localhost:8080/HelloDuke2/greeting?

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>GreetingDukeServlet</servlet-name>
<servlet-class>HelloDuke.GreetingDukeServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>ResponseDukeServlet</servlet-name>
<servlet-class>HelloDuke.ResponseDukeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ResponseDukeServlet</servlet-name>
<url-pattern>/ResponseDukeServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>GreetingDukeServlet</servlet-name>
<url-pattern>/GreetingDukeServlet</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>

Пожалуйста, помогите.

Спасибо.

EDIT:

Я пробовал решение, предоставленное Алексеем Свиридовым, но оно не работает, когда браузер сообщает, что http 404 ресурс недоступен.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <servlet>
        <servlet-name>GreetingDukeServlet</servlet-name>
        <servlet-class>HelloDuke.GreetingDukeServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
        <servlet-name>ResponseDukeServlet</servlet-name>
        <servlet-class>HelloDuke.ResponseDukeServlet</servlet-class>
        <init-param>
            <param-name>Message</param-name>
            <param-value>Hello, PeterWkc</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>GreetingDukeServlet</servlet-name>
        <url-pattern>/GreetingDukeServlet</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>ResponseDukeServlet</servlet-name>
        <url-pattern>/ResponseDukeServlet</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>
</web-app>

index.xhtml

> <?xml version='1.0' encoding='UTF-8'
> ?> <!DOCTYPE html PUBLIC "-//W3C//DTD
> XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <html
> xmlns="http://www.w3.org/1999/xhtml"
>       xmlns:h="http://java.sun.com/jsf/html">
>     <h:head>
>         <title>Hello Duke</title>
>         <meta http-equiv="REFRESH" content="0; url=GreetingDukeServlet/">
>             
>         </meta>
>         
> 
>     </h:head>
>     <h:body>
>         Hello from Facelets
> 
> 
> 
>     </h:body> </html>

Пожалуйста, помогите.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 05 марта 2011

Я вижу страницу Facelets и вижу специфичный для JSF <context-param>, но я не вижу, чтобы JSF FacesServlet определялся в web.xml, но вы играете с другими сервлетами.

Разве вы не смешиваете основные понятия / технологии? Следует признать, что учебник по JSP отсутствует в учебнике по Java EE 6, но для работы с простыми ванильными сервлетами вы обычно используете обычный HTML или JSP вместо Facelets.

В любом случае, чтобы вызвать сервлет по URL, вам необходимо убедиться, что URL соответствует <url-pattern> сервлета, как определено в web.xml. Вы определили свой GreetingDukeServlet для прослушивания URL-адресов, соответствующих /GreetingDukeServlet. Так что вместо этого URL должен быть http://localhost:8080/HelloDuke2/GreetingDukeServlet.

Если вы на самом деле хотите, чтобы URL был http://localhost:8080/HelloDuke2/greeting, вместо этого вы должны изменить <url-pattern> на /greeting.

Смотри также:

1 голос
/ 05 марта 2011

Да, вам нужно определить страницу индекса для вашего веб-приложения, и вы можете сделать перенаправление внутри, например, создать страницу index.html с этим контекстом

<html><head><meta http-equiv="REFRESH" content="0; url=greeting/"></head></html>

, а затем в файле web.xml

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>
1 голос
/ 05 марта 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...