HTTP协议下Servlet的响应消息对象:Request


title: HTTP协议下Servlet的响应消息对象:Request
date: 2019-07-14 10:13:57
categories: [JavaWeb,Servlet]
tags: [Servlet,response]


功能

设置响应行

  • 设置状态码
    • **setStatus(int sc) **

设置响应头

  • 设置响应头
    • **setHeader(String name, String value) **

设置响应体

  • 获取输出流
    • 字符输出流(字符数据)
      • PrintWriter getWriter()
    • 字节输出流(任意数据)
      • ServletOutputStream getOutputStream()

其他功能

重定向(redirect)

  重定向是一种在互联网中的资源跳转方式。
  • 方法一
    1. 通过response对象设置状态码
      • response.setStatus(302);
    2. 使用response对象设置响应头的location参数
      • **response.setHeader(“location”,"/response2"); **
  • 方法二
    • 通过response对象的重定向方法
      • response.sendRedirect("/response2");

重定向的特点

  • 重定向
    • 重定向 地址栏会发生变化
    • 重定向 可以访问其他服务器的资源
    • 重定向 是两次请求

转发的特点

  • 转发
    • 转发 地址栏不会发生变化
    • 转发 不可以访问其他服务器的资源
    • 转发 是一次请求

输出数据

  • 设置
  • 获取字符输出流
    • PrintWriter writer = response.getWriter();
  • 输出数据
    • writer.write("<h1>在恭喜发财!</h1>");

中文乱码问题

  • 在获取流之前,设置流编码为系统默认编码(可以不写)
    • response.setCharacterEncoding(“utf-8”);
  • 设置浏览器解码的编码
    • response.setHeader(“content-type”,“text/html;charset=utf-8”);
  • 设置浏览器解码的编码(简化)
    • response.setContentType(“text/html;charset=utf-8”);

ServletContext对象

概念

  • ServletContext对象代表整个web应用,可以和程序的容器(服务器)来通信。

获取

  • 通过request对象获取
    • request.getServletContext();
  • 通过HttpServlet获取
    • this.getServletContext();

功能

获取MIME类型

  • 获取MIME类型
    • String getMimeType(String file)
  • MIME类型:在互联网通信过程中定义的一种文件数据类型
    • 格式: 大类型/小类型
      • text/html
      • image/jpeg

共享数据

域对象:一个有作用范围的对象,可以在范围内共享数据。
request域:代表一次请求的范围,一般用于让请求转发的多个资源共享数据。
ServletContext域:所有用户所有请求的数据

  • 方法
    • 存储数据
      • void setAttribute(String name,Object obj)
    • 通过键 获取值
      • Object getAttitude(String name)
    • 通过键 移除键值对
      • void removeAttribute(String name)

文件真实路径

  • 获取文件的真实路径(tomcat服务器)
    • String getRealPath(String path);
  • web目录下资源访问
    • context.getRealPath("/b.txt");
  • WEB-INF目录下的资源访问
    • context.getRealPath("/WEB-INF/c.txt");
  • src目录下的资源访问
    • context.getRealPath("/WEB-INF/classes/a.txt");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值