Request&&Response 学习
一, Request
1. request 对象和 response 对象的原理
1. request 和 response 对象是由服务器创建的. 我们来使用它们
2. request 对象是来获取请求消息, response 对象是来设置响应消息
2. request 对象继承体系结构:
ServletRequest -- 接口
| 继承
HttpServletRequest -- 接口
| 实现
org.apache.catalina.connector.RequestFacade 类 (tomcat)
3. request 功能:
1. 获取请求消息数据
1. 获取请求行数据
* GET /day14/demo1?name=zhangsan HTTP/1.1
* 方法:
1. 获取请求方式 :GET
* String getMethod()
2. 获取虚拟目录:/day14
* String getContextPath()
3. 获取 Servlet 路径: /demo1
* String getServletPath()
4. 获取 get 方式请求参数: name=zhangsan
* String getQueryString()
5. 获取请求 URI:/day14/demo1
- * String getRequestURI(): /day14/demo1
- * StringBuffer getRequestURL() :http://localhost/day14/demo1
* URL: 统一资源定位符 :http://localhost/day14/demo1 中华人民共和国
* URI: 统一资源标识符: /day14/demo1 共和国
6. 获取协议及版本: HTTP/1.1
* String getProtocol()
7. 获取客户机的 IP 地址:
* String getRemoteAddr()
2. 获取请求头数据
* 方法:
* (*)String getHeader(String name): 通过请求头的名称获取请求头的值
* Enumeration<String> getHeaderNames(): 获取所有的请求头名称
3. 获取请求体数据:
* 请求体: 只有 POST 请求方式, 才有请求体, 在请求体中封装了 POST 请求的请求参数
* 步骤:
1. 获取流对象
* BufferedReader getReader(): 获取字符输入流, 只能操作字符数据
* ServletInputStream getInputStream(): 获取字节输入流, 可以操作所有类型数据
2. 再从流对象中拿数据
4. 获取 ServletContext:
* ServletContext getServletContext()
二, Response 对象
* 功能: 设置响应消息
1. 设置响应行
1. 格式: HTTP/1.1 200 ok
2. 设置状态码: setStatus(int sc)
2. 设置响应头: setHeader(String name, String value)
3. 设置响应体:
* 使用步骤:
1. 获取输出流
* 字符输出流: PrintWriter getWriter()
* 字节输出流: ServletOutputStream getOutputStream()
2. 使用输出流, 将数据输出到客户端浏览器
三, ServletContext 对象:
1. 概念: 代表整个 web 应用, 可以和程序的容器 (服务器) 来通信
2. 获取:
1. 通过 request 对象获取
request.getServletContext();
2. 通过 HttpServlet 获取
this.getServletContext();
3. 功能:
1. 获取 MIME 类型:
* MIME 类型: 在互联网通信过程中定义的一种文件数据类型
* 格式: 大类型 / 小类型 text/html image/jpeg
* 获取: String getMimeType(String file)
2. 域对象: 共享数据
- setAttribute(String name,Object value)
- getAttribute(String name)
- removeAttribute(String name)
* ServletContext 对象范围: 所有用户所有请求的数据
3. 获取文件的真实 (服务器) 路径
1. 方法: String getRealPath(String path)
- String b = context.getRealPath("/b.txt");//Web 目录下资源访问
- String c = context.getRealPath("/WEB-INF/c.txt");//Web-INF 目录下的资源访问
- String a = context.getRealPath("/WEB-INF/classes/a.txt");//src 目录下的资源访问
来源: http://www.bubuko.com/infodetail-3653744.html