day15笔记Response&Request
请求转发特点:
1.一次请求
2.只能访问内部资源
3.跳转时地址栏不发生改变
getParameter和getAttribute不是一回事
getParameter获取的是浏览器请求体中的请求参数
getAttribute获取的是request域中的共享资源
ps: request域只针对与一次请求
Request(发送数据到浏览器)
获取数据
请求转发
数据共享
获取ServletContext域对象
四大域对象
ServletContext 针对整个项目(从服务器启动到服务器关闭\\)
HttpSesslon 针对于一次对话
HttpServletRequest 针对一次请求
RageContext 只针对当前页面
BeanUtils工具类:
配合request中的getParameterMap方法
request.getParameterMap返回map
new 类名 返回类对象
BeanUtils.populate(类对象 , map集合)
需要注意的是类中的变量名称要与表单的那么属性一致
响应(把数据回写到服务器)
HTTP常见状态码
200(表示成功)
302(重定向)/304(告诉浏览器访问本地缓冲)
404(路径错误)/405(没有实现对应的请求方法)
500(代码写错)
响应头
Context-type 告诉浏览器用什么编码解析
Context-Dispositon 以附件形式解析,(下载)
response
重定向
基础方法
setStatus(302)
setHeader("location" , "路径")
更简洁的方法
setRedirect("路径")
重定向和请求转发的区别
redirect地址栏会发生改变,forward地址栏不改变
redirect可以定向任意资源,forward只能转发到内部资源
redirect不可以用request共享数据,forwar可以
redirect是两次请求,forward是一次请求
路径
绝对路径:
用 / 开头
在不同情况下有不同的绝对路径
request域中不用写虚拟路径
其他情况下要写
推荐使用request中getContextPath()方法动态获取虚拟路径
相对路径:
用 . 开头
两个 . 代表上一级目录
|