最終更新日:190422原本2019-01-01 

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>

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

ベストアンサー
HttpServletを拡張するクラスを作成し、サーブレットが待機する必要のあるURLを含む@WebServletアノテーションをそれに追加します。

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

そして、ちょうどこのURLにフォームアクションpointをさせてください。私はrecommend私は非冪等要求のためにPOSTメソッドを使うことにしました。最後に、入力フィールドのname属性を指定したことを確認してください。これはHTTPリクエストパラメータ名を表します。さまざまなHTML form input fieldsの例をいくつか示します。

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

サーブレットにdoPost()メソッドを作成します。これは、入力フィールドの名前(idではありません)をキーとするリクエストパラメータとして送信された入力値を取得します。 request.getParmeter()を使用して単一値フィールドから送信された値を取得し、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;
    // ...
}

必要であればvalidationを実行し、最後に通常のJDBC/DAOの方法でDBに保存します。

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

また見なさい:

> Our Servlets wiki page
> doGet and doPost in Servlets
> How do I call a specific Java method on click/submit event of specific button in JSP?
> How perform validation and display error message in same form in JSP?
> How can I retain HTML form field values in JSP after submitting form to Servlet?
> How to upload files to server using JSP/Servlet?
> Show JDBC ResultSet in HTML in JSP page using MVC and DAO pattern
> Servlet returns “HTTP Status 404 The requested resource (/servlet) is not available”

転載記事の出典を記入してください: HTMLフォームを送信するときにJSPからサーブレットにデータを転送する方法 - コードログ