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("#####写入输出流完成");
}
}
分享到:
相关推荐
2. 服务器接收到请求后,通过Servlet容器查找对应的Servlet实例。 3. 如果Servlet尚未初始化,容器会创建Servlet实例并调用init()方法进行初始化。 4. 容器将请求封装成ServletRequest对象,将响应封装成Servlet...
在Web开发中,Servlet是一种Java类,用于处理HTTP请求并生成动态内容。当我们需要从HTML表单(form)中获取用户输入的数据并在网页上显示时,Servlet扮演着关键角色。本篇将详细介绍如何使用Servlet来接收form表单提交...
当Servlet接收到请求后,可以通过`RequestDispatcher`对象的`forward()`方法将请求转发给其他资源,如另一个Servlet、JSP页面等。 - 请求转发共享相同的请求环境,也就是说,请求参数和对象在转发过程中保持不变,...
在web.xml文件中配置Servlet,指定服务的URL映射和对应的JAX-WS服务实现类。 3. **部署Web应用** 将项目打包为WAR文件,部署到支持Servlet的Web服务器,如Tomcat。 4. **编写SOAP客户端** 创建Servlet,负责...
然后,Java端需要一个Servlet来接收和处理这些请求。Servlet是Java EE的一部分,它是一个特殊的Java类,可以响应来自HTTP客户端的请求。对于Flex发送的键值对数据,Servlet可以通过`HttpServletRequest`对象获取它们...
下面,我们将详细探讨Servlet请求响应的特殊处理。 1. **错误处理**: - ` ServletException` 和 `IOException`:Servlet在处理请求时,可能由于配置错误或网络问题抛出异常。开发者应该妥善捕获并处理这些异常,...
jsp 传参 servlet 接收中文乱码...在解决 jsp 传参 servlet 接收中文乱码问题需要我们了解 HTTP 请求和响应的编码机制,并且掌握正确的编码转换方法。只有这样,我们才能正确地传递中文字符,并且避免乱码问题的出现。
Servlet的定义 Servlet是运行在服务器端的Java程序,能够接收和响应客户端的请求,主要...Servlet通过监听特定的URL请求进行工作,当有请求到达时,服务器会调用相应的Servlet来处理请求并生成响应,然后返回给客户端。
- 加载与实例化:当服务器接收到对Servlet的首次请求时,会加载Servlet类并创建其实例。 - 初始化:创建实例后,调用`init()`方法进行初始化,通常用来配置Servlet。 - 服务:每当服务器接收到对Servlet的新请求...
在Java Web应用中,Servlet接收客户端(如浏览器)发送的请求,处理业务逻辑,并返回响应。在AJAX请求中,Servlet负责处理来自客户端的AJAX请求,执行相关操作并返回JSON或XML格式的数据。 2. **JSP**:JSP是Java的...
当Web服务器接收到客户端的请求时,它会调用相应的Servlet实例来处理请求并返回响应。 二、Servlet生命周期 Servlet的生命周期包括加载、初始化、服务、销毁四个阶段。加载时,Servlet容器创建Servlet实例;初始化...
在服务器端,我们需要一个Servlet来接收并处理这些文件。在Java中,我们可以使用`HttpServletRequest`的`getPart`方法获取上传的文件: ```java @WebServlet("/upload") public class FileUploadServlet extends ...
Servlet规范定义了服务器端程序如何接收和响应客户端(通常是浏览器)的请求。在这个初级基础知识入门笔记中,我们将深入理解Servlet的基本概念、开发过程、运行机制以及与HTTP协议的关系。 1. **Servlet基础** - ...
在Java中,Servlet是一个实现了javax.servlet.Servlet接口的类,可以接收和响应来自Web客户端的请求。通过继承HttpServlet类,我们可以覆盖doGet()和doPost()等方法来处理GET和POST请求。 1. **Servlet生命周期**:...
当用户点击这个链接时,浏览器发起GET请求,Servlet接收到请求并返回响应。 4. **通过JavaScript函数** 使用JavaScript,可以在前端代码中动态地触发对Servlet的请求。例如,在HTML文件中定义一个JavaScript函数`...
Servlet是一种Java程序,它可以接收并响应来自Web客户端(如浏览器)的请求。在Servlet-api文档中,包含了Servlet规范、接口和类的详细说明,是学习和理解Servlet技术的基础。 Servlet-api的核心知识点包括: 1. *...
- **加载与实例化**:当Web服务器启动或第一次接收到对Servlet的请求时,会加载Servlet类并创建其实例。 - **初始化**:Servlet实例被创建后,会调用`init()`方法进行初始化,一般用于设置Servlet的内部状态。 - ...
通过解压并运行此项目,我们可以实际体验到Servlet接收和处理表单数据的过程。 总结,Servlet是Java Web开发中的关键组成部分,它通过处理HTTP请求和构建响应来实现动态网页。通过学习和实践"Servlet入门小例子",...
1. 加载:当服务器启动或第一次接收到对Servlet的请求时,会加载Servlet类并创建一个Servlet实例。 2. 初始化:加载后,Servlet实例会调用`init()`方法进行初始化,例如设置配置参数或打开数据库连接等。 3. 服务:...
Servlet通过Servlet引擎接收HTTP请求,处理数据,然后生成响应。客户端(通常是Web浏览器)向服务器发送请求,Servlet引擎接收到请求后,调用相应的Servlet来处理,Servlet再将处理结果返回给引擎,最终由引擎转发回...