0

私のプロジェクトでは、データを挿入、更新、および削除するために、サーブレット クラスに要求し、処理して応答を返します。

それはすべて jQuery ajax を介して行われます。

現在、次のように成功または失敗のみを応答します

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

そのメッセージをもっと意味のあるものにしたい

デフォルトでは、 という 1 つのパラメータを受け入れます"format"。形式がnullデフォルトでその特定のサーブレット クラスがjson形式で応答する場合、それ以外の場合は 2 つのオプションのみが存在jsonxmlます。

次に、設定する必要がresponse.setContentType("application/json");あります。

だから私は次のように1つのサーブレットクラスを作ります

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
            }
        }
    }

}

そして、この上記のクラスは次のように拡張されます

java.io.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ですか...??

4

1 に答える 1

2

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

  1. フィルタはServletResponseWrapperを使用して、サーブレットに渡します
  2. サーブレットは応答を保存します
  3. フィルタはパラメータをチェックし、適切なコンバータ(json、xml)に委任します-後処理。
于 2012-05-10T09:57:31.697 に答える