web-dev-qa-db-fra.com

Comment transférer des données de JSP à une servlet lors de la soumission d'un formulaire HTML

J'ai une page JSP avec un formulaire 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>

Comment obtenir ces données dans une servlet et les ajouter à la base de données?

38
Saska

Créez une classe qui étend la HttpServlet et placez l'annotation @WebServlet contenant l'URL souhaitée par le servlet.

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

Et laissez simplement <form action>point à cette URL. Je voudrais aussi recommander utiliser la méthode POST pour les requêtes non idempotentes. Assurez-vous d'avoir spécifié l'attribut name des champs de saisie du formulaire HTML (<input>, <select>, <textarea> et <button>). Cela représente le nom du paramètre de la requête HTTP. Enfin, vous devez également vous assurer que les champs d’intérêt d’intérêt sont placés à l’intérieur du formulaire souhaité et non à l’extérieur.

Voici quelques exemples de divers champs de saisie de formulaire 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>

Créez une méthode doPost() dans votre servlet qui récupère les valeurs d'entrée soumises en tant que paramètres de requête définis par la variable name du champ d'entrée (pasid!). Vous pouvez utiliser request.getParameter() pour obtenir la valeur soumise à partir de champs à valeur unique et request.getParameterValues() pour obtenir les valeurs soumises à partir de champs à valeurs multiples.

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

Faites si nécessaire un peu de { validation } _ et enfin persistez-le dans la base de données de la façon habituelle JDBC / DAO .

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

Voir également:

71
BalusC

Il existe de nombreux didacticiels de base de données en ligne pour Java (ce que vous recherchez s'appelle JDBC). Mais si vous utilisez des servlets simples, vous aurez une classe qui étend HttpServlet et à l'intérieur de celle-ci, vous aurez deux méthodes ressemblant à

public void doPost(HttpServletRequest req, HttpServletResponse resp){

}

et

public void doGet(HttpServletRequest req, HttpServletResponse resp){

}

L'un d'eux est appelé pour gérer les opérations GET et un autre est utilisé pour gérer les opérations POST. Vous utiliserez ensuite l'objet HttpServletRequest pour obtenir les paramètres qui ont été passés dans le formulaire, comme ceci:

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

Ensuite, une fois que vous avez les données du formulaire, il est relativement facile de les ajouter à une base de données à l'aide d'un didacticiel JDBC largement disponible sur le Web. Je suggère également de rechercher un didacticiel de base sur les servlets Java pour vous aider à démarrer. C'est très facile, même si plusieurs étapes doivent être configurées correctement.

3
Chris Thompson

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

Rechercher :

"Problème

Vous souhaitez traiter les données d'un formulaire HTML dans une servlet. "

0
POSIX_ME_HARDER