Как назвать класс сервлета от HTML-формы

Я создал один проект веб-приложения. Это содержит класс сервлета и HTML-форму. Как я называю класс сервлета от HTML-формы?

12
задан BalusC 22 February 2016 в 18:54
поделиться

1 ответ

Просто создайте класс, расширяющий HttpServlet и аннотируйте его @WebServlet на определенном шаблоне URL.

@WebServlet("/login")
public class LoginServlet extends HttpServlet {}

Или, если вы все еще используете Servlet 2.5 или старше (аннотация появилась в Servlet 3.0), то зарегистрируйте сервлет как в web.xml и привяжите его к определенному шаблону URL через .

<servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>com.example.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/login</url-pattern>
</servlet-mapping>

Затем просто позвольте HTML-ссылке или действию формы указывать на URL, который соответствует url-pattern сервлета.

<a href="${pageContext.request.contextPath}/login">Login</a>
<form action="${pageContext.request.contextPath}/login" method="post">
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit">
</form>

При использовании кнопок отправки убедитесь, что вы используете type="submit", а не type="button". Объяснение части ${pageContext.request.contextPath} можно найти в этом связанном вопросе и ответе: Как использовать шаблон URL сервлета в действии HTML-формы без получения ошибки HTTP 404.

Ссылки и формы с method="get" будут вызывать doGet() метод сервлета. Обычно вы используете этот метод для предварительной обработки запроса "при загрузке страницы".

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // ...
}

Формы с method="post" будут вызывать doPost() метод сервлета. Обычно этот метод используется для постобработки запроса с данными формы, отправленными пользователем (сбор параметров запроса, их преобразование и проверка, обновление модели, вызов бизнес-действия и, наконец, вывод ответа).

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // ...
}

Чтобы узнать больше о сервлетах и найти более конкретные примеры, посетите нашу вики-страницу Servlets. Следует отметить, что вы также можете использовать JSP-файл вместо обычного HTML-файла. JSP позволяет вам взаимодействовать с бэкендом с помощью EL-выражений, создавая при этом HTML-вывод, и использовать такие теглибы, как JSTL, для управления потоком. См. также нашу вики-страницу JSP.

26
ответ дан 2 December 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: