servlet寫服務端API
/**
* 獲取item
* @author j
*
*/
public class GetItemsServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
CodeParse codeParse = new CodeParse();
//定義接收資料字串
String[] categoryId = null;
String[] type = null;
String[] page = null;
String[] pagesize= null;
String[] sortBy = null;
String[] sortorder = null;
//接收資料
String readinfo = codeParse.receiveData(request.getInputStream());
//解析xml檔案
try {
type = codeParse.parseXml(readinfo, "type");
categoryId = codeParse.parseXml(readinfo, "category_id");
page = codeParse.parseXml(readinfo, "page");
pagesize = codeParse.parseXml(readinfo, "pagesize");
sortBy = codeParse.parseXml(readinfo, "sort_by");
sortorder = codeParse.parseXml(readinfo, "sort_order");
} catch (ParserConfigurationException e1) {
e1.printStackTrace();
} catch (SAXException e1) {
e1.printStackTrace();
}
//將資料轉換
int classifyId = Integer.parseInt(categoryId[0]);
int pageNum = Integer.parseInt(page[0]);
int pageSize = Integer.parseInt(pagesize[0]);
//獲取item
List<Ring> ringList = new ArrayList<Ring>();
try {
ringList = DAOFactory.getRingDAOInstance().queryRingByClassify(classifyId, type[0], pageNum, pageSize, sortBy[0], sortorder[0]);
} catch (Exception e) {
e.printStackTrace();
}
//得到item總數
int itemNum = 0;
try {
itemNum = DAOFactory.getRingDAOInstance().queryItemNumByClassify(classifyId);
} catch (Exception e) {
e.printStackTrace();
return;
}
//計算頁數
int allPages = itemNum%pageSize==0 ?itemNum/pageSize:itemNum/pageSize+1;
//組裝返回資料
String result = "<result version=\"1\">";
result += " <items type=\""+type+"\" current_page=\""+pageNum+1+"\" total_page=\""+allPages+"\">";
Iterator<Ring> iterator = ringList.iterator();
Ring ring = null;
while (iterator.hasNext()) {
ring = iterator.next();
result += "<item category_id= \""+categoryId+"\" name=\""+ring.getTitle()+"\" screenshot=\"http://xxx.xxx.xxx/screenshot.jpg\" rating=\""+ring.getScore()+"\" download=\""+ring.getNumDownload()+"\" price=\""+ring.getPrice()+"\" item_id=\""+ring.getId()+"\" purchased=\"true\" package_id=\"\" source=\"\" version=\"1.0.0\"/>";
}
result += "</items ></result>";
//輸出資料
codeParse.sendData(response.getOutputStream(), result);
}
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
這是一個servlet,獲取某個子目錄下的產品列表,接收的是xml資料,返回的也是xml資料
整個邏輯很簡單
1、接收資料
2、處理解析資料
3、利用解析資料進行資料庫處理
4、利用資料庫返回資料進行xml資料組裝
5、將xml資料輸出
關於資料解析的很多,這裡就不貼出來
主要提出來如何接收資料輸入和寫出資料
接收資料:
/**
* 接收客戶端資料
* @param inputStream 輸入流
* @return readinfo 返回讀入的資料
* @throws IOException
*/
public String receiveData(InputStream inputStream) throws IOException {
byte[] buffer = new byte[128];
int len = 0;
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
while ((len = inputStream.read(buffer)) >= 0) {
bytes.write(buffer, 0, len);
}
String readinfo = bytes.toString();
return readinfo;
}
輸出資料:
/**
*
* @param outputStream 輸出流
* @param str 需要得到的型別
* @throws IOException
*/
public void sendData(OutputStream outputStream,String str) throws IOException {
BufferedOutputStream out = new BufferedOutputStream(outputStream);
out.write(str.getBytes());
out.flush();
}
相關文章
- grpc套路服務端編寫RPC服務端
- 用Swift寫服務端 — Perfect框架Swift服務端框架
- 服務端指南 | 良好的 API 設計指南服務端API
- 使用API閘道器構建移動端友好的API服務API
- 服務端指南 服務端概述 | 微服務架構概述服務端微服務架構
- go-zero docker-compose 搭建課件服務(三):編寫courseware api服務GoDockerAPI
- 服務端渲染到前端渲染,再到“服務端渲染”服務端前端
- Laravel 5 API 服務端支援簽名授權認證LaravelAPI服務端
- 基於 SpringMVC 的 RESTful HTTP API 實踐(服務端)SpringMVCRESTHTTPAPI服務端
- go-zero docker-compose 搭建課件服務(一):編寫服務api和protoGoDockerAPI
- TCP服務端TCP服務端
- 服務端 unity服務端Unity
- ABAP SICF服務和Java Servlet的比較JavaServlet
- 【.NET6】gRPC服務端和客戶端開發案例,以及minimal API服務、gRPC服務和傳統webapi服務的訪問效率大對決RPC服務端客戶端APIWeb
- Winform中使用HttpClient與後端api服務進行互動ORMHTTPclient後端API
- 使用Node在服務端呼叫HTTP-Basic認證的API服務端HTTPAPI
- Remoting服務端和客戶端程式該這樣模式來寫REM服務端客戶端模式
- 當API成為服務API
- phoenix API服務釋出API
- 構建Web API服務WebAPI
- bbossaop遠端服務介紹-遠端服務呼叫例項
- 用 TypeScript 編寫一個 React 服務端渲染庫(1)TypeScriptReact服務端
- 用Java寫一個分散式快取——RESP服務端Java分散式快取服務端
- 從零開始系列-Laravel編寫api服務介面:12.編寫swagger3.0 API文件LaravelAPISwagger
- FTP服務端部署FTP服務端
- react 服務端渲染React服務端
- 服務端漫遊服務端
- Oracle 服務端程式Oracle服務端
- 阿里雲視訊點播服務端API和SDK測試阿里服務端API
- C#開發BIMFACE系列41 服務端API之模型對比C#服務端API模型
- C#開發BIMFACE系列43 服務端API之圖紙拆分C#服務端API
- Python 服務端整合 騰訊雲 IM 服務Python服務端
- 服務端常見服務安裝及配置服務端
- 手寫一個同步服務端時間的小工具服務端
- RESTFul Web Api 服務框架(一)RESTWebAPI框架
- 使用多種客戶端消費WCF RestFul服務(一)——服務端客戶端REST服務端
- bbossaop遠端服務介紹-遠端服務id定義規則
- 螞蟻金服 mPaaS 服務端核心元件體系概述:移動 API 閘道器 MGS服務端元件API