2012-05-10 52 views
0

在我的項目中,我正在向servlet類請求插入,更新和刪除數據,然後處理並獲取響應。將servlet類擴展爲自定義類以獲得更多自定義響應

這一切都通過jQuery ajax發生。

現在它的反應只有成功或失敗如下

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

現在我想使該消息更有意義

默認情況下,我會接受1個參數調用"format",如果格式是null然後默認情況下,特定的servlet類將以json格式響應,否則只有2個選項將在那裏jsonxml

然後我需要設置response.setContentType("application/json");

因此,我會做一個servlet類如下

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

它可能.. ??

我該如何將響應轉換爲xmljson動態...?

回答

2

不要在servlet中這樣做。這是一個很好的機會來創建一個過濾器,這將做你的轉換工作。

  1. 過濾器使用ServletResponseWrapper並把它傳遞給servlet
  2. 的Servlet節省了響應
  3. 篩選檢查參數和委託給相應的轉換器(JSON,XML) - 後處理。