2011-08-16 168 views
0

一個Java API我有一個類格式如下:從創建一個Java類

public class Process extends HttpServlet { 
    @Override 
protected void doGet(HttpServletRequest request, 
     HttpServletResponse response) 
     throws ServletException,IOException { 
    // TODO Auto-generated method stub 
    doPost(request, response); 
} 

@Override 
protected void doPost(HttpServletRequest request, 
     HttpServletResponse response) 
     throws ServletException,IOException { 
if ((request.getParameter("choice")==null)&&(request.getParameter("term")!=null)){ 
    Bean b=new Bean(request.getParameter("term")); 
    request.setAttribute("bean", b); 
    request.getRequestDispatcher("result.jsp").forward(request, response); 
    } 
    //....many other if checks to dispatch the request to appropriate jsp pages 
}} 

現在我想這個類轉換成API.I想保留它指派給相應頁面的功能,因爲它是如何爲我的應用程序運行的。但我希望能夠提供外部訪問,以便其他人也可以使用我的應用程序。 現在這個可以通過http://mytest.com/Process?term=test訪問,一旦我訪問它就像它將響應轉發給result.jsp。響應基本上是我的另一個類(Bean)對象,result.jsp使用該對象調用其各種get方法來檢索數據。

爲了這是可用的外部我想在URL中引入另一個參數,以便從外部頁面的人可以發送請求http://mytest.com/Process?term=test&request=api,然後我可以檢查參數,以確定它是否從外部的地方,但我不知道如何向外部客戶端發回響應,以及將對象發送給客戶端是個好主意,因爲我不認爲他們可以訪問類。

回答

1

現在我想這個類轉換成API

換句話說,你想提供它作爲web服務?


但我不知道該怎麼迴應發送回外部客戶端,如果它是一個好主意,對象發送到客戶端,因爲我不認爲他們將有機會獲得類。

只需以一種通用,固定和預先指定的格式返回它。例如,JSONXML或甚至CSV

JSON,與Gson幫助:

Bean bean = createItSomehow(); 

response.setContentType("application/json"); 
response.setCharacterEncoding("UTF-8"); 

Gson gson = new Gson(); 
response.getWriter().write(gson.toJson(bean)); 

XML,與JAXB幫助:

Bean bean = createItSomehow(); 

response.setContentType("text/xml"); 
response.setCharacterEncoding("UTF-8"); 

JAXBContext context = JAXBContext.newInstance(Bean.class); 
Marshaller marshaller = context.createMarshaller(); 
marshaller.marshal(bean, response.getOutputStream()); 

Java EE的API提供JAX-WSJAX-RS API的正是這種目的,它不需要用低級別的Servlet API模板來達到要求。

0

看看下面的庫。 http://www.jboss.org/resteasy。設置並開始使用非常簡單。 您可以使用該庫在當前實現的頂部安裝一個休息處理api包裝器。 讓我知道你是否想要做什麼?