Как перенести данные из JSP в сервлет при отправке формы HTML - PullRequest
41 голосов
/ 11 февраля 2011

У меня есть страница JSP с HTML-формой:

<form action="SERVLET">
    <input type="text" name="name"/><br>        
    <input type="text" name="group"/>
    <input type="text" name="pass"/>
    <input type="submit" value="submit">            
</form>

Как получить эти данные в сервлете и добавить их в базу данных?

Ответы [ 4 ]

75 голосов
/ 11 февраля 2011

Создайте класс, который расширяет 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.getParameter() для получения отправленного значения из полей с одним значением и 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;
    // ...
}

Выполните при необходимости проверку инаконец сохраните его в БД обычным JDBC / DAO способом.

User user = new User(name, pass, roles);
userDAO.save(user);

См. также:

3 голосов
/ 11 февраля 2011

Ну, есть много онлайн-учебников по java (то, что вы ищете, называется JDBC).Но если вы используете простые сервлеты, у вас будет класс, расширяющий HttpServlet, и внутри него у вас будет два метода, которые выглядят как

public void doPost(HttpServletRequest req, HttpServletResponse resp){

}

и

public void doGet(HttpServletRequest req, HttpServletResponse resp){

}

они вызываются для обработки GET операций, а другая используется для обработки POST операций.Затем вы будете использовать объект HttpServletRequest для получения параметров, которые были переданы как часть формы, например:

String name = req.getParameter("name");

Затем, когда у вас есть данные из формы, их относительно легко добавить.к базе данных с помощью учебника JDBC, который широко доступен в Интернете.Я также предлагаю поискать базовое руководство по сервлету Java, чтобы начать работу.Это очень просто, хотя есть ряд шагов, которые необходимо правильно настроить.

0 голосов
/ 08 февраля 2016

Сначала создайте свой JSP-файл: и напишите текстовое поле, которое вы хотите
Например:

после этого создайте свой класс сервлета:

public class test{

protected void doGet(paramter , paramter){

String name  = request.getparameter("name");
 }

}
0 голосов
/ 11 февраля 2011

http://oreilly.com/catalog/javacook/chapter/ch18.html

Поиск:

"Проблема

Вы хотите обработать данные из формы HTML в сервлете. «

...