servletinputstream 和 servletoutputstream

servletinputstream

public abstract class ServletInputStream extends InputStream 

       定义了一个用来读取客户端的请求信息的输入流。这是一个Servlet引擎提供的抽象类。一个Servlet通过使用ServletRequest接口获得了对一个ServletInputStream对象的说明。

       这个类的子类必须提供一个从InputStream接口读取有关信息的方法。

//获取输入流

ServletInputStream inputStream = request.getInputStream();

//输出流

ByteArrayOutputStream OutputStreamBuffer = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int m = 0;

while ((m = inputStream.read(buffer, 0, 1024)) > 0) {

//从输入流中读取数据 ,再写到 输出流中

OutputStreamBuffer.write(buffer, 0, m);
        }

servletoutputstream

  public abstract class ServletOutputStream extends OutputStream 

       这是一个由Servlet引擎使用的抽象类。Servlet通过使用ServletResponse接口的使用获得了对一个这种类型的对象的说明。利用这个输出流可以将数据返回到客户端。

       这个类的子类必须提供一个向OutputStream接口写入有关信息的方法。

       在这个接口中,当一个刷新或关闭的方法被调用时。所有数据缓冲区的信息将会被发送到客户端,也就是说响应被提交了。请注意,关闭这种类型的对象时不一定要关闭隐含的socket流。

ServletOutputStream outputStream = response.getOutputStream();

outputStream.write("响应信息:");

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在开发Java Web应用程序时,通常会涉及到将ServletOutputStream转换为InputStream的需求。这通常是因为要将一个Servlet中生成的输出数据传递给另一个Servlet来处理,而这个Servlet所期望的输入数据类型是InputStream。下面给出一种简单的方法可以实现这个转换过程。 在Servlet中,可以通过以下步骤将ServletOutputStream转换为ByteArrayInputStream: 1. 实现一个继承自ServletOutputStream的子类,并重写该类的write()方法。 2. 在write()方法中,将接收到的数据添加到一个ByteArrayOutputStream中。 3. 在Servlet执行完毕后,可以通过ByteArrayInputStream获取到写入的数据,并将其传递给需要使用InputStreamServlet。 下面是具体的实现步骤: 1. 创建一个自定义的ServletOutputStream子类,实现write()方法 public class MyServletOutputStream extends ServletOutputStream { private ByteArrayOutputStream baos = new ByteArrayOutputStream(); @Override public void write(byte[] b) throws IOException { baos.write(b); } @Override public void write(int b) throws IOException { baos.write(b); } } 2. 在Servlet中,将response.getOutputStream()替换为自定义的MyServletOutputStream实例 MyServletOutputStream sos = new MyServletOutputStream(); PrintWriter pw = response.getWriter(); response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); response.setBufferSize(1024); response.getOutputStream(); 3. 实现Servlet的doPost()方法,在方法内部获取MyServletOutputStream中的数据 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { MyServletOutputStream sos = new MyServletOutputStream(); PrintWriter pw = response.getWriter(); response.setContentType("text/html;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); response.setBufferSize(1024); response.getOutputStream(); // 执行输出操作,并将数据写入到 MyServletOutputStream 中 sos.write(“Hello World”.getBytes()); // 转换 MyServletOutputStream 为 ByteArrayInputStream ByteArrayInputStream bis = new ByteArrayInputStream(sos.baos.toByteArray()); } 通过以上的实现,我们可以将ServletOutputStream成功转换为InputStream,实现Servlet间数据的传递。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值