web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象,和代表响应的response对象。resquest和response对象既然代表请求和响应,那么要获取客户机提交过来的数据,只需要找request对象就行了。要想客户机输出数据,只需要找response对象就行了。
HttpServletResponse对象介绍
HttpServletResponse对象代表服务器的响应。这个对象中封装了向客户端发送数据,发送响应头,发送响应状态码的方法。
1.向客户端(浏览器发送数据的相关方法),继承自ServletResponse
2.负责向客户端(浏览器)发送响应头的相关方法
3.负责向客户端(浏览器)发送响应状态码的相关方法
4.响应状态码常量
HttpServletResponse对象常见应用
使用OutputSteam流向客户端浏览器输出中文数据
使用OutputStream输出中文要注意:在服务器端,数据是以哪个码表输出的,那么就要在客户端浏览器以相应的码表打开,比如:OutputStream.write(“北邮”.getBytes("UTF-8"));;使用OutputStream流向客户端浏览器输出中文,以UTF-8的编码进行输出,此时就要控制客户端浏览器以UTF-8的编码打开,否则显示的时候就会出现中文乱码,那么在服务器端如何控制客户端浏览器以以UTF-8的编码显示数据呢?可以通过设置响应头控制浏览器的行为,如:response.setHeader("content-type", "text/html;charset=UTF-8");通过设置响应头控制浏览器以UTF-8的编码显示数据。
package com.fpc; import java.io.IOException; import java.io.OutputStream; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletContextDemo1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub // String data = "<h1><font color='blue'>fpc_20171206</font></h1>"; // resp.getOutputStream().write(data.getBytes()); // ServletContext context = this.getServletContext();//获取ServletContext对象 // RequestDispatcher rd = context.getRequestDispatcher("/servletContext/servletContextDemo2");//获取请求转发对象 // rd.forward(req, resp); // String data = "fpc_2017/12/06 14:07"; /* * 设置合理的缓存时间值,以避免浏览器向服务器发送请求,提升服务器的性能 * 这里是将数据的缓存时间设置为1天 * */ // resp.setDateHeader("expires", System.currentTimeMillis() + 24 *3600*1000); // resp.getOutputStream().write(data.getBytes()); String data = "北邮"; //通过设置响应头控制浏览器以UTF-8的编码显示数据,如果不加这句话,那么浏览器显示地是乱码 resp.setHeader("content-type", "text/html;charset=UTF-8"); OutputStream outputStream = resp.getOutputStream(); /*data.getBytes()是一个将字符转换成字节数组的过程,这个过程一定会去查码表, * 如果是中文的操作系统环境,默认就是查找GB2312码表 * */ byte[] b = data.getBytes("UTF-8"); outputStream.write(b); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doPost(req, resp); } }
运行结果: