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
%>
原文地址:http://www.cnblogs.com/friends-wf/p/3734291.html