2

私はJSPとサーブレットを初めて使用します。次のタスクであなたの提案が必要です。ユーザーからの情報を受け入れるhtmlフォームを持つjspページがあります。

JSPページinfo.jsp

<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<%
    if(request.getAttribute("reply")!=null){
        out.println(request.getAttribute("reply"));
    }
%>

<form action="actionservlet" method="post" name="myform">
user Name:<input name="username" type="text" size="10" /><br />
First Name:<input name="username" type="text" size="10" /><br />
Last Name:<input name="username" type="text" size="10" /><br />
Email id:<input name="username" type="text" size="10" /><br />
<input name="submit" type="submit" value="Submit" />
<input name="Reset" type="reset" value="Reset" />

</form>
</body>
</html>

このクライアントが情報を入力してフォームを送信すると、フォームのデータはactionservletに設定され、ユーザーが入力したユーザー名がデータベースにすでに存在するかどうかがチェックされます。ユーザー名がすでに存在する場合は、データを呼び出し元のjspに送り返し、「返信」という追加の属性と適切なメッセージとしての値を指定します。つまり、入力されたユーザー名がデータベースにすでに存在する場合は「ユーザーはすでに存在します」、または「ユーザー情報は正常に保存されました!」データが正常に保存された場合。

すでに存在するユーザー名がユーザーによって入力され、フォームが送信されるたびに、このようなことをしたいと思います。この場合、jspに返送されるすべてのデータはそれぞれのテキストボックスに入力されます。そのため、ユーザーは他のユーザー名のみを入力して、このフォームを再送信できます。上記のタスクを実行する方法。

各テキストボックスのvalueプロパティにjspスクリプトレットを追加して、このメッセージが再生されるかどうかを確認することを考えています。返信メッセージが重複するユーザー名に関するものである場合は、値をvalueプロパティに割り当てる必要があります。そうでない場合、valueプロパティは空のままになります。しかし、フィールドの数がフォームで増加するにつれて、このソリューションは少し面倒になるため、このソリューションは最適ではないと思います。また、これが原因で、ある種の冗長なコードが発生すると思います。だから私は同じことをする他の方法がある専門家に尋ねたいと思います。成功メッセージが表示されたときではなく、エラーまたは重複メッセージが表示されたときにのみフォームに入力したい。

ありがとう!

4

1 に答える 1

7

JSP で Java コードを使用することは悪い習慣であり、スクリプトレットは時代遅れであるため、使用を避ける必要があります。

JSP 2.0 Expression Language がソリューションです。ダウンロードjstl.jarしてクラスパスに追加します。

JSP

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<div><b>${reply}</b></div>
<form action="actionservlet" method="post" name="myform">
user Name:<input name="username" type="text" size="10" /><br />
First Name:<input name="firstName" type="text" size="10" value=${firstName}/><br />
Last Name:<input name="lastName" type="text" size="10" value=${lastName}/><br />
Email id:<input name="email" type="text" size="10" value=${email}/><br />
<input name="submit" type="submit" value="Submit" />
<input name="Reset" type="reset" value="Reset" />
</form>

サーブレットでパラメーターを取得します。やりたい操作・タスクを実行します。サーブレットでリクエスト属性を設定します。ページを JSP に転送します。

サーブレット:

String firstName = request.getParameter("firstName");
// and so on get other form parameters..
// perform your opeations

request.setAttribute("reply", "User Already Exists"); // Just an example
request.setAttribute("firstName", firstName);
// set other form parameters..

RequestDispatcher dispatcher =
request.getRequestDispatcher("/el/scoped-vars.jsp");
dispatcher.forward(request, response);

Expression Language が機能しない場合は、このリンクで詳細を確認してください。

基本的な式言語を読む: http://pdf.coreservlets.com/JSP-EL.pdf

于 2012-08-27T09:57:45.490 に答える