2017-01-03 2 views
0

要求がよりサーブレット対複数のオブジェクト

  1. 複数functions-を通して処理しなければならない場合、私は、理解したいことは、複数のサーブレットを通じて転送するために良いですOR
  2. オブジェクトのメソッドとして
を実装

 req.getRequestDispatcher("LoadSession").forward(req, resp); 
     req.getRequestDispatcher("AuthoriseRoles").forward(req, resp); 
     req.getRequestDispatcher("Boot").forward(req, resp); 

OR

 sessionLoader.loadSession(req,res); 
    authoriseService.authoriseRoles(req,res); 
    bootService.boot(req, res); 
+0

私はこの質問に明確かつ正解が1つはないと思います。私はあなたが時間と経験をもって自分自身を決定し、あなたの側を取ると思います。 –

+0

99.99%の症例では、2番目の症例が修正されました。一般的に、サーブレットは要求から物事を取り除き、応答に物事を書くことに対処する必要があります。残りは、リクエストとレスポンスを処理しないクラスとメソッドに委譲されますが、型付きオブジェクトが必要です。 –

答えて

0

あなたはAPIの設計段階にいると思います。 REST design principlesによれば、URLは処理または要求されるリソースを反映する必要があり、HTTPメソッドはリソースに対して実行する必要があるアクションを反映する必要があります。

ので、代わりに/ LoadSessionおよびHTTP要求でクエリーのparamとしてセッションIDを有するので、それはたとえばGET /session/e841092fa2194340bc40ためGET /session/{id}する必要があります(私はLoadSessionが既存のセッションを返すように要求されると仮定しています)

あなたかもしれませんこのデザインに従うことの利点は何かを自問してください。受信HTTPリクエストを解析してルーティングを処理できるライブラリとフレームワークがいくつか存在します(たとえば、JerseyはJAX-RSのリファレンス、JAX-RSはJavaEEのREST標準)。したがって、前述のようにサーブレットを作成する代わりに、HTTPメソッドに従って起動されるリソースとメソッドを表すクラスを記述します。アノテーションとすべてを結びつけてください:

@Path("/session") 
import javax.ws.rs.*; 
import javax.ws.rs.core.*; 

@Produces({MediaType.APPLICATION_JSON}) 
public class SessionHandler 
{ 
    @Context 
    private HttpServletRequest httpRequest; 
    @Context 
    private HttpServletResponse httpResponse; 

    @GET 
    @Path("{id}") 
    public Session load(@PathParam("id") String id) { 
    ... 
+0

それは全く質問に答えません。 –

+0

質問は「意見に基づいた」種類なので、回答の欲求に関していくらか余裕があるはずです.IMO –

関連する問題