Ответ 1
Создайте класс, который расширяет HttpServlet
и помещает @WebServlet
, в котором содержится желаемый URL-адрес сервлета, который должен прослушивать.
@WebServlet("/yourServletURL")
public class YourServlet extends HttpServlet {}
И просто отпустите <form action>
пункт в этот URL. Я бы также рекомендовать использовать метод POST для не-идемпотентных запросов. Вы должны убедиться, что указали атрибут name
полей ввода формы HTML (<input>
, <select>
, <textarea>
и <button>
). Это представляет собой имя параметра запроса HTTP. Наконец, вам также необходимо убедиться, что интересующие поля ввода заключены в желаемую форму и, следовательно, не снаружи.
Вот несколько примеров различных полей ввода HTML-формы:
<form action="${pageContext.request.contextPath}/yourServletURL" method="post">
<p>Normal text field.
<input type="text" name="name" /></p>
<p>Secret text field.
<input type="password" name="pass" /></p>
<p>Single-selection radiobuttons.
<input type="radio" name="gender" value="M" /> Male
<input type="radio" name="gender" value="F" /> Female</p>
<p>Single-selection checkbox.
<input type="checkbox" name="agree" /> Agree?</p>
<p>Multi-selection checkboxes.
<input type="checkbox" name="role" value="USER" /> User
<input type="checkbox" name="role" value="ADMIN" /> Admin</p>
<p>Single-selection dropdown.
<select name="countryCode">
<option value="NL">Netherlands</option>
<option value="US">United States</option>
</select></p>
<p>Multi-selection listbox.
<select name="animalId" multiple="true" size="2">
<option value="1">Cat</option>
<option value="2">Dog</option>
</select></p>
<p>Text area.
<textarea name="message"></textarea></p>
<p>Submit button.
<input type="submit" name="submit" value="submit" /></p>
</form>
Создайте метод doPost()
в вашем сервлете, который захватывает представленные входные значения в качестве параметров запроса, введенных с помощью поля ввода name
( не id
!). Вы можете использовать request.getParmeter()
для получения переданного значения из полей с одним значением и request.getParameterValues()
для получения переданных значений из полей с несколькими значениями.
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String pass = request.getParameter("pass");
String gender = request.getParameter("gender");
boolean agree = request.getParameter("agree") != null;
String[] roles = request.getParameterValues("role");
String countryCode = request.getParameter("countryCode");
String[] animalIds = request.getParameterValues("animalId")
String message = request.getParameter("message");
boolean submitButtonPressed = request.getParameter("submit") != null;
// ...
}
Сделайте, если необходимо, validation и, наконец, сохраните его в БД обычным JDBC/DAO.
User user = new User(name, pass, roles);
userDAO.save(user);
См. также:
- учебник для начинающих HTML
- Наша страница вики-сервлетов
- doGet и doPost в сервлетах
- Как я могу вызвать конкретный метод Java в событии click/submit определенной кнопки в JSP?
- Как выполнить проверку и отображение сообщения об ошибке в той же форме в JSP?
- Как сохранить значения полей формы HTML в JSP после отправки формы на Servlet?
- Как загрузить файлы на сервер с помощью JSP/Servlet?
- Показать JDBC ResultSet в HTML на странице JSP с использованием шаблонов MVC и DAO
- Возврат сервлета "HTTP-статус 404 Запрошенный ресурс (сервлет) недоступен"