У меня есть некоторые проблемы, чтобы понять, как работает отображение URL для сервлетов.

Я смотрел тонны уроков онлайн и постов здесь, но без везения.

Итак, допустим, у меня есть сервлет (WelcomeServlet.java), индексная страница (index.html) и мой файл web.xml.

Файл WelcomeServlet.java находится в каталоге src, а файл index.html - в каталоге WebContent.

Моя индексная страница будет вызываться web.xml и будет отображать кнопку, которая после нажатия отправит запрос на получение сервлету.

Проблема в том, что, как только я нажимаю кнопку, страница не меняется ни в чем, кроме URL, который идет от

http://localhost:8080/WelcomeServlet

Кому

http: // localhost: 8080 / WelcomeServlet /?

Это тело страницы индекса:

<body>
    <form action = "/WelcomeServlet" method = "get">
    <p><label>Click the button to invoke the servlet
            <input type = "submit" value = "Get HTML Document"/>
    </label></p>
    </form>
</body>

И это отображение сервлета web.xml:

<servlet>
        <servlet-name>welse</servlet-name>
        <servlet-class>WelcomeServlet</servlet-class>
</servlet>

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

<welcome-file-list>
        <welcome-file>Index.html</welcome-file>
</welcome-file-list>

Я вполне уверен, что проблема заключается в адресации в действии формы индекса, но я действительно не могу обернуть голову, что я должен поместить туда. Я пробовал несколько путей, но безуспешно.

1
pedro 24 Апр 2017 в 16:51

2 ответа

Лучший ответ

Ты почти там. Просто добавьте ../ в свое действие, чтобы оно могло вернуться на шаг назад. На данный момент он указывает на то же местоположение, что и ваш HTML-файл.

<body>
    <form action = "../WelcomeServlet" method = "get">
    <p><label>Click the button to invoke the servlet
            <input type = "submit" value = "Get HTML Document"/>
    </label></p>
    </form>
</body>
2
Joe 24 Апр 2017 в 14:35

Если исходный каталог по умолчанию в вашей среде IDE установлен в / src, а каталог веб-материалов по умолчанию - / web, то в контексте сервлета просто напишите имя сервлета без "/". Убедитесь, что каталог веб-материалов по умолчанию - WebContent. После этого удалите «/» из атрибута действия из формы.

1
Shankha057 24 Апр 2017 в 14:07
43589985