Я создал один проект веб-приложения. Это содержит класс сервлета и HTML-форму. Как я называю класс сервлета от HTML-формы?
Просто создайте класс, расширяющий 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.