out对象

1.同时使用out和response的输出字符流给页面输出数据。

<%

    out.write("jack<br/>");

    response.getWriter().write("lucy<br/>");

%>

输出结果是lucy  jack。因为以上两个都是字符流且带有自己的缓冲区,因此JSPWriiter的缓冲区数据在JSP执行完毕之后才将数据刷新给Response字符流的缓冲区,因此out对象输出的数据在后面。如果需要提前输出,那么需要进行缓冲区数据的强行刷新。

<%

     out.write("jack<br/>");

     out.flush();

     response.getWriter().write("lucy<br/>");

%>

2.使用JspWriiter和response的字节流同时输出数据。

<%

    out.write("jack<br/>");

    out.flush();

    response.getOutputStream().write("lucy<br/>".getBytes());

%>

以上代码运行结果是jack然后抛出异常getWriter() has already been called for this response。在JSP中不能同时使用字节流和字符流。

3. 如何使用JSP实现图片的下载。

<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%

         // 获取图片资源

         InputStream in =

application.getResourceAsStream("/imgs/0004.jpg");

         // 指定处理方式

         response.setHeader("content-disposition",

"attachment;filename=0004.jpg");

         // 获取字节输出流

         byte [] b = new byte[1024];

         int len = 0;

         // 边读边写

         OutputStream output = response.getOutputStream();

         while((len = in.read(b)) != -1){

            output.write(b,0,len);

         }

         // 释放资源

         in.close();%>

为了避免页面JSP中使用out对象,那么需要将JSP的所有的模板元素全部删除掉包括页面中的回车和换行。

4. 使用out隐含对象的write方法和println方法。

<%

       String str1 = "data";    

       String str2 = null;

       int a = 65;

       out.write(str1);          // data

       out.write(str2);          // 不显示

       out.write(a);             // A

       out.write("<hr/>");

       out.println(str1);        // data

       out.println(str2);        // null

       out.println(a);           // 65

%>

原文地址:https://www.cnblogs.com/friends-wf/p/3734291.html