struts2用session保存用户信息后,在跳转页面用
发布网友
发布时间:2022-11-05 21:26
我来回答
共1个回答
热心网友
时间:2023-10-24 01:15
昨天晚上从值栈角度答了许多,像什么第一种方式获取数据是从struts2封装的值栈ContextMap中获取的,
该值栈的生命周期是一次访问请求,跳转了页面值栈就清空之类的, 这也符合大部分人的认知,本来就结束的
但
经过测试, 当jsp页面1可以从值栈中的session 获取name属性, 跳转(重定向依旧如此)到jsp页面2, 依旧能获取seesion值
尝试直接访问jsp页面2, 依旧能通过方式1的ognl 表达式获取,
使用s:debug 查看, session也确实在ContextMap中, root栈中没有Action信息(因为直接访问的jsp页面嘛)
1. 是不是浏览器缓存? 使用访客模式, 结果如上一样
2. 是不是值栈的生命周期不是像request一样呢? 访问完没有销毁, 感觉不可能, 跳转之后的jsp页面2中 s:debug查看 root栈中确实已经没有默认Action的信息了
3. 是不是jsp也被struts2拦截了?
尝试将web.xml只拦截 *.action 发现jsp页面的s标签库无法使用这与jstl标签不同了
并且改回struts2拦截所有, 项目重启直接访问jsp也能使用debug标签, 确实jsp页面被访问后,
struts2创建了一个值栈对象, 将域中对象保存到ContextMap中, seesion域自然又被保存进值栈里面了
没有解决题主问题, 只是记录测试过程
以上回答不严谨, 名词使用理解就行, 本人对struts2 的理解也很不足,如果有人觉得不合理,直接回复我
我再看看
真感觉应该买本书看...