私はJSPのクラスを取り、割り当てがあります...ユーザー入力を受け取るJSPページを作成し、入力を検証してから、別のWebサイトに転送する必要があります。より正確には、アムトラックのWebサイトのFareFinder機能の初歩的なバージョンを実装するように求められました。
この割り当てには主に2つの目的があります。
(a)ミドルウェアとして機能するJSPを作成する。
(b)フォームデータを検証するJSPを記述します。
検証を行う原則について一般的な質問があります。現在、フォームと送信ボタンを持つJSPがあります。ユーザーが送信ボタンをクリックすると、Validate.jspに転送されます。次に、Validate.jspはデータを検証し、入力に問題がなければ、すべてのパラメーターが入力された状態で要求を自動的にアムトラックのWebサイトにリダイレクトします。
FareFinder.jsp- > Validate.jsp- > Amtrak
(ファイル名をクリックして、ペーストリー内のすべてのコードを表示します)
簡単に言えば、私がFareFinder.jspを実行している主なこと:
<FORM METHOD=POST ACTION="Validate.jsp">
<!-- all the input fields are up here -->
<P><INPUT TYPE=SUBMIT></P>
</FORM>
Validate.jspで私がしている主なこと:
<%@ page import="java.util.*" import="java.io.*"%>
<%
// retreive all the parameters
String origin = request.getParameter("_origin");
String depmonthyear = request.getParameter("_depmonthyear");
String depday = request.getParameter("_depday");
String dephourmin = request.getParameter("_dephourmin");
String destination = request.getParameter("_destination");
String retmonthyear = request.getParameter("_retmonthyear");
String retday = request.getParameter("_retday");
String rethourmin = request.getParameter("_rethourmin");
String adults = request.getParameter("_adults");
String children = request.getParameter("_children");
String infants = request.getParameter("_infants");
String searchBy = request.getParameter("_searchBy");
// validate the data
// redirect to Amtrak or back to FareFinder.jsp
%>
いくつか質問が
あります。Validate.jspからFareFinder.jspに戻り、検証ページで見つかったエラーを反映するにはどうすればよいですか。
エラーを見つけたら、応答をFareFinder.jspにリダイレクトし直しますか?
エラーをFareFinder.jspに送信するにはどうすればよいですか?
一般的な答えも大丈夫ですが、私は例として私のコードを与えています。
注:検証はサーバー側で実行する必要があり、JavaScriptを使用できません。
コメントのとおり、サーブレットもカバーされています。次に、1つを作成し、doPost()
次のように実装します(準疑似)。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Map<String, String> errors = new HashMap<String, String>();
String origin = request.getParameter("origin");
if (origin does not validate) {
errors.put("origin", "Put error message here.");
}
// Repeat for all parameters.
if (errors.isEmpty()) {
// No errors, redirect to Amtrak.
response.sendRedirect("http://amtrak.com");
} else {
// Put errors in request scope and forward back to JSP.
request.setAttribute("errors", errors);
request.getRequestDispatcher("FareFinder.jsp").forward(request, response);
}
}
このサーブレットをweb.xml
にマッピングして、url-pattern
から/validateFare
呼び出せるようにしhttp://example.com/context/validateFare
ます。
次に、JSPで次のようにします。
<form action="validateFare" method="post">
<label for="origin">Origin</label>
<input id="origin" name="origin" value="${param.origin}">
<span class="error">${errors.origin}</span>
<!-- Repeat other fields here. -->
</form>
フォームがaction
すでにサーブレットを指していることがわかります。${param.origin}
入力値では、実行して送信された値を保持しますrequest.getParameter("origin")
フードの下で。${errors.origin}
大体行って、関連するすべてのエラーメッセージが表示されますpageContext.findAttribute("errors").get("origin")
。
これはあなたを始めなければなりません:)頑張ってください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加