0

JSP ページをホストしているサーバーがあります。クライアントのデータベースからテキスト ボックスに入力できますか?

4

2 に答える 2

1

データをロードし、それをリクエスト スコープに入れ、リクエストを JSP に転送するサーブレットを作成します。クライアントがリンク/ブックマークを開くたびに実行する場合は、doGet()メソッドで実行します。または、クライアントがフォームを送信したときに実行したい場合は、doPost()メソッドで実行します。

リクエスト パラメータに基づいて DB から特定の製品をプリロードする例を次に示します。

Product product = productService.find(request.getParameter("id")); // Do your DB access job.
request.setAttribute("product", product); // It'll be available by ${product}.
request.getRequestDispatcher("/WEB-INF/product.jsp").forward(request, response); // Let JSP display it.

このサーブレットを URL パターンにマップすると、 http://example.com/somecontext/product/product ?id=123で呼び出すことができます

JSPでは、HTML 入力要素の属性を設定して、valueそれを入力要素の値として表示するだけです。これは、他の回答で提案されているようにプレーンに印刷するとXSS 攻撃に敏感であるため、 JSTL fn:escapeXml()を使用して XSS 攻撃を回避したいと考えています。

<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<input type="text" name="name" value="${fn:escapeXml(product.name)}" />
<input type="text" name="description" value="${fn:escapeXml(product.description)}" />
<input type="text" name="price" value="${fn:escapeXml(product.price)}" />

スクリプトレット(これらの<% %>もの)は不適切な方法であり、リクエスト属性への即時アクセスを提供しないことに注意してください(つまり、<%= product.getName() %>他の回答で提案されているスタイルは機能しません)。また、標準の XSS エスケープ機能も提供しません。

于 2011-04-29T13:18:27.353 に答える
0

クライアントのデータベースからテキスト ボックスに入力できますか?

はい、できます。

手順:-

  1. サーブレットでデータベースに接続します。
  2. サーブレットでデータを取得し、jsp に渡します。
  3. そのデータを jsp のリクエストから取得します。
  4. スクリプトレットまたはjstlを使用してjspでデータを表示します。

jsp のテキスト ボックスにデータを入力するには、次を使用します。

Userユーザーの情報を保持するオブジェクトがあるとします...

<input type="text" value="<%= user.getName()%>" />
于 2011-04-29T09:03:05.523 に答える