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)
重定向是一种在互联网中的资源跳转方式。
- 方法一
- 通过response对象设置状态码
- response.setStatus(302);
- 使用response对象设置响应头的location参数
- **response.setHeader(“location”,"/response2"); **
- 通过response对象设置状态码
- 方法二
- 通过response对象的重定向方法
- response.sendRedirect("/response2");
- 通过response对象的重定向方法
重定向的特点
- 重定向
- 重定向 地址栏会发生变化
- 重定向 可以访问其他服务器的资源
- 重定向 是两次请求
转发的特点
- 转发
- 转发 地址栏不会发生变化
- 转发 不可以访问其他服务器的资源
- 转发 是一次请求
输出数据
- 设置
- 获取字符输出流
- 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");