JavaWeb中HttpServletResponse类(Response对象)

HttpServletResponse对象在JavaWeb中用于设置返回给客户端的信息。通过getOutputStream()处理字节流(如文件下载),getWriter()处理字符流(回传数据串)。若要避免中文乱码,需先用response.setCharacterEncoding("utf-8")设置服务器响应编码,再通过Content-Type通知浏览器。请求重定向是另一种方式,浏览器地址会改变,发生两次请求,不共享request域数据但可共享context域和session域数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HttpServletResponse类和HttpServletRequest类一样,在服务器每次收到请求的时候就会创建一个response对象传递给doget()和dopost方法使用,HttpServletResponse表示所有响应的消息,我们如果需要设置返回给客户端的信息,都可以通过HttpServletResponse对象来设置。

返回给客户端的数据可以通过输出流来进行实现

  • 字节流:getoutputStream()常用于下载的(传递二进制数据)
  • 字符流:getWriter()常用于回传数据串
  • 【但是两个流不能进行同时使用,否则会报错】

 使用response回传数据中文乱码的问题:

服务器默认的响应编码集是ISO-8859-1,而浏览器的默认编码是jdk编码,所以回传中文会出现中文乱码的问题。

 第一步:设置服务器的响应编码为utf-8,使用response.setCharacterEncoding("utf-8")方法来进行设置。

第二步:通过Content-Type响应头来通知浏览器使用utf-8进行编码。

示例代码:

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

        req.setCharacterEncoding("utf-8");
        resp.setHeader("Content-Type","text/html;charset=UTF-8");
        resp.getWriter().write("小张");

    }

 第二种解决 中文乱码的方式:

  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //使用条件在获取流对象之前进行调用
        resp.setContentType("txt/html;charset=UTF-8");//这 个方法设置发送到客户端的响应的内容类型,此时响应还没有提交。给出的内容类型可以包括字符编码说明
        resp.getWriter().write("小张");

    }

请求重定向:

请求重定向,是指客户端给服务器发送请求后,servlet又重新给浏览器返回一个地址,让浏览器在去访问这个地址。同时原来地址的servlet会向浏览器返回302响应码。

代码:
 

 @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setStatus(302);//设置响应的状态码
        //通过Location告诉浏览器进行重新按照响应头的value进行访问
        resp.setHeader("Location","http://localhost:8080/01web_war_exploded/servlet5");
    }

第二种重定向的方法:

     不需要进行设置响应编码。

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


    resp.sendRedirect("http://localhost:8080/01web_war_exploded/servlet5");



}

效果图: 

 请求重定向的特点:

  • 浏览器的地址会发生变化
  • 总共是两次请求
  • 不能跳转到WEB-INF目录的资源下
  • 可以重定向到web工程之外的地址,比如百度
  • 因为是两次请求不能共享request域中的数据,contenxt域,session域中的是可以共享的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值