java response.reset_JavaWeb:ServletResponse

环境

JDK 8

Spring Tool Suite 4.6.1

Servlet 3.1

Tomcat 8.5

Maven 3.6.3

ServletResponse 说明

ServletResponse 可以让 Servlet 向客户端发送响应。

ServletResponse 由 Servlet 容器创建,并将其传递给 Servlet 的 service 方法。

为了向客户端发送二进制的数据,可以使用 getOutputStream 方法返回的 ServletOutputStream 输出流。

为了发送字符数据,可以使用 getWriter 返回的 PrintWriter 对象。

想要同时发送两种数据,需要使用 ServletOutputStream ,并且手动处理字符数据。

可以使用 setCharacterEncoding(java.lang.String) 和 setContentType(java.lang.String) 方法

显式指定响应的编码,或者使用 setLocale(java.util.Locale)方法隐式指定,显式指定优先于隐式指定。

如果未指定编码,则将使用 ISO-8859-1 。必须在 getWriter 之前调用 setCharacterEncoding ,setContentType 或 setLocale 方法。

编码系列方法

可以通过 下面的方法获得和设置响应的编码,优先级分别为:setCharacterEncoding、setContentType、setLocale,

并且设置编码应该在 getWriter 方法调用之前。

public String getCharacterEncoding();

public String getContentType();

public void setCharacterEncoding(String charset);

public void setContentType(String type);

public void setLocale(Locale loc);

public Locale getLocale();

流系列方法

分别获得字节和字符输出流,不能同时使用。

public ServletOutputStream getOutputStream() throws IOException;

public PrintWriter getWriter() throws IOException;

缓冲系列方法

和输出流的缓冲相关的方法。

public void setBufferSize(int size);

public int getBufferSize();

public void flushBuffer() throws IOException;

public void resetBuffer();

setContentLength

设置响应头中的 ContentLength 。

public void setContentLength(int len);

reset

清空返回的数据,同时也重置输出流。

public void reset();

isCommitted

判断响应是否提交。

public boolean isCommitted();

ServletResponse 示例

pom.xml

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

jiangbo.javaweb

12java-web-servlet-response

1.0.0

war

Servlet Response 的示例

1.8

1.8

UTF-8

javax.servlet

javax.servlet-api

3.1.0

provided

方法示例

package jiangbo.javaweb;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")

public class Servlet01 extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println("service...");

System.out.println("---------------------------");

System.out.println(resp.getCharacterEncoding());

System.out.println(resp.getContentType());

resp.setCharacterEncoding("UTF-8");

System.out.println(resp.getCharacterEncoding());

System.out.println(resp.getContentType());

System.out.println(resp.getLocale());

resp.setContentLength(44);

System.out.println("---------------------------");

resp.getOutputStream();

resp.reset();

System.out.println(resp.getCharacterEncoding());

resp.setContentType("text/html;charset=UTF-8");

System.out.println(resp.getCharacterEncoding());

PrintWriter writer = resp.getWriter();

System.out.println("---------------------------");

System.out.println(resp.getBufferSize());

writer.println("没有了的内容");

resp.resetBuffer();

writer.print("存在的内容");

writer.flush();

System.out.println("---------------------------");

System.out.println(resp.isCommitted());

}

}

配置 web.xml

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

version="3.1">

servlet01

jiangbo.javaweb.Servlet01

servlet01

/servlet01

浏览器访问

控制台输出

service...

---------------------------

ISO-8859-1

null

UTF-8

null

zh_CN

---------------------------

ISO-8859-1

UTF-8

---------------------------

8192

---------------------------

true

浏览器显示

存在的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值