*1.request请求转发:
一种在服务器内部的资源跳转方式
步骤:
1.通过request对象获取请求转发器对象:getrequestdispatcher(String path)
2.使用getrequestdispatcher对象来进行转发:requestdispatcher.forword(request,response)
特点:
1.浏览器地址栏路径不发生变化
2.只能转发到当前服务器内部资源中
3.转发是一次请求(不管服务器内部调整多少次,浏览器端只有一次请求)
2.共享数据;
域对象:一个有作用范围的对象,可以在范围内共享数据。
request域:代表一次请求的范围,一般用于请求转发的多个资源共享数据。
方法:
1.setAttribute(String name,Object obj):存储数据
2.object getAttribute(String name):通过键获取值。
3.void removeAttribute(String name):通过键移除值。
3.获取servletcotext:
servletcotext getservletcotext()
4.登录案例
5.BeanUtils工具类,简化数据封装
用于封装JavaBean的
5.1JavaBean:标准的java类
1.类必须被public修饰
2.必须提供空参构造
3.成员变量必须使用private修饰
4.提供公共的get/set方法
功能:封装数据
5.2:概念:
成员变量
属性:get/set方法截取后的产物
5.3:方法:
setproperty();
getproperty();
property(object obj,Map map);将map集合中的键值对信息,封装到对应的JavaBean对象中。
扩展:
成员变量与属性的区别
java内省机制:通过反射实现
6.response:
6.1响应行:
1.组成:
协议/版本 响应状态码 状态码描述
响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态
--1.状态码都是3位数字
--2.分类
1.1xx:服务器接收客户端消息,但没有接收完成,等待一段时间,发送1xx多状态码
2.2xx:成功。代表:200
3.3xx:重定向,代表:302,304(访问缓存)
4.4xx:客户端错误:
404(请求路径没有对应的资源)
405(请求方式没有对应的doxxx方法)
5.5xx:服务器端错误
500(服务器内部异常)
6.2:响应头:
1.格式:头名称:值;
2.常见的响应头:
Content-Type:服务器告诉浏览器本次响应体数据格式已经编码格式。(解决中午乱码问题)
Content-disposition:服务器告诉客户端以什么格式打开响应体数据
6.3.响应体:传输的数据
7.response:
功能:设置响应消息
1.设置响应行:
设置状态码:setStatus(int sc)
2.设置响应头
setHeader(String name,String value)
3.设置响应体
步骤:
1.获取输出流
字符:getWriter()
字节:getOutPutStream()
2.使用输出流,将数据输出到客户端浏览器
案例:
1.完成重定向(资源跳转的方式)
2.服务器输出字符数据到浏览器
3.服务器输出字节数据到浏览器
4.验证码
【8.转发的特点;(forward)
1.转发地址栏路径不变
2.转发只能访问当前服务器的资源
3.转发是一次请求,可以使用request对象来共享数据
4.不需要加虚拟目录
9.重定向:(redirect)
1.地址栏会变化
2.可以访问其他站点(服务器)的资源
3.两次请求,不能使用request对象来共享数据】
4.需要加虚拟目录
request域对象的作用范围:一次请求,主要用于请求转发中存储数据
10.路径写法:
分类;
1.相对路径:通过相对路径不可以确定唯一资源(不以/开头,以.开头的路径)
规则:找到当前资源和目标资源之间的相对位置关系
./当前目录
../后退一级目录
2.绝对路径:通过绝对路径可以确定唯一资源:http://localhost:8080/day03/servletTest02(简化写法/day03/servletTest02;以/开头的路径)
规则:判断定义的路径是给谁用的?判断请求从哪发出
1.浏览器:需要加虚拟目录(项目的访问路径)
动态获取虚拟目录:
request.getContextPath();返回String的字符串,拼接上资源路径就可以。
2.服务器:不需要加虚拟目录(转发路径) |
|