JSP无法获取Session属性值求助:Servlet转发后取值异常
问题原因与解决方案
核心问题
你在Servlet中将itemCount存入了request请求域,但JSP的脚本代码里错误地从session会话域获取该属性,两者不属于同一个作用域,所以获取到null:
- Servlet代码:
request.setAttribute("itemCount", 1000);—— 数据存储在当前请求的request作用域,仅在当前请求转发链中有效 - JSP脚本代码:
session.getAttribute("itemCount");—— 尝试从会话级的session作用域读取数据,该作用域中并没有存入过itemCount
修正方法
将JSP脚本中的session.getAttribute替换为request.getAttribute,同时注意类型匹配(你存入的是Integer类型,直接强转或输出即可):
<% Integer count = (Integer) request.getAttribute("itemCount"); out.print("Total items are: " + count); %>
或者简化写法,无需显式强转:
<% out.print("Total items are: " + request.getAttribute("itemCount")); %>
EL表达式能正常显示的原因
EL表达式${itemCount}会按照pageContext → request → session → application的优先级顺序依次查找对应属性,因此它能找到request域中存储的itemCount值,所以第二行显示正常。
内容的提问来源于stack exchange,提问作者kk luo
相关产品推荐
相关产品推荐

