Сервлет 3.0 @WebServlet use..what будет в web.xml?
Я хочу знать структуру каталогов для использования сервлета 3.0 с Tomcat 7.
Я использовал аннотацию @WebServlet без параметров инициализации.
Я хочу знать, что должно быть написано в файле web.xml, а затем?
Есть и еще предстоит написать...??
Файл хранится в папке классов tomcat.
Ответы
Ответ 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 идентификатор вызывающего абонента запрос.