web-dev-qa-db-ja.com

HTMLフォームを送信するときにJSPからサーブレットにデータを転送する方法

HTMLフォームのあるJSPページがあります。

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

サーブレットでこれらのデータを取得してデータベースに追加する方法は?

41
Saska

HttpServlet を拡張し、サーブレットがリッスンする必要のあるURLを含む _@WebServlet_ アノテーションを追加するクラスを作成します。

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

そして、このURLに_<form action>_ point を指定するだけです。また、 推奨 を使用して、POSTべき等でない要求にメソッドを使用します。HTMLフォームのname属性を指定したことを確認する必要があります。入力フィールド(_<input>_、_<select>_、_<textarea>_、および_<button>_)。これはHTTP要求パラメーター名を表します。最後に、目的の入力フィールドを確認する必要もあります。目的のフォームの内側に囲まれているため、外側ではありません。

以下に、さまざまな 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>
_

入力フィールドのnameをキーとする要求パラメーターとして送信された入力値を取得する doPost() メソッドをサーブレットに作成します。 notid!)。 request.getParameter()を使用して単一値フィールドから送信値を取得し、request.getParameterValues()を使用して複数値フィールドから送信値を取得できます。

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

必要に応じて 検証 を実行し、最終的に通常のDBに永続化します [〜#〜] jdbc [〜#〜] / [〜#〜] dao [〜#〜] 方法。

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

こちらもご覧ください:

75
BalusC

Java(あなたが探しているものはJDBCと呼ばれています)のためのオンラインデータベースチュートリアルがたくさんあります。しかし、プレーンサーブレットを使用している場合、HttpServletとその内部には、次のような2つのメソッドがあります。

public void doPost(HttpServletRequest req, HttpServletResponse resp){

}

そして

public void doGet(HttpServletRequest req, HttpServletResponse resp){

}

1つはGET操作を処理するために呼び出され、もう1つはPOST操作を処理するために使用されます。次に、HttpServletRequestオブジェクトを使用して、フォームの一部として渡されたパラメーターを取得します。

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

次に、フォームからデータを取得したら、Webで広く利用可能なJDBCチュートリアルを使用して、データベースにデータを追加するのは比較的簡単です。また、基本的なJavaサーブレットチュートリアルを検索して開始することをお勧めします。非常に簡単です。ただし、正しく構成する必要があるステップがいくつかあります。

3
Chris Thompson

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

検索する :

"問題

サーブレットでHTMLフォームのデータを処理します。 」

0
POSIX_ME_HARDER