JavaWeb中HttpServletResponse类(Response对象)

2年前 (2022) 程序员胖胖胖虎阿
212 0 0

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响应码。

JavaWeb中HttpServletResponse类(Response对象)

代码:
 

 @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");



}

效果图: JavaWeb中HttpServletResponse类(Response对象)

 请求重定向的特点:

  • 浏览器的地址会发生变化
  • 总共是两次请求
  • 不能跳转到WEB-INF目录的资源下
  • 可以重定向到web工程之外的地址,比如百度
  • 因为是两次请求不能共享request域中的数据,contenxt域,session域中的是可以共享的。
版权声明:程序员胖胖胖虎阿 发表于 2022年10月21日 上午10:56。
转载请注明:JavaWeb中HttpServletResponse类(Response对象) | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...