response是怎样响应客户端的?

zhaixd123 2018-01-22 08:29:28
ecpipse+Tomcat+Hibernate搭建的项目,有个不解的地方,比如我数据库有两张表一个A表和B表,B引用A的ID做外键。然后再servlet里我封装了A表的数据到实体类,但是我用了延迟加载,B表的数据并没有被加载到A表的实体类中。
但是跳转到的页面里即用到A表数据,也用到B表的数据,但是这个时候response已经响应结束了,它是怎么再次回去拿数据再次返回来的(或许这里我有误区,百度了一天也没太搞清楚response到低是如何响应到客户端的,说的有错求大神纠正),因为在代码并没有写啊,到低是容器自己做了这一件事,还是response是我想象中的(猜的,因为我真的没彻底理解他到低是如何响应到客户端的)动态响应-即所谓的一次响应其实是分成多次通信进行的,响应完成一行返回一个代码到服务器,直至响应完整个页面然后结束。如果response的原理真的是这样的,那我就能理解了。只讨论这个场景,最多延伸到HTTP通信,太深我也看不懂,Hibernate session关闭的问题暂不考虑,已经用过滤器解决了,现在是想理解他的机制,求助各路好汉,跪谢。
...全文
606 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianfang 2018-01-25
  • 打赏
  • 举报
回复
延迟加载,一旦使用了其中的数据,就加载了。你生成response时候,使用B的数据,对response的数据赋值时,B就加载了
「已注销」 2018-01-22
  • 打赏
  • 举报
回复
引用 3 楼 splendid_java 的回复:
[quote=引用 2 楼 zhaixd123 的回复:] [quote=引用 1 楼 splendid_java 的回复:] 1、首先不会分多次响应,响应只有一次。(看LZ描述只是个简单的查询)。 2、延迟加载,只用来缓解数据处理的压力,但是在响应前(response),一定是全部加载完才是一次完整的http请求。
那问题是在还没有跳转页面之前,response是怎么知道我里面用到了B表的数据,提前封装好然后发送到客户端的[/quote] 1、建议先看hibernate的工作原理,延迟加载,实体映射,都在hibernate处理范畴。 2、response属于tomcat的工作范畴,它只负责把结果反馈到客户端(浏览器)。[/quote]额,通了老铁,response在发送响应的时候一定是把整个页面封装好发送过来的,在发送响应之前已经调用到b表数据了,这个时候就已经加载了B表。并不是像我理解的那样,我钻牛角尖了。。。
ZHOU西口 2018-01-22
  • 打赏
  • 举报
回复
引用 2 楼 zhaixd123 的回复:
[quote=引用 1 楼 splendid_java 的回复:] 1、首先不会分多次响应,响应只有一次。(看LZ描述只是个简单的查询)。 2、延迟加载,只用来缓解数据处理的压力,但是在响应前(response),一定是全部加载完才是一次完整的http请求。
那问题是在还没有跳转页面之前,response是怎么知道我里面用到了B表的数据,提前封装好然后发送到客户端的[/quote] 1、建议先看hibernate的工作原理,延迟加载,实体映射,都在hibernate处理范畴。 2、response属于tomcat的工作范畴,它只负责把结果反馈到客户端(浏览器)。
「已注销」 2018-01-22
  • 打赏
  • 举报
回复
引用 1 楼 splendid_java 的回复:
1、首先不会分多次响应,响应只有一次。(看LZ描述只是个简单的查询)。 2、延迟加载,只用来缓解数据处理的压力,但是在响应前(response),一定是全部加载完才是一次完整的http请求。
那问题是在还没有跳转页面之前,response是怎么知道我里面用到了B表的数据,提前封装好然后发送到客户端的
ZHOU西口 2018-01-22
  • 打赏
  • 举报
回复
1、首先不会分多次响应,响应只有一次。(看LZ描述只是个简单的查询)。 2、延迟加载,只用来缓解数据处理的压力,但是在响应前(response),一定是全部加载完才是一次完整的http请求。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧