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("#####写入输出流完成");
}
}
分享到:
相关推荐
在Web开发中,Servlet是一种Java类,用于处理HTTP请求并生成动态内容。当我们需要从HTML表单(form)中获取用户输入的数据并在网页上显示时,Servlet扮演着关键角色。本篇将详细介绍如何使用Servlet来接收form表单提交...
表单提交的目标URL设置为`process`,这意味着一个名为`ProcessServlet`的Servlet将处理这些请求。 在`ProcessServlet`中,实验者需要通过Servlet API读取表单提交的数据。这涉及到使用`HttpServletRequest`对象的`...
### JSP和Servlet请求与响应详解 #### 一、JSP内置对象概述 JSP(Java Server Pages)是一种用于创建动态网页的技术。它基于Java Servlet规范,并提供了许多内置对象,以便开发者可以更方便地处理HTTP请求和响应。...
Servlet在服务器端运行,接收来自客户端浏览器的HTTP请求,处理这些请求,然后生成响应内容,通常以HTML形式返回给用户。Servlet的使用不仅限于HTML,还可以包括XML、JSON等各种数据格式。 Servlet的实现基于Java的...
在传统的Web应用中,当用户通过浏览器发送请求到服务器时,Servlet接收这个请求,执行相应的业务逻辑,然后生成响应返回给客户端。Servlet生命周期包括加载、实例化、初始化、服务、销毁等阶段,这些都是在Servlet...
2. 服务器接收到请求后,通过Servlet容器查找对应的Servlet实例。 3. 如果Servlet尚未初始化,容器会创建Servlet实例并调用init()方法进行初始化。 4. 容器将请求封装成ServletRequest对象,将响应封装成Servlet...
当Servlet接收到请求后,可以通过`RequestDispatcher`对象的`forward()`方法将请求转发给其他资源,如另一个Servlet、JSP页面等。 - 请求转发共享相同的请求环境,也就是说,请求参数和对象在转发过程中保持不变,...
在web.xml文件中配置Servlet,指定服务的URL映射和对应的JAX-WS服务实现类。 3. **部署Web应用** 将项目打包为WAR文件,部署到支持Servlet的Web服务器,如Tomcat。 4. **编写SOAP客户端** 创建Servlet,负责...
此外,Servlet API提供了一些重要类和接口,如`HttpServletRequest`和`HttpServletResponse`,它们分别用于获取请求信息和构建响应。例如,你可以通过`HttpServletRequest`的`getParameter()`方法获取请求参数,通过...
然后,Java端需要一个Servlet来接收和处理这些请求。Servlet是Java EE的一部分,它是一个特殊的Java类,可以响应来自HTTP客户端的请求。对于Flex发送的键值对数据,Servlet可以通过`HttpServletRequest`对象获取它们...
下面,我们将详细探讨Servlet请求响应的特殊处理。 1. **错误处理**: - ` ServletException` 和 `IOException`:Servlet在处理请求时,可能由于配置错误或网络问题抛出异常。开发者应该妥善捕获并处理这些异常,...
Servlet技术是Java Web...在这个登录程序中,Servlet接收表单数据,存储在会话中,然后通过重定向让JSP页面展示登录信息。这是一个基础的Servlet应用示例,实际项目中可能涉及到更复杂的验证、错误处理和安全性考虑。
jsp 传参 servlet 接收中文乱码...在解决 jsp 传参 servlet 接收中文乱码问题需要我们了解 HTTP 请求和响应的编码机制,并且掌握正确的编码转换方法。只有这样,我们才能正确地传递中文字符,并且避免乱码问题的出现。
- 加载与实例化:当服务器接收到对Servlet的首次请求时,会加载Servlet类并创建其实例。 - 初始化:创建实例后,调用`init()`方法进行初始化,通常用来配置Servlet。 - 服务:每当服务器接收到对Servlet的新请求...
当用户点击这个链接时,浏览器发起GET请求,Servlet接收到请求并返回响应。 4. **通过JavaScript函数** 使用JavaScript,可以在前端代码中动态地触发对Servlet的请求。例如,在HTML文件中定义一个JavaScript函数`...
Servlet是Java Web开发中的核心组件,用于接收和响应HTTP请求。在传统的Web应用程序中,我们通常为每个HTTP请求创建一个新的Servlet实例,这可能导致大量的对象创建,占用系统资源,影响性能。"一个servlet类处理多...
在Java Web应用中,Servlet接收客户端(如浏览器)发送的请求,处理业务逻辑,并返回响应。在AJAX请求中,Servlet负责处理来自客户端的AJAX请求,执行相关操作并返回JSON或XML格式的数据。 2. **JSP**:JSP是Java的...
Servlet接收请求后处理数据,并通过HTTP响应将结果返回给Applet。这种方法简单直观,但可能会暴露敏感信息。 2. **使用Servlet输出流**:Servlet可以将数据写入到HTTP响应的输出流中,Applet通过读取这个流来获取...
1. 加载与实例化:当服务器启动或首次接收到对Servlet的请求时,会加载Servlet类并创建其实例。 2. 初始化:创建实例后,服务器调用`init()`方法进行初始化,通常在这里进行配置文件读取、数据库连接等初始化操作。 ...
当Web服务器接收到客户端的请求时,它会调用相应的Servlet实例来处理请求并返回响应。 二、Servlet生命周期 Servlet的生命周期包括加载、初始化、服务、销毁四个阶段。加载时,Servlet容器创建Servlet实例;初始化...