Comment transférer des données de JSP à servlet lors de la soumission du 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 un servlet et les ajouter à la base de données?

34
demandé sur BalusC 2011-02-11 20:05:24

4 réponses

créer une classe qui étend HttpServlet et mettre @WebServlet annotation sur elle contenant L'URL désirée que le servlet devrait écouter.

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

et il suffit de laisser <form action> point à cette URL. Je recommanderais aussi à d'utiliser la méthode POST pour les requêtes non-idempotent. Vous devez vous assurer que vous avez spécifié le name attribut des champs D'entrée du formulaire HTML ( <input> , <select> , <textarea> et <button> ). Ceci représente le nom du paramètre de requête HTTP. Enfin, vous devez également vous assurer que les champs d'entrée d'intérêt sont inclus dans le formulaire désiré et donc pas à l'extérieur.

Voici quelques exemples de formulaire HTML champs de saisie :

<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éer un doPost() méthode dans votre servlet qui saisit les valeurs d'entrée soumises comme paramètres de requête saisis par le champ d'entrée name ( pas id !). Vous pouvez utiliser request.getParameter() pour obtenir la valeur soumise à partir des champs d'une seule valeur et request.getParameterValues() pour obtenir les valeurs soumises à partir des champs de plusieurs valeurs.

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

Faire, si nécessaire, certains validation et, enfin, persister dans la base de données de l'habituel JDBC / DAO way.

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

voir aussi:

68
répondu BalusC 2018-08-17 14:02:09

Eh bien, il y a beaucoup de tutoriels de base de données en ligne pour java (ce que vous cherchez s'appelle JDBC). Mais si vous utilisez des servlets simples, vous aurez une classe qui s'étend HttpServlet et à l'intérieur, vous aurez deux méthodes qui ressemblent à

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 alors le HttpServletRequest objet pour obtenir les paramètres qui ont été passés dans le cadre de la forme comme so:

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

ensuite, une fois que vous avez les données du formulaire, il est relativement facile de l'ajouter à une base de données en utilisant un tutoriel JDBC qui est largement disponible sur le web. Je suggère également de chercher un tutoriel de base sur les servlets Java pour vous aider à démarrer. C'est très facile, bien qu'il y ait un certain nombre d'étapes qui doivent être configurées correctement.

2
répondu Chris Thompson 2011-02-11 17:11:28

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

recherche pour:

"problème

vous souhaitez traiter les données à partir d'un formulaire HTML dans un servlet. "

0
répondu POSIX_ME_HARDER 2011-02-11 17:10:35

créer votre fichier jsp : et écrivez le champ de texte que vous voulez

par exemple:

après cela créez votre classe de servlet:

public class test{

protected void doGet(paramter , paramter){

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

}
-1
répondu dnyaneshwar 2016-02-08 12:28:16