关于HttpServletResponse和HttpServletRequest

请求对象和响应对象的生命周期

  1. 在Http服务器收到浏览器发送的Http请求协议包之后,自动为当前的Http请求协议包创建一个请求对象和一个响应对象
  2. 在Http服务器调用doPost/doGet方法的时候,负责将请求对象响应对象作为实参传递到方法,确保doPost/doGet正确执行。
  3. 在Http服务器准备推送Http响应协议包之前,销毁本次关联的请求对象响应对象

HttpServletResponse接口

  1. 介绍:
    1、HttpServletResponse接口来自于Servlet规范中,在Tomcat中存在servlet-api.jar
    2、HttpServletResponse接口实现类由Http服务器负责提供
    3、HttpServletResponse接口负责将doGet/doPost方法执行写入到“响应体”交给浏览器
    开发人员习惯将HttpServletResponse接口修饰的对象称为响应对象

  2. 主要功能:
    1、将执行结果以二进制的形式写入到响应体
    2、设置响应头[content-type]属性值,控制浏览器使用对应编译器,
    将响应体二进制数据编译为“文字,图片,视频,命令”
    3、设置响应头中[location]属性,将一个请求地址赋给location,
    从而控制浏览器想指定服务器发送请求

实例1

write

public class OneServlet extends HttpServlet {
   

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
        String result="helloworld";//执行的结果

        //通过响应对象将结果写入响应体
        //1.通过响应对象,想Tomcat索要输出流
        PrintWriter out=response.getWriter();
        //2.通过输出流,将执行结果以二进制形式写入响应体
        out.write(result);
    }
    //Tomcat将响应包推送给浏览器
}

实例2

print

public class TwoServlet extends HttpServlet {
   
    /*
    浏览器接受到的数据不是50,是2
    原因:
        out.writer可以将字符、字符串、ASCII码写入到响应体
        2对应的ASCII码就是50
    解决:
        实际开发中,都是通过out.print()将真实数据写入响应体中的
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   

        int money=50;//执行结果

        PrintWriter out=response.getWriter();
        //out.write(money);
        out.print(money);
    }
}

实例3

问题://Java< br/>Mysql< br/>HTM
 浏览器在接收到响应结果时,将< br/>作为文字内容在窗口中展示出来了
 
原因:
 浏览器在接收响应包之后,根据响应头中的content-type属性的值,来采用对应“编译器”对响应体中的二进内容进行编译处理。
 在默认情况下,content-type属性的值是“text”,此时浏览器将会采用“文本编译器”对响应体二进制数进行解析。

解决:
 一定要在得到输出流之前,通过响应对象对响应头中的content-type属性进行重新赋值,指定浏览器采用正确的编译器
 
修改content-type属性
response.setContentType();

public class ThreeServlet extends HttpServlet {
   
    protected void doGet(HttpServletRequest request, HttpServletResponse response
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值