- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Servlet交互与JSP
1 主要内容介绍
1.Web页面跳转和信息共享
2.Servlet作用域对象
3.动态网页:JSP
2 Web页面跳转和信息共享
思考(学习过的Servlet):
如何书写Servlet?
Servlet中可以写些什么代码?
以后我们在Servlet中主要写什么代码?
2.1 Servlet的三大职责
接收请求参数
调用业务方法处理请求(暂时从Servlet中直接调用dao层的方法)
页面跳转
界面层 》 业务层(service) -- 》 数据层(dao)
2.2 数据共享与页面跳转
思考:为什么需要数据共享和页面跳转?
为什么要有跳转:
Servlet需要跳转到其它Servlet中,因为我们需要职责分明,不同Servlet来完成不同的功能
Servlet跳转到JSP中,Servlet输出动态页面实现恶心,咱们需要使用JSP来做页面的显示
为什么要共享:
http是无状态的,因为在不断的跳转过程中我们需要对数据进行共享。昨天咱们已经学习了一个数据共享Session了。
注:Session有一个缺陷,咱们不能滥用。
数据共享和页面跳转的方式如下
2.3 请求转发(forward)
需求:AServlet中没有做完的事情跳转到BServlet中继续执行
语法:req.getRequestDispatcher(String path).forward(ServletRequest req,ServletResponse resp);
getRequestDispatcher : 获得转发器
path : 跳转到哪里?
forward : 跳转,并带上参数, 千万不要忘记调用此方法了!
补充一句 : 上面代码写哪里? AServlet中的service方法里面
示例:
特点:
转发过程中浏览器地址栏路径没变
只发了一个请求
两个Servlet中共享同一个请求(就是请求对象request对象),在请求中共享数据;响应由最后一个决定。 思考如何验证,并完成验证!
只会显示最后一个响应对象中的数据
跳转之后一般都不要写代码
只能够访问当前应用中的资源,不能够跨域跳转(老师我想跳转到源代码官网去看视频...)
可以使用相对路径,不推荐
可以访问WEB-INF中的资源
从html页面跳转到Servlet需要先加上server.xml中的path(如果有),Servlet中的跳转是不需要加的!
疑问: 既然可以访问WEB-INF中的资源了,那怎么之前又说放在里安全呢?
程序没有提供的路径就不能够访问;
在跳转之前可以做权限判断
2.4 URL重定向(redirect)
需求:AServlet中没有做完的事情跳转到BServlet中继续执行
语法:resp.sendRedirect(String path);
示例:
特点: 测试下面每个点请留意浏览器地址栏!!!
浏览器中地址会变,相当于访问了两次
注意: path中应该加上server.xml中的path的值,如果有的话
发送了两个请求
因为是不同的请求,所以不能够共享请求中的数据
最终的响应是由最后一个Servlet决定
可以跨域访问资源(尝试访问)
不能够访问WEB-INF中的资源(思考为什么?)
2.5 请求包含(include-不用)了解
需求:AServlet中没有做完的事情跳转到BServlet中继续执行
语法:req.getRequestDispatcher(String path).include(ServletRequest req,ServletResponse resp);
特点: 基本上和forward一样,只是把两次响应的结果都输出了
2.6 常见面试题:
1. 请求转发forward和URL重定向的区别?
回答方式:
① 分别解释各自的定义
② 罗列各自的特点(最好是表格对比)
③ 各自的使用场景(其实也是来源于特点)
2. 两者如何选择?
①如果需要共享请求中的数据,只能用请求转发
②若要访问WEB-INF中的资源 ,只能用请求转发
③若要跨域访问,只能用URL重定向
④请求转发可能造成表单重复提交问题
3 数据共享与作用域对象
作用域对象存在的意义: 为了在多个web组件之间传递和共享数据。
3.1 认识作用域对象与操作
上面的作用域对象其中可以存储一些数据,在某种程度上(作用域)实现数据的共享
面试题:
HttpServletRequest req 中下面两个的区别
HttpServletRequest 中有如下的两个方法而已:
req.getParameter(“name”); 取到前台请求传入的参数
req.getAttribute(“name”); 把req当成作用域对象来存
文档评论(0)