JavaWeb-HttpServletResponse对象一

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);
    }
    
}

运行结果:

 

posted @ 2017-12-06 14:50  起床oO  阅读(347)  评论(0编辑  收藏  举报