`
andyzhchy
  • 浏览: 96901 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

关于用servlet写服务端API(续)

阅读更多
这两天又新写了几个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();
	}

分享到:
评论

相关推荐

    servlet-api_servlet_

    "servlet-api_servlet_"这个标题可能指的是一个包含Servlet API的jar包,可能是用于更新或学习Servlet编程的资源。 在描述中提到的"全新的servlet相关jar包,值得学习与研究",暗示了这是一个新的版本或者更新,...

    Android端为客户端和servlet为服务端的实时通讯

    以上就是关于“Android端为客户端和Servlet为服务端的实时通讯”所涉及的关键知识点。通过理解并实践这些概念,开发者可以构建出能够高效、安全地与服务器进行实时交互的Android应用程序。在提供的Chat_android.zip...

    Servlet_API帮助文档

    Servlet_API帮助文档是Java Web开发中的重要参考资料,它详尽地介绍了Servlet API的各个组成部分以及如何使用这些组件来构建动态Web应用程序。Servlet API是Java Servlet技术的核心,它为服务器端编程提供了一组接口...

    servlet-API.docs

    这份`servlet-API.docs`压缩包包含了详尽的Servlet API参考文档,帮助开发者理解和使用这些功能。 一、Servlet API概述 Servlet API是Java EE(以前的J2EE)的一部分,它定义了服务器端程序如何与Web客户端(如...

    android客户端与servlet服务端交互的很好的例子

    本示例主要关注Android客户端如何与Servlet服务端进行有效的通信,涉及了多种数据传输方式,如传递参数、文本以及XML数据。以下是对这些知识点的详细解释: 1. **HTTP基础**: - Android客户端与Servlet服务端交互...

    android服务端jsp+servlet+mysql

    在IT行业中,构建Android应用程序与后端服务器交互是常见的需求,这里我们主要关注"android服务端jsp+servlet+mysql"这个主题。这个组合涉及到Android客户端、Java Web服务端以及数据库管理,下面将详细阐述这三个...

    java servlet服务端框架_上传_下载_通信线程_加密_数据库_客户端上传下载

    综合以上,一个基于Java Servlet的服务端框架应该包括以下组件:用于处理上传和下载的控制器,使用线程池进行并发处理的机制,安全的加密策略,与数据库交互的模块,以及可能的第三方服务集成,如图灵机器人。...

    第三章 Spring MVC Servlet API与Json的支持

    Spring MVC利用Servlet API来处理HTTP请求,通过`HttpServlet`的`doGet`和`doPost`等方法进行服务端逻辑处理。 在Spring MVC中,DispatcherServlet是一个关键组件,它作为所有请求的前端控制器,负责调度请求到相应...

    servletAPI2.1中文版

    ### 关于Servlet API 2.1中文版的关键知识点解析 #### 一、Servlet API 2.1概述 Servlet API 2.1版本是Java Servlet技术的重要组成部分,它为开发人员提供了一套标准接口来创建高性能的Web应用。该版本发布于1998...

    Servlet STUTRS API 帮助文档

    Servlet API是Java Servlet技术的基础,它定义了一系列接口和类,使得开发者能够创建HTTP服务端程序。其中,`javax.servlet.Servlet`是所有Servlet的基类,包含了初始化、服务和销毁等生命周期方法。`javax.servlet....

    Servlet API 类图

    Servlet API 是Java Web开发中的核心组件,主要用于处理HTTP请求和服务端的应用程序逻辑。它由Java Servlet规范定义,主要包含在`javax.servlet`和`javax.servlet.http`这两个包中。这两个包提供了大量的接口和类,...

    activation\mail\servlet-api

    例如,一个系统可能需要通过Servlet接收用户请求,然后利用JavaMail API发送包含附件的电子邮件,并使用JAF处理邮件中的复杂内容类型。在开发环境中,这些库通常作为项目的依赖项添加到类路径中,而在生产环境中,...

    RSA加密 js客户端加密 java服务端servlet解密

    在这个场景中,我们看到JS客户端利用RSA公钥进行加密,然后将加密后的数据发送到Java服务端的Servlet,Servlet再用对应的私钥进行解密。这个过程确保了数据在传输过程中不被未经授权的第三方截取或篡改。 首先,...

    一个支持servlet的web服务器.rar

    Servlet是Java平台上的一个核心技术,用于开发...如果你打算学习或使用Servlet,你需要了解Servlet的基本概念、生命周期、API以及如何在各种Servlet容器中部署和管理它们。这将为你打开通往服务器端Java开发的大门。

    一个简单的服务端程序

    总的来说,"一个简单的服务端程序"涉及了使用Java Servlet技术创建Web服务的基本概念和步骤。通过编写Servlet类,处理HTTP请求,并在Servlet容器中运行,可以构建出动态响应用户请求的Web应用。"Service2.2"这个文件...

    java servlet 博客源码

    源码运行时需要导入JAR包,这通常包括Servlet API JAR文件(如servlet-api.jar)、JDBC驱动JAR(对应SQL SERVER可能是mssql-jdbc.jar)以及可能的其他依赖库。这些外部库提供了必要的类和方法,使得开发人员能够调用...

    servlet-API

    Servlet-API是Java Web开发中的核心组件,主要用于构建动态web应用程序。它提供了一组接口和类,使得服务器端程序能够处理HTTP请求并返回响应。在Java EE(现在称为Jakarta EE)框架中,Servlet-API扮演着至关重要的...

    使用MySQL和Servlet编写Android接口样例(服务器端代码)

    在开发Android应用时,与服务器进行数据交互是必不可少的一部分,这通常通过HTTP协议实现,而Servlet作为Java EE的一部分,常用于构建服务器端的RESTful API。在这个案例中,我们将探讨如何利用MySQL数据库和Servlet...

Global site tag (gtag.js) - Google Analytics