response.getWriter().write()与out.print()的区别
-
1首先介绍下write()和print方法的区别:
- 1)、write()仅支持输出字符类型数据,字符、字符数组、字符串等
- 2)、print()可以将各种类型(包括Object)的数据通过默认编码转换成bytes字节形式,这些字节通过write(int c)方法被输出
-
2.介绍response.getWriter()和out的区别:
- 1)out和response.getWriter的类不一样,一个是java.io.PrintWriter,一个是jspWriter
- 2)执行原理不同:JspWriter(rsponse.getWriter())相当于一个缓冲功能的printWriter,他不是直接将数据传输到页面,而是将数据刷新到response缓冲区后再输出
- 3)out为jsp的内置对象,刷新jsp页面,自动初始化获得out对象,所以使用out对象需要刷新页面的,而response.getWriter()相应信息通过out对象输出到网页上,当相应结束时它自动被关闭,与jsp页面无关,无需刷新页面
- 4)out的print()方法和print()方法在缓冲区溢出并且没有自动刷新时候回产生ioexception,而response.getWriter()方法的print和println中都一直ioexception异常的,不会产生ioexception
- out.println在页面不能进行换行,如果换行只能输出html换行代码out.println("")
通过输出流输入二进制文件到前端
bt为二进制byte[]
response.setHeader("Content-Type", "image/jpeg");
InputStream in = new ByteArrayInputStream(bt);
OutputStream out = response.getOutputStream();
try{
byte[] buffer = new byte[1024];
int length = 0;
while ((length = in.read(buffer)) != -1) {
out.write(buffer, 0, length);
}
}catch(Exception e){
logger.error(e.getMessage());
}finally{
try {
if(in!=null){
in.close();
}
if(out!=null){
out.flush();
out.close();
}
} catch (IOException e) {
logger.error(e.getMessage());
}
}