1.HttpServletRequest
功能:
1.获取参数
getContextPath() ---->获取虚拟路径
getParameter()getParameterMap()getParameterValues();
getSession(); ---->获取session对象
getCookies(); ---->获取所有的cookie
getHeader("键"); ----> user-agent : 用来解决浏览器兼容性问题
2.请求转发
getRequestDispather("服务器端路径(不要加虚拟路径,因为tomcat帮你加了!!!)").forword(req,resp);
3.作为域对象存储数据,只不过一次请求有效
setAttr
getAttr
removeAttr
2.HttpServletResponse
功能:
1.重定向
sendRedirect("路径") ---> 状态码302, 响应头: location
2.会设置常见的响应头
setContextType ------>"content-type" --->命令浏览器以什么样引擎解析, 用什么编码解析
"content-disposition" ---->只有下载的时候才会使用
3.回写cookie
addCookie(cookie对象)
4.回写响应体
getWriter().write("内容")
getOutputStream().write(字节数据)
3.ServletContext
功能:
1.获取Mime类型 ---->告诉浏览器以什么引擎解析
getMimeType(文件名);
2.作为域对象存储数据 ----> 整个项目共享, 用户之间共享的数据可以用这个来保存
3.获取真实路径
getRealPath("路径")
4.获取全局参数
getInitParameter("键");
4.Cookie
功能:
1.创建
Cookie c = new Cookie(字符串的键, 字符串的值);
2.操作
req.getCookies();
resp.addCookie(cookie对象)
setMaxAge(0)
3.功能
setPath --->在同一个服务器中不同项目共享数据
setDomain ---->在不同服务器共享数据
5.Session ---->是一个域对象, 默认作用范围是一次会话, 底层基于cookie的
功能:
1.创建
req.getSession();
2.操作
setxxx,getxxx,removeattr
6.web常见的乱码问题
1.req获取参数乱码
get:
参数在请求行中, 请求不准有中文,
tomcat7
的时候浏览器会将这些中文通过URLEncode编码成%AE的样子
tomcat7得到参数后, 会用URLDecode解码并且用ios-8859-1的编码组装,因为ios-8859-1不支持中文, 会乱码
tomcat7 解决乱码:
String username = req.getParamter("username");
username = new String(username.getByte("iso-8859-1"),"utf-8");
tomcat8:
的时候浏览器会将这些中文通过URLEncode编码成%AE的样子
tomcat8得到参数后, 会用URLDecode解码并且用utf-8的编码组装,因为utf-8支持中文, 不会乱码
post:
因为底层通过 req.getReader获取的参数 , 此时getReader的流是tomcat提供的,而字符流内置的编码是iso-8859-1,
我们可以修改流的编码, 而且告诉浏览器以utf-8 的方式解析数据
req.setCharacterEncoding("utf-8");
字符流 = 字节码 + 编码
2. resp响应中文的问题
因为底层是通过resp.getWriter来操作,字符流内置一个编码,而且是tomcat提供的编码是iso-8859-1,会;乱码
解决:
setContextType("text/html;charset=utf-8");-----> resp.setCharaterEncoding("utf-8"), setHeader("content-type","text/html;charset=utf-8")
3.Cookie的乱码问题
要存特殊字符的话, 要记得编码
4.响应头的乱码问题:
响应头不支持中文, 也要编码
7.路径问题:
标签:
src
action
href
全部采用客户端路径, tomcat帮我们省略了http://ip地址:端口/
例如:
http://ip地址:端口/day15/index.html 省略成: /day15/index.html
转发:
采用的服务器端路径,tomcat帮我们加了http://ip地址:端口/虚拟路径
重定向
采用客户端路径, tomcat帮我们省略了http://ip地址:端口/
自己创建的流, 自己定义的file对象
什么都没加, 一定不要用相对路径, 要采用绝对路径, 一般和ServletContext一起出现!!!! |
|