`

Servlet接收URL类请求做出响应

    博客分类:
  • JAVA
阅读更多
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("#####写入输出流完成");
	}
}
分享到:
评论

相关推荐

    servlet接收form表单提交的数据

    在Web开发中,Servlet是一种Java类,用于处理HTTP请求并生成动态内容。当我们需要从HTML表单(form)中获取用户输入的数据并在网页上显示时,Servlet扮演着关键角色。本篇将详细介绍如何使用Servlet来接收form表单提交...

    Web编程(Java )-Servlet API中请求和响应的应用.doc

    表单提交的目标URL设置为`process`,这意味着一个名为`ProcessServlet`的Servlet将处理这些请求。 在`ProcessServlet`中,实验者需要通过Servlet API读取表单提交的数据。这涉及到使用`HttpServletRequest`对象的`...

    jsp和servlet请求与响应

    ### JSP和Servlet请求与响应详解 #### 一、JSP内置对象概述 JSP(Java Server Pages)是一种用于创建动态网页的技术。它基于Java Servlet规范,并提供了许多内置对象,以便开发者可以更方便地处理HTTP请求和响应。...

    使用Servlet技术响应用户请求

    Servlet在服务器端运行,接收来自客户端浏览器的HTTP请求,处理这些请求,然后生成响应内容,通常以HTML形式返回给用户。Servlet的使用不仅限于HTML,还可以包括XML、JSON等各种数据格式。 Servlet的实现基于Java的...

    Web开发+Servlet+请求和响应+入门

    在传统的Web应用中,当用户通过浏览器发送请求到服务器时,Servlet接收这个请求,执行相应的业务逻辑,然后生成响应返回给客户端。Servlet生命周期包括加载、实例化、初始化、服务、销毁等阶段,这些都是在Servlet...

    servlet技术初步入门

    2. 服务器接收到请求后,通过Servlet容器查找对应的Servlet实例。 3. 如果Servlet尚未初始化,容器会创建Servlet实例并调用init()方法进行初始化。 4. 容器将请求封装成ServletRequest对象,将响应封装成Servlet...

    servlet请求转发、重定向、包含

    当Servlet接收到请求后,可以通过`RequestDispatcher`对象的`forward()`方法将请求转发给其他资源,如另一个Servlet、JSP页面等。 - 请求转发共享相同的请求环境,也就是说,请求参数和对象在转发过程中保持不变,...

    基于Servlet发送、接收SOAP消息的java源程序

    在web.xml文件中配置Servlet,指定服务的URL映射和对应的JAX-WS服务实现类。 3. **部署Web应用** 将项目打包为WAR文件,部署到支持Servlet的Web服务器,如Tomcat。 4. **编写SOAP客户端** 创建Servlet,负责...

    练习servlet

    此外,Servlet API提供了一些重要类和接口,如`HttpServletRequest`和`HttpServletResponse`,它们分别用于获取请求信息和构建响应。例如,你可以通过`HttpServletRequest`的`getParameter()`方法获取请求参数,通过...

    Flex使用HttpService以键值对的形式发送请求,Java使用Servlet接收

    然后,Java端需要一个Servlet来接收和处理这些请求。Servlet是Java EE的一部分,它是一个特殊的Java类,可以响应来自HTTP客户端的请求。对于Flex发送的键值对数据,Servlet可以通过`HttpServletRequest`对象获取它们...

    Servlet请求响应的特殊处理.rar

    下面,我们将详细探讨Servlet请求响应的特殊处理。 1. **错误处理**: - ` ServletException` 和 `IOException`:Servlet在处理请求时,可能由于配置错误或网络问题抛出异常。开发者应该妥善捕获并处理这些异常,...

    Servlet技术应用

    Servlet技术是Java Web...在这个登录程序中,Servlet接收表单数据,存储在会话中,然后通过重定向让JSP页面展示登录信息。这是一个基础的Servlet应用示例,实际项目中可能涉及到更复杂的验证、错误处理和安全性考虑。

    jsp传参 servlet接收中文乱码问题的解决方法.docx

    jsp 传参 servlet 接收中文乱码...在解决 jsp 传参 servlet 接收中文乱码问题需要我们了解 HTTP 请求和响应的编码机制,并且掌握正确的编码转换方法。只有这样,我们才能正确地传递中文字符,并且避免乱码问题的出现。

    servlet api servlet api

    - 加载与实例化:当服务器接收到对Servlet的首次请求时,会加载Servlet类并创建其实例。 - 初始化:创建实例后,调用`init()`方法进行初始化,通常用来配置Servlet。 - 服务:每当服务器接收到对Servlet的新请求...

    servlet调用的几种方式

    当用户点击这个链接时,浏览器发起GET请求,Servlet接收到请求并返回响应。 4. **通过JavaScript函数** 使用JavaScript,可以在前端代码中动态地触发对Servlet的请求。例如,在HTML文件中定义一个JavaScript函数`...

    一个servlet类处理多个请求(反射优化),简单易懂

    Servlet是Java Web开发中的核心组件,用于接收和响应HTTP请求。在传统的Web应用程序中,我们通常为每个HTTP请求创建一个新的Servlet实例,这可能导致大量的对象创建,占用系统资源,影响性能。"一个servlet类处理多...

    Java+servlet+jsp页面ajax请求

    在Java Web应用中,Servlet接收客户端(如浏览器)发送的请求,处理业务逻辑,并返回响应。在AJAX请求中,Servlet负责处理来自客户端的AJAX请求,执行相关操作并返回JSON或XML格式的数据。 2. **JSP**:JSP是Java的...

    Applet与Servlet之间的通信与交互

    Servlet接收请求后处理数据,并通过HTTP响应将结果返回给Applet。这种方法简单直观,但可能会暴露敏感信息。 2. **使用Servlet输出流**:Servlet可以将数据写入到HTTP响应的输出流中,Applet通过读取这个流来获取...

    Servlet

    1. 加载与实例化:当服务器启动或首次接收到对Servlet的请求时,会加载Servlet类并创建其实例。 2. 初始化:创建实例后,服务器调用`init()`方法进行初始化,通常在这里进行配置文件读取、数据库连接等初始化操作。 ...

    Java_Servlet教程(繁体)

    当Web服务器接收到客户端的请求时,它会调用相应的Servlet实例来处理请求并返回响应。 二、Servlet生命周期 Servlet的生命周期包括加载、初始化、服务、销毁四个阶段。加载时,Servlet容器创建Servlet实例;初始化...

Global site tag (gtag.js) - Google Analytics