0

URLオークションの調査サイトをまとめたいと思っています。標準的な[プレゼンテーション層<-->ビジネス層<--->データ層]として構成されます。このサイトには、ユーザーが興味のある URL を入力できるようにする index.html があります。その index.html は、サーブレットを介して doPost メソッドを呼び出し、その URL が販売されているかどうかの結果ページを吐き出します。そのようです:

index.html

<html>
<head>
<title>URL Auction 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="";

    private String businessLogic(String q){
        try {
            str = new compute.URL.GetAvailURI( "https://www.registerdomains.com/auctionAPI/Key:a05u3***1F2r6Z&urlSearch="+q);
            /*more boring number crunching */
            return str;
            }
/*
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    }
*/
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Results r = new Results();
        String st = request.getParameter("st");
        response.sendRedirect("results/resultActionURL.html?st="+r.businessLogic(st)");

    }

}

ただし、処理する必要がある結果ページからの他の 2 つのリンクがあります。つまり、whois データを取得し、この情報を Google マップに地理的にマッピングする WhoOwnsThis.html というリンクです。また、問題の URL をリアルタイムで評価する AppraiseResult.html。OK - これらの 2 つのページは処理に時間がかかるため (非常に大まかに言うと、それぞれ 2 秒とします)、ユーザーに結果ページを表示し、その後バックグラウンドで処理を進めて、それぞれのデータを作成します。 2 つの結果ページ。

質問- これら 3 つの結果ページのステートフル性を どのように処理すればよいですか? 最初に考えたのは、追加の 2 つの結果ページ (WhoOwnsThis と AppraiseResult) が作成されるたびに、一意のディレクトリを作成することです。次に、一意のディレクトリ名を結果ページの URL に引数として埋め込むことができます。これにより、他の 2 つの結果ページへのリンクをクリックすると、ディレクトリ名が結果ページの URL から .js 変数として取得され、挿入されます。適切なページを取得します。ただし、私は REST についても調べており、このトランザクションの状態を処理するより良い方法であるかどうか疑問に思っています。このシナリオで業界標準は何を推奨しますか?

4

2 に答える 2

4

本当にサーブレットのような低レベルの API を使いたいですか? オープンマインドな方は、Play Framework 2.0 を見て、他のプラットフォームの誰もが楽しんでいるのと同じ体験を手に入れてください。そうでない場合は、Spring MVC が適切な選択です。また、JavaScript フロントエンドのみを使用する場合は、JAX-RS を選択することをお勧めします。

Play Framework 2.0 には独自のクラス リロード メカニズムが含まれていますが、他のフレームワークでも JRebel で同じ経験が得られることに注意してください。

一般に、状態はデータベースに保持するのに適しているため、スケーリングが容易になります。Java EE 6 Web プロファイルは、ステートフル セッション Bean も提供します。Spring MVC には、セッション スコープの Bean があります。それぞれが独自の方法でそれを行っていますが、これは非常に基本的な概念であるため、サイトにはたくさんのドキュメントがあり、ここには貼り付けません。

シンプルなJavaの時代へようこそ:)

于 2013-01-21T19:24:05.367 に答える
1

より現代的なレイヤリングは 4 層だと思います。

View->Controller->Service->Persistence.

セッションを介して Web 層で状態を維持するか、サービス層でステートフル サービスとして Java EE アプリケーション サーバーに状態を維持するかを選択できます。

于 2013-01-21T19:23:53.833 に答える