jsp页面el表达式取值过程

首先jsp页面如果想使用el表达是需要在jsp页面引入核心库jstl标签,具体引入方法参考如下链接

https://blog.csdn.net/a_newbird/article/details/103690171

1.先来介绍下jsp的四大作用域page,request,session,application

①page  page是指当前页面。只在当前的jsp页面有效

②request  存在于一次请求的对象,它是指从http请求到服务器处理结束,返回响应的整个过程。在这个过程中使用forward方式跳转多个jsp。在这些页面里用到的request是同一个对象

③session。 session是指当前会话 。只要客户端Cookie中传递的Jsessionid不变,Session不会重新实例化(不超过默认时间.)

其中session的实际有效时间指:

<1浏览器未关闭,cookie未失效;

<2 默认时间.在时间范围内无任何交互.其中在 tomcat 的web.xml 中配置

 30 

④application。它的范围是整个应用,在 服务器 启动项目时实例化.关闭 服务器时销毁

2.EL表达式的取值过程

el表达式取值是取出某一范围中名称为的变量。所以它会依序从Page、Request、Session、Application范围查找。 

如果Page、Request、Session、Application这四个作用域中都有该变量名,则取Page中的值。

另外如果用的是springmvc  model对象中也设置了相同的变量名,则取值顺序为model->request->session->application

 

代码实例如下

控制器代码

@RequestMapping("scope")
	public String scopeValue(HttpServletRequest req,Model model){
		
		req.setAttribute("scopeValue", "req值");
		req.getServletContext().setAttribute("scopeValue", "appcliation值");
		req.getSession().setAttribute("scopeValue", "appcliation值");
		//model.addAttribute("scopeValue", "model值");
		return "scope";
	}

jsp页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>




Insert title here


pageScope:${pageScope.scopeValue }
requestScope:${requestScope.scopeValue }
sessionScope:${sessionScope.scopeValue }
applicationScope:${applicationScope.scopeValue }

${scopeValue }

 

结果如下:

jsp页面el表达式取值过程_第1张图片

如果控制器的代码加上model,则jsp页面去到的值为model中设置的值

@RequestMapping("scope")
	public String scopeValue(HttpServletRequest req,Model model){
		
		req.setAttribute("scopeValue", "req值");
		req.getServletContext().setAttribute("scopeValue", "appcliation值");
		req.getSession().setAttribute("scopeValue", "appcliation值");
		model.addAttribute("scopeValue", "model值");
		return "scope";
	}

结果如下:

jsp页面el表达式取值过程_第2张图片

你可能感兴趣的:(jsp)