servlet-response.getWriter().close() 必须关闭吗?不关闭会怎样?

问题描述

response.getWriter().close() 必须关闭吗?不关闭会怎样?

【PrintWriter out = response.getWriter() 必须关闭吗?不关闭会怎样?】
经过一番搜索,得出如下信息:
1、通常情况下,任何流都是需要关闭的,否则将造成 memory leak(内存溢出)。
但是在 servlet 中的,不是一定要关闭的,因为 response 会帮你关闭 。
问题:对于这句话不确定是否正确?若是正确的,那么它是如何关闭的?

2、Servlet 与 Filter 中的 request 、response 、out 对象是同一个对象。
很多时候 Filter 需要把 response 里面的内容拿出来,进行过滤,比如编码上的问题。
若调用了 out.close(),则其它的 Filter 将出现异常。
响应结束时,Servlet 会自动将 out 关闭。

3、若没有用到过滤器,则可以在 Servlet 中显示调用 out.close() 关闭 PrintWriter 。

4、有用到过滤器,可以在 Servlet 的 destroy 方法中,显式调用 out.close 方法。
问题:servlet 中 destroy 默认是如何执行的?

时间: 2024-09-14 01:14:07

servlet-response.getWriter().close() 必须关闭吗?不关闭会怎样?的相关文章

流关闭-BufferedReader与BufferedWriter流这样用不关闭会一直驻留在内存中吗

问题描述 BufferedReader与BufferedWriter流这样用不关闭会一直驻留在内存中吗 下面是代码部分: public static void count() throws IOException { Properties prop = new Properties(); File file = new File("app.ini"); if (!file.exists()) file.createNewFile(); prop.load(new BufferedRea

已经被调用此响应-使用response.getWriter.write()报错

问题描述 使用response.getWriter.write()报错 求大神解答. 解决方案 有地方使用了getOutputStream,就不能再用writer方式输出.只能使用一种 使用 ServletOutputStream outs = response.getOutputStream(); OutputStreamWriter ow = new OutputStreamWriter(outs,"UTF-8"); ow.write(rtnJSON); ow.flush(); o

response.getWriter().write问题

问题描述 ...逻辑处理完后,我要发送给jsp一个信息,比如error代码大体如下publicStringprintResponse(){PrintWriterout;try{out=response.getWriter();StringprintContent="error";out.write(printContent);logger.info("printContentbankorder="+printContent);out.flush();out.clos

response.getWriter().write()向前台打印信息乱码问题解决_JSP编程

response.getWriter().write() 功能:向前台页面显示一段信息. 当在普通的url方式中,会生成一个新的页面来显示内容. 当在ajax的方式中,会在alert中显示内容. 使用response.getWriter().write() 乱码问题 解决方式: response.setContentType("text/html;charset=UTF-8"); response.getWriter().write("在此处传递要显示的内容!");

【J2EE十三个规范】Web应用层之JSP和Servlet

[学习概要]     本篇博客开始将会开始总结J2EE十三个规范的内容,在学习完十三个规范之后,宏观梳理了一遍,将其进行归类和联系,十三个规范是什么是必须要知道的.下面我们就从Web应用层开始. [学习笔记]     一.是什么     1.什么是JSP?     JSP与ASP.PHP等语言相似,是运行在服务端的语言.     JSP,Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%>结束.     2.什么

页面的缓存与不缓存设置及html页面中meta的作用_java

HTML的HTTP协议头信息中控制着页面在几个地方的缓存信息,包括浏览器端,中间缓存服务器端(如:squid等),Web服务器端.本文讨论头信息 中带缓存控制信息的HTML页面(JSP/Servlet生成好出来的也是HTML页面)在中间缓存服务器中的缓存情况. HTTP协议中关于缓存的信息头关键字包括Cache-Control(HTTP1.1),Pragma(HTTP1.0),last-Modified,Expires等. HTTP1.0中通过Pragma 控制页面缓存,可以设置:Pragma或

ajax xmlhttprequest.responseText

问题描述 代码如下(貌似不会进XMLHttpReq.status == 200这个判断里,但没抱任何错):servlet: response.getWriter().print(task_id);页面:function hh(){createXMLHttpRequest();var url="<%=request.getContextPath()%>/apply";var pemer = "action=save&uid="+uid;XMLHtt

javaweb实现在线支付功能_java

1.在线支付概述 什么是在线支付呢?没错,就是在网上花钱!大家一定有过这样的经历.但是你可能不太了解在线支付的"内情",下面我们来了解一下! 如果你现在开始经营一个电子商务网站,用户买了东西一定要支付,你的网站一定要可以连接各大银行了,然后在各大银行支付完成后,再返回到你的网站上显示"支付成功"! 这就是今天我们要做的事情,连接银行的网银系统完成支付.说专业一点,我们称之为"开发在线支付的网关" 2.两种在线支付的方式 在线支付一共有两种方式:

Servlet中的response实现换行

问题描述 Servlet中的response实现换行 response.getWriter().print(""+i);//只有这个能实现换行 response.getWriter().print(i+"");//这个并不能实现换行 response.getWriter().print("");//这个也不能实现换行 请问这是为什么呢? 解决方案 换行符在页面上又不是换行的意思,,response.getWriter().print("