- 浏览: 135446 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
522823979:
JXL POI 导出excel 包括图片 -
贝塔ZQ:
实现导出excel文件和图片,感觉用poi和jxl代码量好多, ...
JXL POI 导出excel 包括图片 -
bmpbhg:
和你的类似,不过我这边报的是
org.dom4j.Docume ...
Servlet 接受解析HTTP请求XML数据,返回XML -
Wuaner:
引用Non Field Validators排在前面的先执行 ...
struts2 内建效验器 -
timelion:
请将正式简历发送至
timelion@163.com
找工作中...放上简历,求推荐
项目需要Servlet接受http提交过来的XML解析后,返回数据.
服务器的Servlet使用DOM4J调用解析.原先的一个项目这样调用是可以的.
不知道什么原因报错了..
查了很久,还是不知道什么原因引起的.环境也是和原先的一样.郁闷死了,只有想其他的方法了.通过调试查看request对象,发现xml还是被作为参数保存.参数名是"<?xml version",
就写成如下:
下面就是解析XML和创建XML返回数据.
OutputStream output = null; HttpURLConnection conn = null; Document document = null; SAXReader reader = new SAXReader(); URL _url; if (StringUtil.isNotEmpty(xml)) { try { _url = new URL(url); conn = (HttpURLConnection) _url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); output = conn.getOutputStream(); output.write(xml.getBytes()); output.flush(); document = reader.read(new InputStreamReader(conn.getInputStream(), "GBK")); document.setXMLEncoding("GBK"); return document.asXML(); } catch (MalformedURLException e1) { // log.error(e1.toString()); e1.printStackTrace(); } catch (IOException e2) { // log.error(e2.toString()); e2.printStackTrace(); } catch (DocumentException e3) { // log.error(e3.toString()); e3.printStackTrace(); } finally { try { if (output != null) { output.close(); } if (conn != null) { conn.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } } return "";
服务器的Servlet使用DOM4J调用解析.原先的一个项目这样调用是可以的.
SAXReader reader = new SAXReader(); document = reader.read(request.getInputStream());
不知道什么原因报错了..
org.dom4j.DocumentException: Error on line -1 of document : Premature end of file. Nested exception: Premature end of file. at org.dom4j.io.SAXReader.read(SAXReader.java:482) at org.dom4j.io.SAXReader.read(SAXReader.java:343) at com.wasu.itv.web.servlet.ObjectServlet.execute(ObjectServlet.java:75) at com.wasu.itv.web.servlet.ObjectServlet.doPost(ObjectServlet.java:66) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:145) at org.extremecomponents.table.filter.AbstractExportFilter.doFilter(Unknown Source) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:165) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:145) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:165) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:145) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:139) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955) at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2460) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:119) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955) at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:157) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:595) Nested exception:
查了很久,还是不知道什么原因引起的.环境也是和原先的一样.郁闷死了,只有想其他的方法了.通过调试查看request对象,发现xml还是被作为参数保存.参数名是"<?xml version",
就写成如下:
SAXReader reader = new SAXReader(); StringBuffer doc=new StringBuffer("<?xml version="); doc.append(request.getParameter("<?xml version")); InputStream inputStream = new ByteArrayInputStream(doc.toString().getBytes()); document = reader.read(inputStream);
下面就是解析XML和创建XML返回数据.
public void execute(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { Document document = null; SAXReader reader = new SAXReader(); StringBuffer doc=new StringBuffer("<?xml version="); doc.append(request.getParameter("<?xml version")); InputStream inputStream = new ByteArrayInputStream(doc.toString().getBytes()); XMLWriter writer = null; Document resDoc=null; try { document = reader.read(inputStream); if (document!= null) { Node objectType=document.selectSingleNode("//req/objectType"); Node objectTitle=document.selectSingleNode("//req/objectTitle"); if(objectTitle!=null&&objectType!=null&&objectType.getText().equals(Constants.VOTE.toString())){ voteManager=(VoteManagerImpl)SpringWebUtils.getApplicationContext(request).getBean("voteManager"); List votes=voteManager.loadAllByQuery(objectTitle.getText(),null, null, null, null, null, null); VoteDTO dto=null; if(votes.size()>0){ dto=(VoteDTO)votes.get(0); dto=voteManager.load(dto.getVoteId()); List<VoteOpt> opts=dto.getVoteOpts(); resDoc = DocumentHelper.createDocument(); Element resElement = resDoc.addElement("res"); Element codeElement = resElement.addElement("code"); codeElement.setText("0"); Element descElement =resElement.addElement("desc"); descElement.setText("查询成功"); Element otElement =resElement.addElement("objectTitle"); otElement.setText(dto.getVoteTitle()); Element optionsElement =resElement.addElement("options"); for (Iterator iterator = opts.iterator(); iterator .hasNext();) { VoteOpt opt = (VoteOpt) iterator.next(); Element optionElement =optionsElement.addElement("option"); Element optValueElement =optionElement.addElement("optValue"); optValueElement.setText(opt.getOptValue()); Element optNameElement =optionElement.addElement("optName"); optNameElement.setText(opt.getOptName()); Element optCountElement =optionElement.addElement("optCount"); optCountElement.setText(opt.getOptCount().toString()); } } else{ resDoc=getErrorDocument("没有此主题"); } } else{ resDoc=getErrorDocument("请求主题类型不正确"); } } else{ resDoc=getErrorDocument("请求报文格式错误"); } } catch (Exception ex) { ex.printStackTrace(); log.error(ex.toString()); resDoc=getErrorDocument("请求处理出现错误:"+ex.toString()); } finally { OutputFormat format = OutputFormat.createCompactFormat(); format.setEncoding("GBK"); writer = new XMLWriter(response.getOutputStream(), format); writer.write(resDoc); writer.close(); if (writer != null) { writer.close(); } } } public Document getErrorDocument(String msg){ Document resDoc = DocumentHelper.createDocument(); Element resElement = resDoc.addElement("res"); Element codeElement = resElement.addElement("code"); codeElement.setText("-1"); Element descElement =resElement.addElement("desc"); descElement.setText(msg); return resDoc; }
评论
1 楼
bmpbhg
2012-07-10
和你的类似,不过我这边报的是
org.dom4j.DocumentException: Error on line 1 of document : Premature end of file. Nested exception: Premature end of file.
而且时有时无,很是郁闷,用的是你第一种写法;
你现在找到原因了么?
不行我也试试你第二种写法;
org.dom4j.DocumentException: Error on line 1 of document : Premature end of file. Nested exception: Premature end of file.
而且时有时无,很是郁闷,用的是你第一种写法;
你现在找到原因了么?
不行我也试试你第二种写法;
发表评论
-
Maven 常用命令
2011-03-03 16:37 844mvn dependency:resolve 了解你项目的 ... -
JXL POI 导出excel 包括图片
2010-05-27 15:22 9212主要的问题还是JXL只支持PNG格式的图片,没辙,只有转换格式 ... -
decorator(装饰模式)io包理解
2010-03-30 16:01 1503decorator的结构如下: MyInterfac ... -
java设计模式
2010-03-25 11:28 851策略设计模式: 创建一个能够根据所传递的参数对象的不同而具有不 ... -
web开发的问题
2010-03-22 00:56 9671. filter的优先级 在应用中会用到很多的过滤器,想下面 ... -
FTP工具类
2010-02-26 11:50 4813功能就是将指定文件夹下面的所有文件都上传到FTP上 /** ... -
csv文件下载
2010-02-05 15:21 2493BufferedOutputStream bos = null ... -
struts不定数文件上传
2010-02-04 22:18 984Hashtable files=voteForm.getMul ... -
JFreeChart封装工具类
2010-02-03 18:37 3944package com.wasu.itv.common.uti ... -
J2SE
2010-01-22 15:08 839public static void main(String[ ... -
struts2 内建效验器
2010-01-22 10:54 1444http://struts.apache.org/2.0.9/ ... -
struts2内建拦截器
2010-01-21 12:50 10821. alias:实现在不同请求中相似参数别名的转换; 2. ... -
struts2异常收集
2010-01-19 13:21 9081. ognl.OgnlException: target i ... -
apache VSF 操作类
2010-01-13 17:54 1158package com.biya.dao.jdbc; ... -
记录开发过程用的代码段001--POI生成excel表格,如何合并单元格
2009-12-30 16:51 3288POI生成excel表格,如何 ... -
List 存取date排序
2009-12-10 14:46 7655主要利用 Comparator这个接口来实现,我这里是排序li ... -
JSP,SERVLET
2009-12-03 16:03 8291. 直接中文作为参数提交R=URL(test.do?name ... -
数字,金额 转 中文大写
2009-11-27 16:05 1356import java.text.DecimalFormat; ... -
Lucene:基于Java的全文检索引擎简介
2009-11-24 15:53 1035http://www.chedong.com/tech/luc ... -
BIRT 安装
2009-11-17 10:31 2139最近又用到birt报表 ,年初的时候用过一次,到现在忘的差不多 ...
相关推荐
3. **获取XML文件**:Servlet可能从HTTP请求的POST或GET参数中接收XML数据,或者从服务器上的文件系统中读取XML文件。使用`HttpServletRequest`对象来获取XML数据。 4. **创建SAX解析器**:使用`SAXParserFactory`...
3. Servlet端配置接收POST请求并解析XML数据。 在实际应用中,可能还需要处理身份验证、错误处理、超时设置等细节。同时,为了提高效率和安全性,可以考虑使用异步操作、HTTPS以及合适的XML序列化/反序列化库。总之...
在项目"XMLhomework"中,很可能是设计了一个Web应用,用户通过JSP页面提交修改XML的请求,这些请求被Servlet捕获,处理后更新XML文件,然后可能将更新后的XML内容返回给JSP页面展示。JSP页面可能包含一些表单元素,...
1. **解析请求**:Servlet通过`HttpServletRequest`对象获取请求数据,包括XML数据。这可能涉及到读取请求体,因为XML通常作为POST请求的一部分发送。 2. **处理XML**:解析XML数据,可以使用Java的DOM(Document ...
本文将深入探讨 `dxServlet.java` 文件中涉及的核心概念和技术细节,帮助开发者更好地理解如何在 Java Servlet 中处理 HTTP POST 请求携带的 XML 数据。 #### 核心知识点 1. **Servlet 的基本概念与功能** 2. **...
当用户点击分页链接时,新的请求会被发送到Servlet,Servlet再次读取XML并返回对应页的数据。 在提供的`Pagination`压缩包中,应该包含了Servlet的Java源代码、XML数据文件,以及JSP页面的HTML和Java代码。通过研究...
通过遍历DOM树,Servlet可以轻松访问和操作XML数据。例如,找到包含分页信息的元素,如总记录数、每页记录数等。 4. **分页逻辑**: 分页的基本原理是根据用户请求的页码计算出应显示的数据范围。Servlet需要根据...
本篇文章将详细讲解如何在Tomcat服务器环境下请求XML数据,并进行解析,以及Handler机制和用法。 首先,让我们了解Tomcat。Tomcat是一款开源的Java Servlet容器,它是Apache软件基金会的Jakarta项目的一部分。...
这个练手程序旨在帮助你理解并实践Ajax的基本用法,包括如何发起异步请求以及如何解析XML数据。** ### 1. Ajax基础概念 Ajax的核心是JavaScript对象XMLHttpRequest,它允许浏览器在后台与服务器进行数据交换。通过...
2. Servlet接收到请求后,解析请求参数,确定需要展示的报表类型和数据。 3. Servlet读取指定的XML文件,使用DOM或SAX等解析器解析XML数据。 4. Servlet从XML中提取出报表数据,根据需求进行计算和处理。 5. Servlet...
这种级联选择可以通过Ajax异步请求实现,利用JavaScript库如jQuery向服务器发送XMLHttpRequest,服务器端使用Servlet处理请求,解析XML数据并返回响应。 在Servlet中,我们可以使用Java的内置XML解析库,如JAXB...
当Ajax请求到达Servlet时,Servlet会解析请求中的数据,然后对XML字符串或XML文件进行处理。 对于XML字符串的解析,JavaScript提供了DOM(Document Object Model)API。XML文档被解析为一个节点树,可以通过DOM方法...
Servlet 是 Java Web 技术的核心组件,它负责处理来自客户端(如浏览器)的请求并返回响应。要理解 Servlet 的工作原理,首先要了解Servlet容器,如Tomcat,因为Servlet是在容器中运行的。Servlet与Servlet容器之间...
例如,用户发送一个包含XML数据的POST请求,servlet可以解析这个XML并根据内容执行相应的业务逻辑,然后返回结果,也可以生成XML响应。 ```java import javax.servlet.*; import javax.servlet.http.*; import java...
在本例中,Servlet接收来自前端的Ajax请求,读取XML文件,可能进行一些处理(如过滤、排序),然后将处理后的XML数据返回给前端。Servlet通过`doGet`或`doPost`方法处理HTTP请求,使用`response.getWriter().print()...
总的来说,Servlet读取XML文件实现JSP分页涉及了Java的文件I/O、XML解析、数据处理、HTTP请求处理和页面渲染等多个环节,是一个综合性的Web开发任务。通过这种方式,我们可以构建一个灵活且可扩展的分页系统,满足...
1. **解析请求**: 在Servlet的`doGet()`或`doPost()`方法中,我们可以获取请求参数。对于GET请求,使用`request.getParameter()`;对于POST请求,如果数据是标准的表单编码(application/x-www-form-urlencoded),...
Servlet是Java中的一个接口,用于扩展服务器的功能,处理来自客户端的HTTP请求并返回响应。Servlet生命周期包括加载、初始化、服务、销毁四个阶段。开发者通过实现Servlet接口或者继承HttpServlet抽象类来创建自定义...
- 压缩包中的"JavaWeb开发-请求响应案例"可能包含了具体的代码示例,演示了如何接收包含XML数据的HTTP请求,然后使用Java进行解析,并生成含有XML响应的JavaWeb应用。 - 案例可能涵盖了请求参数的获取、XML数据的...
4. 数据返回:Servlet将XML数据以HTTP响应的形式返回给前端。 5. JavaScript解析:前端JavaScript接收到响应后,解析XML数据,动态生成新的Div节点,添加到DOM中,完成目录树的扩展。 在整个过程中,关键在于...