Jak przesłać dane z JSP do servleta podczas przesyłania formularza HTML

Mam stronę JSP z formularzem 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>

Jak uzyskać te dane w servlecie i dodać je do bazy danych?

Author: BalusC, 2011-02-11

4 answers

Tworzenie klasy, która rozszerza HttpServlet i umieścić @WebServlet adnotacja na nim zawierająca żądany adres URL, na którym serwlet powinien nasłuchiwać.

@WebServlet("/yourServletURL")
public class YourServlet extends HttpServlet {}

I niech <form action> wskaż na ten adres URL. Chciałbym również polecić użycie metody POST dla nie idempotentnych żądań. Upewnij się, że podałeś atrybut name pól wejściowych formularza HTML(<input>, <select>, <textarea> i <button>). Przedstawia nazwę parametru HTTP request. Wreszcie, musisz również upewnić się, że pola wejściowe są zamknięte wewnątrz żądanego formularza, a tym samym nie na zewnątrz.

Oto kilka przykładów różnych pól wprowadzania formularzy 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>

Create a doPost() metoda w serwlecie, która przechwytuje przesłane wartości wejściowe jako parametry żądania oznaczone przez pole wejściowename (nie id!). Możesz użyć request.getParameter(), aby pobrać przesłane wartości z pól pojedynczej wartości i request.getParameterValues(), aby pobrać przesłane wartości z pól wielowartościowych.

@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;
    // ...
}

Wykonaj w razie potrzeby jakieś walidację i na koniec utrzymaj w DB zwykły JDBC/Dao way.

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

Zobacz też:

 68
Author: BalusC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-17 14:02:09

Cóż, istnieje wiele samouczków baz danych online dla Javy (to, czego szukasz, nazywa się JDBC). Ale jeśli używasz zwykłych serwletów, będziesz miał klasę, która rozszerza HttpServlet, a wewnątrz niej będziesz miał dwie metody, które wyglądają jak

public void doPost(HttpServletRequest req, HttpServletResponse resp){

}

I

public void doGet(HttpServletRequest req, HttpServletResponse resp){

}

Jeden z nich jest wywoływany do obsługi operacji GET, a drugi do obsługi operacji POST. Następnie użyjesz obiektu HttpServletRequest, aby uzyskać parametry, które zostały przekazane jako część formularza, takie jak więc:

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

Następnie, gdy masz dane z formularza, stosunkowo łatwo jest dodać je do bazy danych za pomocą samouczka JDBC, który jest powszechnie dostępny w Internecie. Proponuję również poszukać podstawowego samouczka Java servlet na początek. Jest to bardzo proste, chociaż istnieje wiele kroków, które należy poprawnie skonfigurować.

 2
Author: Chris Thompson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-11 17:11:28

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

Szukaj:

"Problem

Chcesz przetworzyć dane z formularza HTML w serwlecie. "

 0
Author: POSIX_ME_HARDER,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-11 17:10:35

Najpierw Utwórz plik jsp : i wpisz pole tekstowe, które chcesz
dla ex:

Następnie utwórz swoją klasę servlet:

public class test{

protected void doGet(paramter , paramter){

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

}
 -1
Author: dnyaneshwar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-08 12:28:16