欢迎光临
我们一直在努力

关于EL表达式及requestScope和param的区别

${id}表示会从作用域中取得数据。如果没有在EL表达式中指明它会默认的从【JavaWeb中的四个Scope】由小到大寻取,即按照page、request、session、application的顺序寻取。

作用域对象描述
pageScope从当前页面获取值
requestScope从当前请求中获取属性值
sessionScope从当前会话中获取属性值
applicationScope从当前应用获取全局属性值
// 从session获取
Student stu = new Student();
stu.setName("孔子");
String grade = "A";
HttpSession session = request.getSession();
session.setAttribute("student",stu);
session.setAttribute("grade",grade);

request.getRequestDispatcher("/el.jsp").forward(request,response);

使用:

// 使用
${student.name}
${requestScope.student.name}
${sessionScope.student.name}

requestScope和param的区别

开发过程中经常要在服务端和客户端之间请求或回写某个参数。

在我的使用过程中,一般客户端发起请求时input了某个参数,在jsp页面中可以通过${param.id}拿到这个参数,在servlet中可以通过request.getParameter(“id”)拿到这个参数。

而服务端回写数据时,通常在servlet程序中把数据通过request.setAttribute(“id”, “value”)设置参数值,在jsp页面中通过${requestScope.id}拿到这个回写的数据。

小节:

带有param的EL表达式用于jsp拿到客户端input的数据,

带有requestScope的EL表达式用于jsp拿到服务端回写的数据。

JavaWeb的四个Scope

【英文科普:scope 范围、域】

1.page里的变量没法从index.jsp传递到test.jsp。只要页面跳转了,它们就不见了。【以页面为单位】

2.request里的变量可以跨越forward前后的两页。但是只要刷新页面,它们就重新计算了。【以请求为单位】

3.session和application里的变量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这页,session里的变量就重新计算了。【以浏览器(缓存)为单位】

4.application里的变量一直在累加,除非你重启tomcat,否则它会一直变大。【以服务器为单位】

赞(0)
版权归原作者所有,如有侵权请告知。达维营-前端网 » 关于EL表达式及requestScope和param的区别

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址