/**
* 获取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();
}
分享到:
相关推荐
以上就是关于“Android端为客户端和Servlet为服务端的实时通讯”所涉及的关键知识点。通过理解并实践这些概念,开发者可以构建出能够高效、安全地与服务器进行实时交互的Android应用程序。在提供的Chat_android.zip...
学习和研究Servlet API对于理解Web服务器如何处理HTTP请求,以及如何编写服务端代码来响应这些请求至关重要。 Servlet API的主要组成部分包括: 1. **Servlet接口**:这是所有Servlet实现的基础。Servlet接口定义...
Servlet API是Java Servlet技术的核心,它为服务器端编程提供了一组接口和类,使得开发者能够创建与HTTP协议交互的服务端程序。 Servlet API包含在Java EE(Java Platform, Enterprise Edition)的javax.servlet和...
本示例主要关注Android客户端如何与Servlet服务端进行有效的通信,涉及了多种数据传输方式,如传递参数、文本以及XML数据。以下是对这些知识点的详细解释: 1. **HTTP基础**: - Android客户端与Servlet服务端交互...
这份`servlet-API.docs`压缩包包含了详尽的Servlet API参考文档,帮助开发者理解和使用这些功能。 一、Servlet API概述 Servlet API是Java EE(以前的J2EE)的一部分,它定义了服务器端程序如何与Web客户端(如...
Java Servlet 是一种用于构建服务端应用程序的技术,尤其在Web开发中广泛应用。它为开发者提供了处理HTTP请求和响应的能力,使得可以构建动态、交互式的Web应用。在这个主题中,我们将深入探讨Java Servlet在服务端...
在IT行业中,构建Android应用程序与后端服务器交互是常见的需求,这里我们主要关注"android服务端jsp+servlet+mysql"这个主题。这个组合涉及到Android客户端、Java Web服务端以及数据库管理,下面将详细阐述这三个...
Servlet API是Java Servlet技术的基础,它定义了一系列接口和类,使得开发者能够创建HTTP服务端程序。其中,`javax.servlet.Servlet`是所有Servlet的基类,包含了初始化、服务和销毁等生命周期方法。`javax.servlet....
Spring MVC利用Servlet API来处理HTTP请求,通过`HttpServlet`的`doGet`和`doPost`等方法进行服务端逻辑处理。 在Spring MVC中,DispatcherServlet是一个关键组件,它作为所有请求的前端控制器,负责调度请求到相应...
开发者在编写Servlet和Filter时会引用这个库,以实现动态网页内容的生成和服务端业务逻辑的处理。Servlet API通常由Web服务器或应用服务器提供,但在开发阶段,这个库可以帮助编译和运行基于Servlet的项目。 这三个...
Servlet API 2.1广泛应用于构建企业级Web应用和服务端应用程序。它适用于需要高性能和高可扩展性的场景,如电子商务网站、在线银行系统、社交网络平台等。通过利用Servlet API 2.1提供的强大功能,开发人员可以构建...
Servlet API 是Java Web开发中的核心组件,主要用于处理HTTP请求和服务端的应用程序逻辑。它由Java Servlet规范定义,主要包含在`javax.servlet`和`javax.servlet.http`这两个包中。这两个包提供了大量的接口和类,...
源码运行时需要导入JAR包,这通常包括Servlet API JAR文件(如servlet-api.jar)、JDBC驱动JAR(对应SQL SERVER可能是mssql-jdbc.jar)以及可能的其他依赖库。这些外部库提供了必要的类和方法,使得开发人员能够调用...
Servlet-API是Java Web开发中的...综上所述,Servlet-API是构建动态Web应用的基础,通过其提供的各种组件,开发者可以轻松地处理HTTP请求,实现复杂的服务端逻辑,并与其他Web组件协同工作,构建出功能丰富的Web应用。
Servlet是Java平台上的一个核心技术,用于开发...如果你打算学习或使用Servlet,你需要了解Servlet的基本概念、生命周期、API以及如何在各种Servlet容器中部署和管理它们。这将为你打开通往服务器端Java开发的大门。
在这个场景中,我们看到JS客户端利用RSA公钥进行加密,然后将加密后的数据发送到Java服务端的Servlet,Servlet再用对应的私钥进行解密。这个过程确保了数据在传输过程中不被未经授权的第三方截取或篡改。 首先,...
3. **依赖库**:可能有JAR文件,包含了Servlet API和其他必要的依赖库。 4. **构建脚本**:如`build.gradle`或`pom.xml`,用于构建和打包应用。 5. **部署文件**:如`WAR`文件,可以直接部署到Servlet容器。 总的来...
标签中的"javaEE"代表这个项目是基于Java企业版平台开发的,该平台提供了一系列的API和服务,用于构建分布式、高性能的企业级应用。在这个用户管理系统中,我们使用了JavaEE提供的Servlet和JSP技术。 至于"WebPro...
在开发Android应用时,与服务器进行数据交互是必不可少的一部分,这通常通过HTTP协议实现,而Servlet作为Java EE的一部分,常用于构建服务器端的RESTful API。在这个案例中,我们将探讨如何利用MySQL数据库和Servlet...