2012-05-10 11 views
0

私のプロジェクトでは、サーブレットクラスにリクエストしているデータを挿入、更新、削除してから、レスポンスを処理して返します。さらにカスタマイズされたレスポンスのためにサーブレットクラスをカスタムクラスに拡張する

これはすべてjQuery ajaxで発生します。

PrintWriter out = response.getWriter(); 
out.println("<custom message>"); 

を次のように今のところ応答のみ成功したか失敗したか、今私はフォーマットが、その後nullであれば、私は、"format"と呼ばれる1つのパラメータを受け入れますデフォルトでは

にそのメッセージをより有意義なものにしたいですデフォルトではそのサーブレットクラスはjson形式で応答します。それ以外の場合は2つのオプションしか存在しませんjsonxmlです。

、私はので、私は

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 


public class myservlet extends HttpServlet { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException 
    { 
     String format = req.getParameter("format"); 

     if(format == null) 
     { 
      format = "json"; 
     } 
     else 
     { 
      if(format.equals("json")) 
      { 
       resp.setContentType("application/json"); 
      } 
      else if(format.equals("xml")) 
      { 
       resp.setContentType("application/rss+xml"); 
      } 
      else 
      { 
       //error 
      } 
     } 
    } 

    public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException 
    { 
     String format = req.getParameter("format"); 

     if(format == null) 
     { 
      format = "json"; 
     } 
     else 
     { 
      if(format.equals("json")) 
      { 
       resp.setContentType("application/json"); 
      } 
      else if(format.equals("xml")) 
      { 
       resp.setContentType("application/rss+xml"); 
      } 
      else 
      { 
       //error 
      } 
     } 
    } 

} 

を次のように1つのサーブレットクラスを行いますと

輸入java.io.を次のように、この上のクラスが拡張されresponse.setContentType("application/json");

を設定する必要がありますPrintWriter;

import javax.servlet.ServletException; 

public class abc extends myservlet 
{ 
    private static final long serialVersionUID = 1L; 

    public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,java.io.IOException 
    { 
     PrintWriter out  = resp.getWriter(); 
      out.println("{/"id/": /"file/"}"); 
     //response must be converted to either json or to xml 
    } 
} 

できますか?

どのように応答をxmlまたはjsonに動的に変換できますか?

答えて

2

サーブレットでこれを行わないでください。これは、あなたの変換ジョブを行うフィルタを作成する良い機会です。

  1. フィルタServletResponseWrapperを使用し、
  2. サーブレット応答
  3. フィルタチェックパラメータを保存サーブレットに渡し、適切なコンバータ(JSON、XML)に委譲 - 後処理。