访问页面返回XML格式的数据

前端之家收集整理的这篇文章主要介绍了访问页面返回XML格式的数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

实际应用中经常遇到访问某个页面,系统以XML格式返回"成功"或者"失败"信息,客户端根据XML格式判断显示相应的页面

服务器端的处理完请求之后,以XML格式返回处理信息,可以在response中写回去,Action中就return null

示例如下:

  1. importjava.io.IOException;
  2. importjava.util.Iterator;
  3. importjava.util.List;
  4. @H_404_40@
  5. importjavax.servlet.http.HttpServletRequest;
  6. @H_404_40@ importjavax.servlet.http.HttpServletResponse;
  7. @H_404_40@ importorg.apache.log4j.Logger;
  8. importorg.apache.struts.action.ActionForm;
  9. @H_404_40@ importorg.apache.struts.action.ActionForward;
  10. importorg.apache.struts.action.ActionMapping;
  11. @H_404_40@ importorg.apache.struts.actions.DispatchAction;
  12. importorg.jdom.Document;
  13. @H_404_40@ importorg.jdom.Element;
  14. importorg.jdom.output.Format;
  15. @H_404_40@ importorg.jdom.output.XMLOutputter;
  16. publicclassGetAllActionextendsDispatchAction{
  17. privateHttpServletResponseresponse=null;
  18. publicActionForwardqueryAlluser(ActionMappingmapping,ActionFormform,
  19. @H_404_40@ HttpServletRequestrequest,HttpServletResponseresponse){
  20. this.response=response;
  21. @H_404_40@ //接收查询结果
  22. List<UserIPInfo>userPOList=null;
  23. //拼装HQL语句
  24. Stringhql="fromUserIPInfoaspoorderbyidasc";
  25. //生成XML格式的root
  26. ElementrootElt=newElement("userInformations");
  27. //获得commonDao的实例
  28. @H_404_40@ CommonDaoIf<UserIPInfo>commonDao=newCommonDaoImpl<UserIPInfo>();
  29. //调用CommonDaoImpl的query方法将所有符合条件的对象存入List中
  30. @H_404_40@ userPOList=commonDao.query(hql);
  31. for(Iterator<UserIPInfo>itor=userPOList.iterator();itor.hasNext();){
  32. UserIPInfotemp=itor.next();
  33. @H_404_40@ System.out.println(temp.getAddress());
  34. System.out.println(temp.getId());
  35. @H_404_40@ System.out.println(temp.getPort());
  36. }
  37. sendAccept(rootElt,userPOList);
  38. returnnull;
  39. @H_404_40@ }
  40. privatevoidsendAccept(ElementrootElt,List<UserIPInfo>list){
  41. //遍历List中的元素,将数据加入XML中
  42. @H_404_40@ for(Iterator<UserIPInfo>itor=list.iterator();itor.hasNext();){
  43. //获取符合条件的元素
  44. @H_404_40@ UserIPInfotemp=itor.next();
  45. //生成元素<user></user>
  46. Elementuser=newElement("user");
  47. //生成元素<userId></userId>
  48. ElementuserId=newElement("userId");
  49. //生成元素<userAddress></userAddress>
  50. ElementuserAddress=newElement("userAddress");
  51. //生成元素<userPort></userPort>
  52. ElementuserPort=newElement("userPort");
  53. //设置各个标签<userId><userAddress><userPort>的值
  54. @H_404_40@ userId.setText(Integer.toString(temp.getId()));
  55. userAddress.setText(temp.getAddress());
  56. @H_404_40@ userPort.setText(temp.getPort());
  57. //加入到上级标签<user>中去
  58. user.addContent(userId);
  59. @H_404_40@ user.addContent(userAddress);
  60. user.addContent(userPort);
  61. rootElt.addContent(user);
  62. send(rootElt);
  63. @H_404_40@ privatevoidsend(ElementrootElt){
  64. Documentdoc=newDocument(rootElt);
  65. @H_404_40@ XMLOutputterout=newXMLOutputter();
  66. //设置文件的编码格式
  67. @H_404_40@ out.setFormat(Format.getCompactFormat().setEncoding("UTF-8"));
  68. try{
  69. @H_404_40@ response.getOutputStream().write(out.outputString(doc).getBytes());
  70. }catch(IOExceptione){
  71. @H_404_40@ e.printStackTrace();
  72. }

比较讨巧的办法:就是直接转向某jsp页面

将数据设在request中,在jsp页面直接展示

在Action中就这样处理:

?
    importorg.apache.struts.action.ActionForm;
  1. importorg.apache.struts.action.ActionForward;
  2. @H_404_40@ importorg.apache.struts.action.ActionMapping;
  3. importorg.apache.struts.actions.DispatchAction;
  4. publicclassGetAllActionextendsDispatchAction{
  5. @H_404_40@ privateHttpServletResponseresponse=null;
  6. publicActionForwardqueryAlluser(ActionMappingmapping,
  7. HttpServletRequestrequest,HttpServletResponseresponse){
  8. @H_404_40@ this.response=response;
  9. //接收查询结果
  10. @H_404_40@ List<UserIPInfo>userPOList=null;
  11. //拼装HQL语句
  12. @H_404_40@ Stringhql="fromUserIPInfoaspoorderbyidasc";
  13. //获得commonDao的实例
  14. CommonDaoIf<UserIPInfo>commonDao=newCommonDaoImpl<UserIPInfo>();
  15. //调用CommonDaoImpl的query方法将所有符合条件的对象存入List中
  16. userPOList=commonDao.query(hql);
  17. request.setAttribute("userList",userPOList);
  18. returnmapping.findForward("success");
  19. }


在jsp页面中以XML形式处理

[html] ?
    <?xmlversion="1.0"encoding="UTF-8"?> @H_404_40@ <%@pagelanguage="java"contentType="text/html;charset=UTF-8"
  1. pageEncoding="UTF-8"%>
  2. @H_404_40@ <%@pageimport="java.util.Iterator"%>
  3. <%@pageimport="java.util.List"%>
  4. @H_404_40@ <%@pageimport="com.xxx.xxx.xxx.po.UserInfoPO"%>
  5. <user>
  6. @H_404_40@ <userName><%=request.getAttribute("pgmName")%></userName>
  7. <cycleListCount><%=request.getAttribute("count")%></cycleListCount>
  8. @H_404_40@ <cycleList>
  9. <%
  10. @H_404_40@ List<UserInfoPO>userList=(List<UserInfoPO>)request.getAttribute("userList");
  11. for(UserInfoPOpo:userList){
  12. @H_404_40@ %>
  13. <cycle>
  14. @H_404_40@ <cycleId><%=po.getId()%></cycleId>
  15. <pix><%=request.getAttribute("pix")%></pix>
  16. @H_404_40@ </cycle>
  17. %>
  18. @H_404_40@ </cycleList>
  19. </user>

试了一下,效果和response中写回去是一样的,客户端可以解析

猜你在找的XML相关文章