Ответ 1
Просто создайте класс, расширяющий HttpServlet
и аннотируйте его @WebServlet
по определенному шаблону URL.
@WebServlet("/login")
public class LoginServlet extends HttpServlet {}
Или когда вы все еще на Servlet 2.5 или старше (аннотация была новой с сервлета 3.0), затем зарегистрируйте сервлет как <servlet>
в web.xml
и сопоставьте его по определенному шаблону URL через <servlet-mapping>
.
<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 или форму action на 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-вывода и использовать taglib, такие как JSTL, для управления потоком. См. Также нашу страницу вики JSP.