- 浏览: 132726 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
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 802mvn dependency:resolve 了解你项目的 ... -
JXL POI 导出excel 包括图片
2010-05-27 15:22 9128主要的问题还是JXL只支持PNG格式的图片,没辙,只有转换格式 ... -
decorator(装饰模式)io包理解
2010-03-30 16:01 1449decorator的结构如下: MyInterfac ... -
java设计模式
2010-03-25 11:28 775策略设计模式: 创建一个能够根据所传递的参数对象的不同而具有不 ... -
web开发的问题
2010-03-22 00:56 8761. filter的优先级 在应用中会用到很多的过滤器,想下面 ... -
FTP工具类
2010-02-26 11:50 4781功能就是将指定文件夹下面的所有文件都上传到FTP上 /** ... -
csv文件下载
2010-02-05 15:21 2452BufferedOutputStream bos = null ... -
struts不定数文件上传
2010-02-04 22:18 930Hashtable files=voteForm.getMul ... -
JFreeChart封装工具类
2010-02-03 18:37 3901package com.wasu.itv.common.uti ... -
J2SE
2010-01-22 15:08 779public static void main(String[ ... -
struts2 内建效验器
2010-01-22 10:54 1410http://struts.apache.org/2.0.9/ ... -
struts2内建拦截器
2010-01-21 12:50 10081. alias:实现在不同请求中相似参数别名的转换; 2. ... -
struts2异常收集
2010-01-19 13:21 8211. ognl.OgnlException: target i ... -
apache VSF 操作类
2010-01-13 17:54 1120package com.biya.dao.jdbc; ... -
记录开发过程用的代码段001--POI生成excel表格,如何合并单元格
2009-12-30 16:51 3246POI生成excel表格,如何 ... -
List 存取date排序
2009-12-10 14:46 7611主要利用 Comparator这个接口来实现,我这里是排序li ... -
JSP,SERVLET
2009-12-03 16:03 7551. 直接中文作为参数提交R=URL(test.do?name ... -
数字,金额 转 中文大写
2009-11-27 16:05 1314import java.text.DecimalFormat; ... -
Lucene:基于Java的全文检索引擎简介
2009-11-24 15:53 1006http://www.chedong.com/tech/luc ... -
BIRT 安装
2009-11-17 10:31 2106最近又用到birt报表 ,年初的时候用过一次,到现在忘的差不多 ...
相关推荐
一、jQuery 解析ajax请求返回的xml格式的数据 1、发送ajax请求 [removed] function jqxml(){ $.ajax({ url:"http://localhost:18080/servlet/Servlet1", // 请求方式 type:"post", // 服务器返回的数据的格式...
Servlet 容器如何解析你在 web.xml 中定义的 Servlet ?用户的请求是如何被分配给指定的 Servlet 的? Servlet 容器如何管理 Servlet 生命周期?你还将了解到最新的 Servlet 的 API 的类层次结构,以及 Servlet 中...
3. web容器通过请求的URL来选择需要用哪个Servlet来处理请求(这个就是web.xml中配置的或者 @webServlet注解的作用了) 4. Servlet根据请求对象(HttpServletRequest)来决定做什么样的处理,然后通过响应对象 ...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
解析web.xml文件,通过请求uri匹配配置文件中servlet,并通过类反射机制执行对应servlet
AjaxWithServlet解析xm字符串及xml文件,这个小例子使用的java Servlet,然后对ajax的处理原理,回调函数的使用以及如何解析xml字符串和xml文件进行了注释,简单易懂。
2. 3 处理表单和返回数据的实例 2. 4 错误处理和日志记录 2. 4. 1 Java中的异常处理机制 2. 4. 2 在Java Servlet中处理异常 2. 4. 3 向浏览器发送标准的HTTP错误 2. 4. 4 服务器端日志记录 2. 5 Servlet在n-...
使用servlet模拟struts1的工作原理,解析xml,处理请求,自动封装数据
Servlet的执行流程也就是servlet的生命周期,当服务器启动的时候生命周期开始,然后通过init()《启动顺序根据web.xml里的startup-on-load来确定加载顺序》 方法初始化servlet,再根据不同请求调用doGet或doPost...
Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据。 Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此...
1. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径。在上图 的URL中,获取的资源路径就是/demo01 2. 查找web.xml文件,是否有对应的标签体内容。 3. 如果有,则在找到对应的...
用sevrlet模拟Struts2的简单功能。从拦截请求、解析自定义xml数据文件以及动态生成action的代理去执行目标方法,并实现了简单的日志拦截【interceptor】
本文将带你认识 Java Web 技术是如何基于 Servlet 工作,你将知道:... Servlet 容器如何解析你在 web.xml 中定义的 Servlet ?用户的请求是如何被分配给指定的 Servlet 的? Servlet 容器如何管理 Servlet 生命周期?
3.在控制层调用业务逻辑层(service),数据持久层(DAO)返回控制层,请求完成获取一个结果,设置一个要跳转的视图,(ModelAndView装载并传输数据,设置视图) 4.核心控制器调用 视图解析器:ViewResolver解析...
一:登陆页面:客户端通过httpGet方法进行传值,发送...三:查询页面:客户端通过url方法进行传值,发送请求,服务器端通过jsp进行交互,输出响应的值给客户端,客户端通过SAX解析xml中的数据,然后分页显示到listview中
DWR.xml配置文件说明书 1、 建立dwr.xml 配置文件 任何一个dwr.xml的文件都需要包含DWR DOCTYPE的声明行,格式如下: <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" ...
3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及解析器 7、其它 目录: Spring MVC 3.0新特性 Spring MVC框架结构 Spring MVC框架结构 框架的实现者 目录 HTTP请求映射原理 Spring MVC...