回顾:
request: 请求信息对象
Http协议: 浏览器和服务器进行数据交互时,数据的一种规范
请求行: 请求方式 请求路径?get请求参数 协议/版本(http/1.1)
getMethod()
getContextPath()
getRemoteAddr()
getLocalPort()
请求头: key/values
getHeader("头名称");
重要头:
referer: 防盗链
user-agent: 用户代理
cookie:
请求体: post请求时携带的参数(get请求没有请求体)
获取请求参数: ★★★ 浏览器携带的参数,我们所获取的都是字符串
String getParameter("名称");
String[] getParameterValues("名称");
Map<String,String[]> getParameterMap("名称");
BeanUtils:
populate(实体对象,map集合);
Request作用域和请求转发:
请求转发: 一次请求的延续(可以经过多个servlet)
request.getRequestDispatcher("/请求转发的地址").forWard(req,resp);
作用域:
request.setAttribute(String,Object);
// 设置相同名称的属性就是 修改
request.getAttribute(String);
request.removeAttribute(String);
http协议-响应
响应: 服务器给浏览器的内容
组成:
响应行 响应头 响应体
响应行
格式:
协议/版本 响应的状态码 (状态码说明)
tomcat8.5中没有响应状态码说明了
eg: HTTP/1.1 200 OK tomcat7
状态码:
1xx :请求已发送
2xx :响应已完成
200:响应成功(请求成功)
3xx :需要浏览器进一步操作才可以完成
302:重定向(配合location头使用)
304:读缓存
4xx :用户访问错误
404:用户访问的资源不存在
5xx :服务器内部错误
500:服务器内部异常
响应头
格式:
key/values的格式 (values可以为多个值的)
常见的响应头
Location: http://www.it315.org/index.jsp --跳转方向
Server:apache tomcat --服务器型号
Content-Encoding: gzip --数据压缩
Content-Length: 80 --数据长度
Content-Language: zh-cn --语言环境
Content-Type: text/html; charset=utf-8 --数据类型(MIME类型) 大类型/小类型 text/javascript
index.html text/html
设置响应文件的mime类型
设置响应流的编码方式
通知浏览器使用指定的编码解析
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT --最后修改时间
Refresh: 1(秒);url=http://www.it315.org --定时刷新
Content-Disposition: attachment; filename=aaa.zip --下载 用于文件下载 附件
Set-Cookie:SS=Q0=5Lb_nQ; path=/search
重点的头:
Content-Type Refresh Content-Disposition Location Set-Cookie
响应体
浏览器解析的内容
response★
设置服务器发送给浏览器的内容
HttpServletResponse
操作响应行:
协议/版本 状态码(说明)
常用方法
(理解)setStatus(int code):针对1 2 3 开头的
(了解)sendError(int code):针对 4 5 开头的
操作响应头:
格式: key/values
常用方法
(重点)setHeader(String name,String value); // 设置一个字符串形式的响应头
sendRedirect("路径"); // 重定向
常见的响应头
location:重定向
方式1: 需要配合302状态码一起使用 (了解)
response.setStatus(302);
response.setHeader("location","绝对路径");
路径:绝对路径
方式2: (掌握)
response.sendRedirect("路径");
重定向发送的是多次请求
重定向不可以共享request对象(因为发送的是多次请求)
重定向时浏览器地址栏显示的是最后一次的地址
重定向可以跳转到任何路径
refresh:定时刷新
response.setHeader("refresh","秒数;url=跳转的路径"); 几秒之后跳转到指定的路径上
content-type:设置文件的mime类型
设置响应文件的mime类型
设置响应流的编码方式
通知浏览器使用指定的编码解析
方式1: 了解
response.setHeader("content-type","mime类型;charset=编码");
response.setHeader("content-type","text/html;charset=utf-8");
方式2: 掌握
response.setContentType("文件的mime类型;charset=utf-8");
content-disposition:文件下载专用头
response.setHeader("content-disposition","attachment;filename="+文件名称);
操作响应体:
常用方法:
PrintWriter getWriter():字符流
ServletOutputStream getOutputStream():字节流
注意事项:
自己编写的文件 一般都使用字符流输出 如:txt html等
音频,视频等文件使用字节流输出
==字节流和字符流互斥,不能同时使用==
服务器会帮我们释放资源,建议自己关闭;底层使用的缓存流
ServletContext:
上下文对象,全局管理者,知晓一个项目中所有Servlet的一切信息
作用:
获取文件的mime类型 *.html text/html
资源共享
获取资源的完整路径
生命周期:
创建:
当服务器启动的时候,服务器会为每一个项目创建servletcontext对象,一个项目只有一个servletcontext对象
销毁:
项目从服务器上移除或者服务器关闭的时候
servletContext对象与项目共存亡
获取方式:
方式1:通过ServletConfig对象获取
ServletConfig().getServletContext();
方式2:通过getServletContext方法获取 ★★★
getServletContext();
常用方法(API):
(掌握)获取一个文件的mime类型
String getMimeType(String 文件名)
(掌握)资源共享: 相当于一个map集合
setAttribute(String name,Object value): 设置
设置相同名称的属性就是修改
getAttribute(String name):获取指定的属性值
removeAttribute(String name):移除指定的属性
(掌握)获取资源在服务器上的路径
String getRealPath(String filepath)
注意:
filepath:直接从项目的根目录开始写
getRealPath("/") ---> d:/tomcat/webapps/day14
案例