其实关于这个问题困扰了我很久,当然在做了n次实验之后,我更加坚定了我的想法,就是如果当前端使用Ajax异步到servlet后端,后端再使用request域存储值,再通过转发的形式到前端(注意是转发),前端是拿不到request域里面的值的,session却可以,当然这只是针对于Ajax操作而言。话不多说,直接上代码。
1)这是我的前端代码,这里只用于发送Ajax到servlet
点击按钮直接发送Ajax,并且再Ajax执行成功后还对页面执行了刷新操作
2)这是我后端servlet的代码,Ajax会进到这里
进来之后执行doPost方法,这里设置了一个request域,key为zym。按照我之前的想法,前端只需要通过el表达式来获取key,就能拿到name值。zhname值会在div里面显示,也就是button按钮下面,可是往下看
div里面并没有显示任何数据,也就是说el并没有拿到数据,拿到的是一个null,null在el表达式中默认是不做任何显示的。
3)接下来我们使用session域来存储数据
并没有改变其他代码,只是把request换成了session来存储数据,转发到jsp页面。我们来看看效果
这里显示了在servlet里面对session域里面存储的数据
4)这就说明,如何使用Ajax执行这些操作,用request来存储数据是不合适的,最好用sesson,当然这里只说用Ajax来做访问servlet,如果你是通过form表单提交到servlet,在通过servlet转发到jsp页面,用request域设置数据是没有任何问题的。
5)至于为什么用Ajax使用request域存储数据前端拿不到,我也很迷惑,上网查了很久,一直没有找到一个实际的解决方案和合理的解释,如果有大佬明白的话,请指教一下,谢谢!
6)好了,以上就是我对这个问题的全部迷惑以及解决方案,欢迎评论。