request.getSession().setAttribute()和request.getSession().getAttribute()配对使用,作用域是整个会话期间,在所有的页面都使用这些数据的时候使用。
request.setAttribute()和request.getAttribute()配对使用,作用域是请求和被请求页面之间。转发forward可以使用request.getAttribute()取得设置的属性;重定向redirect不可以。
request.getSession().setAttribute("name","JiaDLL");
req.setAttribute("name","PPG");
test.jsp
<%= request.getSession().getAttribute("name")%>
<br>
<%= request.getAttribute("name")%>
<br>
${ name }
转发:
request.getRequestDispatcher("test.jsp").forward(request,response);
结果:
重定向:
response.sendRedirect("test.jsp");
结果:
${name}等价于
request.getAttribute("name");
El表达式
当域对象里面的值不存在时,使用EL表达式获取域对象里面的值返回空字符串;而使用Java脚本方式获取,返回值是null,会报空指针异常。