wake-up-neo.com

So übertragen Sie Daten von JSP an Servlet, wenn Sie ein HTML-Formular senden

Ich habe eine JSP-Seite mit einem HTML-Formular:

<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>

Wie erhalte ich diese Daten in einem Servlet und füge sie zur Datenbank hinzu?

38
Saska

Erstellen Sie eine Klasse, die HttpServlet erweitert, und fügen Sie die Annotation @WebServlet mit der gewünschten URL ein, die das Servlet überwachen soll.

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

Geben Sie einfach <form action>Punkt auf diese URL ein. Ich würde auch recommend verwenden POST Methode für nicht idempotente Anfragen. Sie sollten sicherstellen, dass Sie das Attribut name der Eingabefelder für das HTML-Formular angegeben haben (<input>, <select>, <textarea> und <button>). Dies ist der Name des HTTP-Anforderungsparameters. Schließlich müssen Sie auch sicherstellen, dass die Eingabefelder von Interesse innerhalb des gewünschten Formulars liegen und nicht außerhalb.

Hier einige Beispiele für verschiedene Eingabefelder für HTML-Formulare :

<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>

Erstellen Sie eine doPost() -Methode in Ihrem Servlet, die die übergebenen Eingabewerte als Anforderungsparameter erfasst, die durch die name des Eingabefelds (nichtid!) Eingegeben werden. Sie können request.getParameter() verwenden, um den übergebenen Wert aus Feldern mit einem einzigen Wert abzurufen, und request.getParameterValues(), um die übergebenen Werte aus Feldern mit mehreren Werten abzurufen.

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

Führen Sie ggf. einige Validierung aus und speichern Sie sie schließlich wie üblich JDBC / DAO .

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

Siehe auch:

71
BalusC

Nun, es gibt viele Online-Datenbank-Tutorials für Java (was Sie suchen, heißt JDBC). Wenn Sie jedoch einfache Servlets verwenden, haben Sie eine Klasse, die HttpServlet erweitert, und in ihr werden Sie zwei Methoden haben, die folgendermaßen aussehen

public void doPost(HttpServletRequest req, HttpServletResponse resp){

}

und

public void doGet(HttpServletRequest req, HttpServletResponse resp){

}

Einer von ihnen wird aufgerufen, um GET-Vorgänge auszuführen, und ein anderer wird für die Verarbeitung von POST-Vorgängen verwendet. Sie verwenden dann das HttpServletRequest-Objekt, um die Parameter, die als Teil des Formulars übergeben wurden, wie folgt abzurufen:

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

Sobald Sie die Daten aus dem Formular erhalten haben, ist es relativ einfach, sie mithilfe eines JDBC-Tutorials, das im Web allgemein verfügbar ist, einer Datenbank hinzuzufügen. Ich empfehle Ihnen außerdem, nach einem grundlegenden Java-Servlet-Tutorial zu suchen, um den Einstieg zu erleichtern. Es ist sehr einfach, obwohl es einige Schritte gibt, die richtig konfiguriert werden müssen.

3
Chris Thompson

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

Suchen nach :

"Problem

Sie möchten die Daten eines HTML-Formulars in einem Servlet verarbeiten. "

0
POSIX_ME_HARDER