イントロ: 私はサーブレットでのdoGetとdoPostの関係に少し慣れていません。
範囲: 私はオンラインオークションサイトで私を助けるためのツールを構築しています:
- 私(ユーザー)はフォーム(htmlページ)に名前を入力します。この名前はURLになります(販売される可能性があります->ビジネスメソッドがAPIを介してこれを決定します)
- htmlフォームはフォーム名をdoPostに投稿し、doPostはフォーム名を引数として使用してビジネスメソッドを呼び出します
- ビジネスメソッドを呼び出した後、Ajaxを使用してdoGetメソッドを呼び出して関連する出力(ビジネスロジックメソッドに入力されたパブリッククラスの文字列)を取得する結果のhtml/jsページにリダイレクトします。
問題: AjaxページがdoGetからの出力を取得していないようです(実際には、doGetには提供する文字列がないようです。エラーはありません。String= ""のように空白です。これは、ビジネスロジックメソッドが追加するまでです)。
質問1: doPostを使用してフォームString'st'をリクエストすると、html / js結果ページにリダイレクトしながらビジネスメソッドを呼び出すことができ、AjaxからdoGetを呼び出すこともできます。
質問2: SOや他のサイトを読んで答えを解決しようとしていますが、代入するのではなく正式に質問したいと思います。サーブレットを使用すると、スコープ(上記)を達成するための最速の方法ですか?JSPや他のJavaサーバー側のライブラリ/フレームワークとは対照的に?
hw / sw:CentOS 6.3、16 GB RAM、物理ノード、corei7 @ 3.2、コンテナーはTomcat 7
HTML
<html>
<head>
<title>URL Search Page</title>
</head>
<body>
<CENTER>
<FORM ACTION="/ResultServlet/Results" METHOD=GET>
<INPUT TYPE=TEXT NAME="st">
<INPUT TYPE=SUBMIT VALUE=Submit>
</FORM>
</CENTER>
</body>
</html>
サーブレット
@WebServlet("/Results")
public class Results extends HttpServlet {
private static final long serialVersionUID = 1L;
public static String str="";
public static void businessLogic(String q){
try {
str = new compute.URL.GetAvailURI( "https://www.registerdomains.com/auctionAPI/Key:a05u3***1F2r6Z&urlSearch="+q);
/*more boring number crunching */
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter printWriter = response.getWriter();
printWriter.println(str);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String st = request.getParameter("st");
businessLogic(st);
response.sendRedirect("results/resultActionURL.html");
}
}