서브렛으로 서버 API 쓰기 정보(계속)

4711 단어 xmlservlet
요 며칠 새api를 몇 개 썼는데 지금은 좀 능숙한 것 같아, 허허.하나 다 붙여서 나중에 참고하세요.

/**
 *   item
 * @author Andy.Zhang
 *
 */
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();
	}

좋은 웹페이지 즐겨찾기