Подтвердить что ты не робот

Сервлет 3.0 @WebServlet use..what будет в web.xml?

Я хочу знать структуру каталогов для использования сервлета 3.0 с Tomcat 7. Я использовал аннотацию @WebServlet без параметров инициализации.

Я хочу знать, что должно быть написано в файле web.xml, а затем? Есть и еще предстоит написать...??

Файл хранится в папке классов tomcat.

4b9b3361

Ответ 1

Это все, что вам нужно в web.xml:

<web-app 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"
  version="3.0">

3.0-совместимый контейнер сервлетов (например, Tomcat 7) автоматически найдет @WebServlet.

Ответ 2

Я прочитал ответ Томаша Нуркевича, который до сих пор поддерживался 22 людьми. Обратите внимание, он ответил 4 года назад.

Я задавался вопросом, зачем мне нужен почти пустой xml файл?

И я попробовал с миром привет с Servlet 3.

package com.servlet3;


import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/helloServlet3")
public class HelloServlet3 extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        out.print("<html><body>");
        out.print("<h3>Hello Servlet</h3>");
        out.print("</body></html>");
    }
}

И я могу успешно запустить это крошечное веб-приложение.

введите описание изображения здесь

Важное примечание:

Обратите внимание, что в этом примере нет web.xml.

введите описание изображения здесь

Итак, мы не нуждаемся в этом почти-пустом web.xml.

, но web.xml обязательный, если требуется проверка подлинности на основе форм (но без Spring), потому что есть нет эквивалентной аннотации для <login-config > .

В соответствии с этим сообщением в fooobar.com/info/437252/...

<login-config>
  <auth-method>FORM</auth-method>
  <form-login-config>
    <form-login-page>/login</form-login-page>
    <form-error-page>/login?event=Retry</form-error-page>
  </form-login-config>
</login-config>

... единственный способ настройки проверки на основе форм - это использовать дескриптор развертывания (web.xml или web-fragment.xml).

Согласно спецификации JSR-315 Servlet 3.0:: Ch13.6.3 (pg132):

"Дескриптор развертывания веб-приложения содержит записи для формы входа и страницы ошибки..."

Спецификация только относится к дескриптору веб-развертывания для конфигурации формы входа и не к какой-либо аннотации.

UPDATE:

Вышеуказанная информация о ударе связана с Java EE6.

В Java EE7, мы можем выполнить проверку подлинности на основе форм .

Из официального руководства Java EE7

48.3.1 Программирование пользователей с помощью Authenticating

Следующие методы интерфейса HttpServletRequest позволяют вам для программной аутентификации пользователей для веб-приложения.

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

login позволяет приложению собирать имя пользователя и пароль в качестве альтернативы для указания проверки подлинности на основе форм в приложении дескриптор развертывания.

logout позволяет приложению reset идентификатор вызывающего абонента запрос.