jquery-ajax请求action读取oracle数据库clob字段xml数据格式化显示(struts2)

1.页面js

function showXML(aa,bb){
			$.ajax({
				url : encodeURI("showXML.action?aa="+aa+"&bb="+bb),
				type : 'POST',
				dataType : "html",
				success : function(data) {
				document.getElementById('mainContent').innerText = data;
					
				}
			});
	}

2.action类

public String showXML() throws IOException, SQLException, SAXException, ParserConfigurationException, DocumentException{  
          
        HttpServletRequest request=ServletActionContext.getRequest();  
        HttpServletResponse response=ServletActionContext.getResponse();  
        response.setContentType("text/xml;charset=utf-8"); //(1)一定要在(2)的前面,不然会乱码    
        response.setCharacterEncoding("UTF-8"); //(2)    
        response.setHeader("Cache-Control", "no-cache");     
        PrintWriter pw=response.getWriter();    
          
        String aa=request.getParameter("aa");  
        String bb=request.getParameter("bb");  
          
        JavBean javaBean=xmlService.showXML(aa, bb);  
          
        Clob clob=javaBean.getClobXml();  
          
//      String msgXML=clob.getSubString(1L,(int)clob.length());  
          
//      InputStream input = clob.getAsciiStream();    //乱码  
//        int len = (int)clob.length();  
//        byte[] by = new byte[len];  
//        int i ;  
//        while(-1 != (i = input.read(by, 0, by.length))) {  
//            input.read(by, 0, i);  
//        }  
//      String msgXML = new String(by);  
        
		//CLOB转String
        Reader inStreamDoc = clob.getCharacterStream();     
        char[] tempDoc = new char[(int) clob.length()];     
        inStreamDoc.read(tempDoc);     
        inStreamDoc.close();     
        
        String msgXML= new String(tempDoc);     
  
//      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
//      Document doc = factory.newDocumentBuilder().parse(new ByteArrayInputStream(msgXML.getBytes()));  
            
		//格式化xml字符串
        SAXReader reader = new SAXReader();  
        Document _document =  reader.read(new StringReader(msgXML));  //dom4j,not w3c
        String paramXML = "";  
        OutputFormat format = OutputFormat.createPrettyPrint();  
        format.setEncoding("utf-8");              
        ByteArrayOutputStream out = new ByteArrayOutputStream();   
        XMLWriter writer = new XMLWriter(out, format);   
        writer.write(_document);  
        
        writer.toString();  
        writer.flush();  
        writer.close();  
            
            
        paramXML = out.toString(format.getEncoding()); 
		
		//页面显示 
        StringBuilder sb=new StringBuilder();    
        sb.append(paramXML);  
          
        pw.print(sb.toString());    
        pw.flush();    
        pw.close();   
        return "success";  
    }  



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值