Serviet交互-作用域-JSP
一 前后端交互流程
创建web项目------->发布项目----浏览器发送http://localhost:8080/xx/index.html请求---->服务器返回请求资源(index.html)—页面填写数据并以get方式提交表单http://localhost:8080/xx/test?username=test–>服务端Servlet接收其前台参数:req.getParameter(“username”) 并在控制台打印
二 Servlet之间的信息共享与跳转
2.1 信息共享
为什么要信息共享? 职责分离: 前台可以通过jsp动态的展示数据,后台处理数据(从某些层面上来说jsp属于Servlet)
2.2 Serviet 三大职责
接收请求参数, 处理数据, 页面跳转;
2.3 跳转方式
2.3.1 请求转发(forword)概述及其特点
概述:
客户端向服务端发送请求(地址栏:URL),服务端将通过URL访问到的资源读取后发给浏览器;
特点: 不能跨域----可直接访问WEB-INF下的资源----地址栏不改变-----请求数据相同----末端response才生效
演示: 多个Servlet之间的跳转
请求转发跨域 404: 无法跨域跳转
2.3.2 重定向(redirect)概述及其特点
概述: 浏览器发送请求------->服务器收到请求并调用Servlet处理----->将处理后的数据重定向给浏览器
特点: 可跨域----地址栏会改变----不共享请求头----不能直接访问WEB-INF下的资源----一次访问两次请求
演示: A–重定向至—>B (注意地址栏和重定向:上下文路径 “/xx”)
2.3.3 请求包含(基本不用)
获取所有请求响应结果数据至浏览器;
2.4 跳转前注意事项
metadata-complete=“false” ------>启动注解,web.xml配置改为true
三 四大域对象有效范围及其经典案例
4.1 四大域对象
page域指的是PageContext---------------->jsp页面有效
request域指的是HttpServletRequest---->一次请求: 一请求 一对象
session 域指的是HTTPSession----------->一次会话: 不关闭浏览器
application 域指的是ServletContext------->当前web应用: 服务器
4.2 经典案例演示
request域 测试: 输入URL 访问,每敲一次回车刷新后都是一个新的对象,所以不会累加
session 域 测试: 每一次刷新相当于一次请求,值累加,当浏览关闭时该对象被销毁,值归零!
application 域测试: 使用不同浏览器测试,值累加; 当关闭tomcat 时,该对象被销毁,值归零;
4.3 数据共享对象的操作
- 对象里面存入值: requset.setAttribute(“key”,value);
- 作用域对象取值: request.getAttribute(“key”);
- 注意:
- 取值都是使用域对象名.
- requset.getAttribute(“key”) ---->作用域中取值 requset.setParemater(“key”);----->前台参数取值