Formulieren in JSP
Deze tutorial gaat over het verwerken van formulieren in jsp. Het is altijd gemakkelijk als we de gebruiker data willen laten invoeren. Laten we als voorbeeld een gebruiker zijn voornaam, achternaam en gebruikersnaam invoeren. Vervolgens slagen we deze op in een Bean, en als laatste gaan we natuurlijk de data terug willen weergeven.
Stap 1 is het aanmaken van een jsp pagina met een formulier op. Formulieren zijn heel handige tools en binnen jsp zijn er verschillende opties voor formulieren weer te geven. In deze tutorial behandelen we de standaard html-formulieren. Het formulier dat bij ons voorbeeld hoort staat hieronder:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Eenvoudig formulier</title></head>
<body>
<form action="verwerkform.do" method="POST">
Voornaam: <input type="text" name="voornaam" />
Achternaam: <input type="text" name="achternaam" />
Gebruikersnaam: <input type="text" name="gebruikersnaam" />
<input type="submit" name="submit" value="Verwerk" />
</form>
</body>
</html>
En dit ziet er ongeveer zo uit:
Voornaam:
Achternaam:
Gebruikersnaam:
Dit is een heel eenvoudig html-formulier en voor iedereen die ooit al formulieren heeft gemaakt in HTML spreekt dit voor zich. De vraag is natuurlijk hoe kunnen we de servlet dit formulier laten verwerken. Laten we daarom eerst onze web.xml bewerken en vervolgens de servlet aanmaken:
<servlet>
<servlet-name>FormulierServlet</servlet-name>
<servlet-class>servlets.FormulierServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FormulierServlet</servlet-name>
<url-pattern>/verwerkform.do</url-pattern>
</servlet-mapping>
En onze servlet:
public class FormulierServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
HttpSession session = request.getSession();
FormulierDataBean formulierDataBean = ((FormulierDataBean)session.getAttribute("formulierDataBean"));
if(formulierDataBean == null)
formulierDataBean = new FormulierDataBean();
formulierDataBean.setVoornaam(request.getParameter("voornaam"));
formulierDataBean.setAchternaam(request.getParameter("achternaam"));
formulierDataBean.setGebruikersnaam(request.getParameter("gebruikersnaam"));
session.setAttribute("formulierDataBean", formulierDataBean);
response.sendRedirect("geefgegevensweer.jsp");
}
}
Het zou moeten opvallen dat we geen doGet methode hebben maar in dit geval een doPost. Deze moet worden aangeroepen omdat we in ons formulier als “method” POST meegaven en niet GET (of leeg laten). We halen de Bean op, als deze niet bestaat dan maken we die aan en dan zetten we de waardes. We kunnen aan de ingevulde waardes van het formulier doormiddel van request.getParameter. Vervolgens slaan we de bean op en verbinden we door naar geefgegevensweer.jsp.
Deze ziet er heel eenvoudig uit:
public class FormulierDataBean implements Serializable {
private String voornaam;
private String achternaam;
private String gebruikersnaam;
public String getVoornaam() {
return voornaam;
}
public void setVoornaam(String voornaam) {
this.voornaam = voornaam;
}
public String getAchternaam() {
return achternaam;
}
public void setAchternaam(String achternaam) {
this.achternaam = achternaam;
}
public String getGebruikersnaam() {
return gebruikersnaam;
}
public void setGebruikersnaam(String gebruikersnaam) {
this.gebruikersnaam = gebruikersnaam;
}
}
In de volgende tutorial gaan we zien hoe we ditzelfde probleem kunnen oplossen zonder het gebruik van een servlet.