Servlet接收URL类请求做出响应

package com.yl.servlet;

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class ForeignServlet extends HttpServlet {

public ForeignServlet() {
super();
}

public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
requestXML(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
requestXML(request, response);
}

public void init() throws ServletException {
}

public void requestXML(HttpServletRequest request, HttpServletResponse response) throws IOException
{
/**********************************读取传进来的xml字符流**********************************************/
BufferedReader bfreader=request.getReader();
StringBuffer sb=new StringBuffer();
String oneLine=null;

while((oneLine=bfreader.readLine())!=null)
{
sb.append(oneLine);
sb.append("\r\n");
}
bfreader.close();
String str=new String(sb.toString().getBytes("iso8859_1"),"GB2312");//避免字符串中有中文所以做一次编码转换

// NumDeptDataForeignService service=new NumDeptDataForeignService();

/*将读取到的XML格式字符进行解析并执行相关的操作要求*/
System.out.println("#####输入的字符串:\n"+str);

//Document doc=service.proccessRequest(str);

Document rootdoc = DocumentHelper.createDocument();
Element myElement = rootdoc.addElement("student");
Element andy = myElement.addElement("andy");
andy.setText("andy");

Element Jane = myElement.addElement("Jane");
Jane.setText("Jane");


// byte[] xmlByte=doc.asXML().getBytes("GB2312");
System.out.println("#####开始输出字符串");
/**********************************输出xml字符流**********************************************/
OutputStream out=response.getOutputStream();
if(rootdoc!=null)
{

//-------------------------------------
//将返回的文档对象写入到字节数组中去
//-------------------------------------
ByteArrayOutputStream bOut=new ByteArrayOutputStream();
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("GB2312"); //设置XML文档的编码类型
format.setSuppressDeclaration(false);//设置是否打印文档头,即:<?xml version="1.0" encoding="GB2312"?>
format.setIndent(true); //设置是否缩进
format.setIndent(" "); //以空格方式实现缩进
format.setNewlines(true); //设置是否换行

XMLWriter writer=new XMLWriter(bOut,format);
writer.write(rootdoc); //将doc写入到字节数组流中去

String xmlstr=bOut.toString();

System.out.println(xmlstr);

writer.close();
bOut.close();
//-------------------------------------
//将字节数组写到输出流中去
//-------------------------------------
byte[] xmlByte=xmlstr.getBytes("GB2312"); //转码
System.out.println("返回数据的字节数:"+xmlByte.length);
BufferedOutputStream bufferOut=new BufferedOutputStream(out,1024*1024); //将缓冲区设置为1M
bufferOut.write(xmlByte);
bufferOut.close();
}
out.close();
System.out.println("#####写入输出流完成");
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值