1. 变量的三大区域
代码总要有区域的概念,像C语言中的局部变量以及全局变量,或者象jsp中的let变量和var变量等,在servlet中也有类似的概念,一般来说分为三大区域,即 request、session和Servlet。
1.1 reques区域
通过request.setAttribute设置的变量只能在一次请求中通过request.getAttribute获取,即从java到jsp单向请求。如果在java中通过setAttribute设置的值则可以在请求到达java时获取,如果请求再次跳转则设置的内容将被删除。
1.2 session区域
通过request.getSession().setAttribute()设置的变量在整个session有效期之内都可以通过requet.getSession().getAttribute()获取到。session的生命周期可以在web.xml中设置。
1.3 ServletContext区域
通过request.getServletContext().setAttribute()设置的变量在整个tomcat运行期间都有效。相当于java中的全局变量 public static 类型的变量。
2. 三大变量优先级
如果同时在request、session、servletContext中设置了某个属性,则获取的优先级是 requet > session > servletContext
3. EL常用的形式
3.1 jsp中省略的变量
对应的EL公式为
${initParam[]} 用于获取在web.xml中配置的 <context-param>t初始值。
getParameter() 用于后台从前台发送的表单诸多数据中获取某个id的值,而${param.name}是一样的作用,在某个jsp中提交了一个表单给后台,后台又跳转到其他页面时,可以使用${parma.name} 来后去表单中id为name的字段的值