0

NetBeans で Java Web アプリケーションに取り組んでいます。SQL データベースに行を追加できる JSP ページを作成しましたが、ユーザー入力を許可したいと考えています。この目的のために、いくつかのテキスト入力ボックスを作成しました。ユーザーが文字列を入力して、それらの文字列を varchar データとして SQL データベースに保存できるようにしたいと考えています。これを実現する方法はありますか?

以下は、テキスト入力の 1 つを作成するためのコードです。

<p>Name</p>
<input type="text" name="Name" value="" size="100"/>

データベースに行を追加するコードは次のとおりです。

    <sql:update var="attempt1" dataSource="jdbc/testaddressbook">
        INSERT INTO people (fullName, address, telephone, email)
        VALUES ("testerName3", "testerAddress", "testerPhone", "testerEmail")
    </sql:update>
4

1 に答える 1

1

JDBC (Java Data Base Connectivity)Servletの基本的な理解が必要です。あなたが望むものを達成する方法はたくさんありますが、以下はあなたにいくつかのアイデアを与えるための最小限の例です:

1. ユーザー入力を処理し、データを SQL に挿入するサーブレットを作成します。

package mycoolapp;

public RegistrationServlet extends HttpServlet {
  protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

    // Obtain submitted form data
    String name = req.getParameterName("Name");
    String address = req.getParameterName("Address");
    String phone = req.getParameterName("Phone");
    String email = req.getParameterName("Email");

    // Setup your database datasource, this is different for each db vendor. On production environment most likely you need a connection pooled datasource
    DataSource ds = // setup ds here..
    Connection conn = ds.getConnection();

    // Prepare the SQL statement to insert, plug in the values
    PreparedStatement stmt = conn.prepareStatement("INSERT INTO people (fullName, address, telephone, email) VALUES (?, ?, ?, ?)");
    stmt.setString(1, name);
    stmt.setString(2, address);
    stmt.setString(3, phone);
    stmt.setString(4, email);

    // Execute the insert
    stmt.executeUpdate();
    conn.close();

    // Dispatch into success page
    RequestDispatcher requestDispatcher = req.getRequestDispatcher("/registerSuccess.jsp");
    requestDispatcher.forward(req, res);
  }
}

2. WEB-INF/web.xml デプロイメント記述子でサーブレットを宣言してマップする

以下の設定は、サーブレットをにマップしますhttp://myhost/mywarname/register

<web-app>
  <servlet>
    <servlet-class>mycoolapp.RegistrationServlet</servlet-class>
    <servlet-name>RegistrationServlet</servlet-name>
  </servlet>

  <servlet-mapping>
    <servlet-name>RegistrationServlet</servlet-name>
    <url-pattern>/register</url-pattern>
  </servlet-mapping>
</web-app>

3.サーブレットに投稿するようにフォームを構成します

<form method="post" action="register">
  ....
</form>

警告のいくつかの言葉:

  • 上記のサーブレット コードには、適切な例外およびエラー処理が付属していません
  • 上記の JDBC コードには、適切なトランザクション管理が付属していません
  • 上記の例は決して業界標準のベスト プラクティスではなく、実際には古くて時代遅れのアプローチです。これは、Java サーブレットとデータベースの相互作用がどのように機能するかの基本を示しています。適切なアプリケーションを構築するときは、SpringJSFなどの Web フレームワークの使用を検討してください。
于 2013-08-27T23:29:49.383 に答える