2012-02-03 16 views
0

特定のURL x.ptのリクエストがサーブレットにマップされるように、web.xmlにURLマッピングがあります(Servlet1)。このサーブレットのservice()では、リクエストに特定のパラメータがあるかどうかを確認します。別のサーブレットからサーブレットのサービスを呼び出す

もしそうなら、それをインスタンス化してサービスメソッドを呼び出すことによって、別のサーブレットServlet2にその呼び出しが委任されます。要求は、特別なイベントのためにあるとき

public void service(HttpServletRequest req, HttpServletResponse res) 
    throws ServletException, IOException { 

    // if the call is for some special events (request has some specific parameter) 
    if (req.getParameter(conditionCheck()) { 
     doPost(req, res); 
    } else { 
     // Report parsing 
    } 
} 

public void doPost(HttpServletRequest req, HttpServletResponse res) 
    throws ServletException, IOException { 

    try { 
     // instantiate Servlet2 object 
     servlet2.init(this.getServletConfig()); 
     servlet2.service(req, res); 
     servlet2.destroy(); 
    } catch (Exception e) { 
     LOG.error("Unable to execute event", e); 
    } 
} 

ブラウザ(すなわちServlet2に) 私はbrwoserにServlet2の応答を取得するための余分な何かをする必要がある場合は私に知らせてくださいいくつかのJSONテキストを返します。

ありがとうございます!あなたはRequestDispacherを使用して要求を転送することができます

+0

あなたの質問は何ですか?これは動作しますか、問題がありますか? –

+0

多分私は理解していません。リクエストを2番目のサーブレットにリダイレクト/転送するのはなぜですか? – tartak

答えて

1

RequestDispatcher rd = getServletContext().getRequestDispatcher(destination); 
rd.forward(request, response); 
0

クリスが言うように、私はするRequestDispatcherが動作することを期待したいが、私は直接、このように呼ばれているサーブレットを見たとき、私はいつも不快です。 servlet2によって提供されるロジックを、servlet1とservlet2の両方が呼び出せる別のオブジェクトに移動する機会がありますか?可能であれば、より良い、より簡単にテスト可能なソリューションを提供すると思います。

関連する問題