servlet中resquest和response的一个小误解

本文解析了Servlet的请求过程及响应机制,通过一个具体的示例详细解释了如何通过URL映射请求特定的Servlet,以及如何理解Servlet作为服务器端功能窗口的角色。同时,探讨了在Servlet中使用request对象而非response对象的原因。

servlet的调用过程是这样的,在浏览器的页面中输入servlet的映射地址如:http://localhost:8081/area_demo/loadProv

请求servlet-mapping标签下url-parttern名为/loadProv的servlet的.java类。通俗的讲,虽然.java是这是一个类,但是也可以看做是一个请求的页面或者更准确的说是一个服务窗口(就像我们现实中行政审批大厅当中某个单位的服务窗口一样,它虽然没有门脸(也就是前端的显示页面),但是它的功能跟有前端显示页面的页面是一样的,都能够实现某个服务。),因此它是服务器端的一个功能窗口,也需要请求,也是就request。所以输入上面的地址,实在请求这个.java功能窗口。

下面我们给出一个简单的demo代码:

这是上面这个地址所请求的.java类的代码,这里doPost方法访问service层,service层访问Dao层,并在数据库取出了省的名称,并封装在List<Area>的provList中,那么问题来了。既然provList是服务器响应回来的内容,那么下面的代码为什么是req.SetAttribute("","")呢?为什么是req呢也就是request呢?不应该是response吗?

产生这个疑问是因为没有把.java这个"功能窗口"与.jsp这个“功能页面”分开。认为.java是.jsp页面后台代码,他们是一个属于同一个功能页面,这样的认识是全完错误的。其实他们完全是两个独立的“单位”。需要单独的去请求和响应。因此,这里用req就很明白了,这是因为在.java这个“窗口”中prolist有两个身份,它是服务器response给.java的内容。同时也是.java请求.jsp的request的内容。那么在这里用req.setAttribute("","")的原因就很明确了。

这不就跟我们去办事大厅的窗口去办事完全是一个道理吗?我们把材料提交给窗口,窗口将材料中的内容填写好后,再返回给我们,要我们拿着材料去下一个单位去办理后续的事项,那么这个材料,就是我们窗口返回给我们的内容,同时也是我们去请求下一个单位的内容。其中的内容发生了变化,身份也产生了变化。

既然是下一个页面的请求内容,那么在下一个页面中,我们就能够用JSTL在页面中取到它的值了。如下图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wolfalcon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值