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?
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ż:
- HTML początkujący tutorial
- nasze serwlety strona wiki
- doGet i doPost w Serwletach
- Jak wywołać konkretną metodę Javy w przypadku click/submit określonego przycisku w JSP?
- Jak wykonać Walidacja i wyświetlanie komunikatu o błędzie w tej samej formie w JSP?
- Jak mogę zachować wartości pól formularza HTML w JSP po przesłaniu formularza do Servletu?
- Jak przesłać pliki na serwer za pomocą JSP / Servlet?
- wyświetlanie JDBC ResultSet w HTML na stronie JSP przy użyciu wzorca MVC i DAO
- Servlet zwraca "status HTTP 404 żądany zasób (/servlet) nie jest dostępny"
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ć.
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. "
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");
}
}
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