1.响应也是分三部分
响应行:
组成: 协议 状态码 状态描述
状态码:
404: ---->浏览器访问的资源不存在, 路径写错了!!!!!
500: ----> 代码写的有问题, 该代码, --->先要去找到错误代码的位置
302: ---->告诉浏览器要重定向
响应头:
作用:响应头可以给浏览器下命令,让浏览器按照我们的想法解析数据
白话:其实浏览最在乎响应体,显示的内容,程序员可以通过响应头来控制显示方式,显示编码....
常见的头:
content-type ---->可以让浏览器按照想要的格式以及编码解析
content-disposition ----> 可以让浏览器以默认打开方式解析,还是以附件解析(下载时候才会用到);
location ----> 可以给浏览器一个地址, 可以配合302的状态码一起完成重定向的动作
响应体
显示的内容!!!!!
2.Response对象
操作响应行:
setStatus(int 状态码的值); ---->设置状态码
操作响应头
setHeader(String key,String value);
操作响应体:
getOutputStream() ---->获取字节流
getWrite() ------> 获取字符流
3.Response的作用
1.完成重定向
最终写法:
resp.sendRedirect("路径");
其实内部分成两个步骤
setStatus(302)
setHeader("location",路径)
4.路径问题:
相对:
以./或者../开始的路径
技巧:找对(当前)和(目标)的关系
绝对:
以"/"开始的:
其实绝对路径前面省略
客户端路径: -----> src, action, "重定向"都是客户端路径
"http://ip地址:端口" ----> 但是如果你自己规定"http://ip地址:端口" 他就不会默认加了!!!!!!!
服务器路径: -----> 只有"转发"是服务器路径
"http://ip地址:端口/虚拟路径"
虚拟路径建议我们动态获取 -----> req.getContextPath();可以动态获取虚拟路径
5.如何输出字符数据到页面
格式: resp.getWriter().write("内容");
注意:
如果中文会出现乱码!!!
原因:
resp.getWriter(); 这个流是tomcat帮我们创建的流, 他采用默认编码是ISO-8859-1,它不支持中文,
解决方案:
1.设置writer的流的编码为"utf-8"; ---> resp.setCharacterEnconding("utf-8");
2.告诉浏览器以"utf-8"的方式来解析 ---> resp.setHeader("content-type","text/html;charset=utf-8");
我们最终的写法:
resp.setContnxtType("text/html;charset=utf-8");
6.ServletContext
作用: 他是和tomcat通信的桥梁, 原因: ServletContext是Tomcat为每一个项目创建的,专门用和tomcat交互的对象,每一个项目只有一个ServletContext对象,
特点: 每一个项目只有一个ServletContext对象, 而且这个Tomcat为每一个项目创建的
功能:
1.获取文件的MIME类型(了解!!!!)
MIME: 可以让浏览器以指定引擎解析你的数据 ----> .jpg .png ---> text/html IMG/JEPG
注意:高版本浏览器(除了ie),都会自动识别类型
2.可以作为域对象存储数据 setAttr... getAttr.... , removeAttr....(用的很少!!!!!)
作用范围: 整个项目中有效, 所有的用户共享的东西放到这里
3.获取文件的服务器端的真实路径
其实为File,自己的创建的流而服务的, 原因File或者自己的创建的流不能采用相对路径, 不然都相对于tomcat/bin目录下,
这是一定要绝对路径, 而绝对路径通过ServletContext对象来获取, 因为他可以读取catalina/localhost/xxx.xml得到docBase
指向的项目的真实路径, 可以通过ServletContext对象getRealPath获取绝对路径!!!!
注意: 一定注意自己的启动环境是谁!!!!!
4.获取全局的参数:(用的也很少!!!!!)
在web.xml中:
<context-param>
<param-name>username</param-name>
<param-value>zhangsan</param-value>
</context-param>
String getInitParameter(String key);
例如:
String value = getServletContext().getInitParameter("username");
增 ----> add, append,put,insert
删 ----> remove delete drop
该 ----> alter ,update, set
查 ----> get, select
|
|