getOutputStream 和 getWriter方法不能同时共用,具体原因不详。估计是不能同时有两个输出流,不然电脑就爆炸了。
-------JAVA DOCS---------------------------------------------------
getOutputStream
public ServletOutputStream getOutputStream() throws java.io.IOException
Returns a ServletOutputStream suitable for writing binary data in the response. The servlet container does not encode the binary data.
Calling flush() on the ServletOutputStream commits the response. Either this method or getWriter() may be called to write the body, not both.
Returns:
a ServletOutputStream for writing binary data
Throws:
java.lang.IllegalStateException - if the getWriter method has been called on this response
java.io.IOException - if an input or output exception occurred
See Also:
getWriter()
getWriter
public java.io.PrintWriter getWriter() throws java.io.IOException
Returns a PrintWriter object that can send character text to the client. The character encoding used is the one specified in the charset= property of the setContentType(java.lang.String) method, which must be called before calling this method for the charset to take effect.
If necessary, the MIME type of the response is modified to reflect the character encoding used.
Calling flush() on the PrintWriter commits the response.
Either this method or getOutputStream() may be called to write the body, not both.
Returns:
a PrintWriter object that can return character data to the client
Throws:
java.io.UnsupportedEncodingException - if the charset specified in setContentType cannot be used
java.lang.IllegalStateException - if the getOutputStream method has already been called for this response object
java.io.IOException - if an input or output exception occurred
See Also:
getOutputStream(), setContentType(java.lang.String)
分享到:
相关推荐
`getOutputStream()`已经被调用,然后尝试再次调用它,这是不允许的,因为HTTP响应只能有一个输出流——要么是用于发送文本数据的`getWriter()`,要么是用于发送二进制数据的`getOutputStream()`,不能同时使用。...
由于HTTP协议的限制,响应对象不能同时使用输出流(getOutputStream())和字符输出流(getWriter())进行数据输出。换句话说,对这两种输出方式的调用是互斥的,一旦选择了其中一种,就不能再使用另一种。 产生这一...
(2)使用 ServletOutputStream 对象也能输出内容全为文本字符的网页文档,但是如果网页文档内容是在 Servlet 程序内部使用文本字符串动态拼凑和创建出来的,则需要将字符文本转换成字节数组后输出,这是就不如 ...
需要注意的是,在一个请求中,不能同时使用这两个流对象。也就是说,要么使用getWriter(),要么使用getOutputStream(),否则将抛出IllegalStateException异常。 字符响应流 使用getWriter()方法获取字符流时,需要...
- 使用`getOutputStream()`时,要注意不能同时使用`getWriter()`,因为两者都涉及数据输出,但方式不同,使用其中一种后,另一种将无法使用。 5. `sendRedirect(String url)`:实现请求的重定向,客户端将被引导...
getWriter() 和Response.getOutputStream冲突
* Request和Response对象都是只读的,不能被修改。 * 在使用Request和Response对象时,需要注意方法的调用顺序,防止出现异常。 ServletRequest和ServletResponse是Servlet编程中两个最重要的接口,它们提供了对...
为了解决这个问题,我们应当在使用getWriter()方法之前,先通过response对象的setContentType()方法设置正确的MIME类型和字符集。 MIME(Multipurpose Internet Mail Extensions)类型是一种标准,它用来告诉浏览器...
这通常通过HttpServletResponse对象完成,设置合适的Content-Type为"application/json",然后使用getOutputStream或getWriter方法将JSON字符串写入响应流。 Android客户端接收到服务器的响应后,需要解析JSON数据。...
特别需要注意的是,一个响应只能选择其中一个流进行操作,不能同时使用,否则会抛出`IllegalStateException`异常。 `HttpServletRequest`接口则用于获取客户端的请求信息,包括请求参数。在`ServletRequest`的父类...
这里可能会遇到问题,因为如果在JSP中同时使用了`getWriter()`和`getOutputStream()`,会导致冲突。为避免这个问题,确保只使用一个,并在使用`getOutputStream()`前关闭`response.getWriter()`。 在`LOGIN.JSP`中...
开发者可以通过setContentType设置响应的MIME类型,使用getOutputStream或getWriter输出响应内容,以及设置HTTP状态码和响应头。 七、会话管理 Servlet API提供HttpSession接口,支持跨多个请求的用户会话管理。...
响应数据可以通过ServletResponse的getOutputStream()获取ServletOutputStream来发送二进制数据,或通过getWriter()获取PrintWriter对象来发送字符数据。设置MIME正文的字符编码和内容类型是通过setCharacter...
3. 写入响应体:`getOutputStream()`或`getWriter()`方法分别用于获取字节流和字符流,从而向客户端发送数据。例如,使用`getOutputStream().write()`可以输出二进制数据,`getWriter().print()`则适合输出文本。 ...
在Servlet中,我们可以使用`HttpServletResponse`对象的`getOutputStream()`或`getWriter()`方法来写入JSON字符串。 为了实现Ajax和Servlet之间的JSON数据交互,你需要遵循以下步骤: 1. **前端设置**:在HTML或...
2. **对`HttpServletResponse`进行封装**:通过创建`HttpServletResponseWrapper`子类来包装原始响应对象,并重写`getOutputStream()`和`getWriter()`方法来捕获响应数据。 3. **配置Filter**:在`web.xml`中配置...
在本实验中,我们使用了 HttpServletResponse 对象的 getWriter() 方法来获得输出流对象,然后设置响应内容类型为 Excel 文件。通过该实验,我们可以了解如何从响应对象获得输出流对象,并设置响应类型。 (二)向...
通常,我们使用`getWriter()`获取`PrintWriter`来输出HTML、JSON等文本内容: ```java PrintWriter writer = response.getWriter(); writer.println("<h1>Hello, World!</h1>"); writer.close(); ``` 七、示例代码 ...