EL表达式

EL表达式访问4种范围属性,寻找值的顺序:page->request->session->application,如下info1显示page范围的值

<body>
<%
    pageContext.setAttribute("info1","page范围的值");
    request.setAttribute("info1","request范围的值");
    session.setAttribute("info1","session范围的值");
    application.setAttribute("info1","application范围的值");
%>
<h1>${info1 }</h1>
<%-- <h1>${info2 }</h1>
<h1>${info3 }</h1>
<h1>${info4 }</h1> --%>
</body>
EL

EL表达式内置对象

 
1 pageContext 表示 javax.servlet.jsp.PageContext对象
2 pageScope 表示从 page属性范围查找输出属性
3 requestScope 表示从 request属性范围查找输出属性
4 sessionScope 表示从 session属性范围查找输出属性
5 applicationScope 表示从application属性范围查找输出属性
6 param 接收传递到本页面的参数
7 paramValues 接收传递到本页面的一组参数
8 header 取得一个头信息数据
9 headerValues 取出一组头信息数据
10 cookie 取出 cookie中的数据
11 initParam 取得配置的初始化参数
EL 内置对象

EL表达式接收请求参数

Param:单个参数
paramValues:一组参数

<body>
<form action="el2.jsp" method="post">
<input type="text" name="name"/>
<input type="submit" value="提交el2.jsp"/>
</form>
<!-- get提交方式也行 -->
<a href="el2.jsp?age=12">提交el2.jsp</a>
<form action="el2.jsp" method="post">
<input type="checkbox" name="hobby" value="java语言"/>java语言
<input type="checkbox" name="hobby" value="C#语言"/>C#语言
<input type="checkbox" name="hobby" value="php语言"/>php语言
<input type="submit" value="提交el2.jsp"/>
</form>
</body>

-----------------------el2.jsp--------------------------------------
<body>
<%
    request.setCharacterEncoding("utf-8");
%>
<h1>姓名:${param.name }</h1>
<h1>年龄:${param.age }</h1>
<h1>爱好一:${paramValues.hobby[0] }</h1>
<h1>爱好二:${paramValues.hobby[1] }</h1>
<h1>爱好三:${paramValues.hobby[2] }</h1>
</body>
param

关于EL表达式中requestScope和param区别

 今天演示EL表达式的时候发现自己jsp的基础实在是薄弱,在这个很简单的问题上迷惑了很久。

首先在看遇到的问题:

在浏览器地址输入,表示传入一个参数test,值为123

http://localhost:8888/Test/index.jsp?test=123


在index.jsp中尝试使用EL表达式取出,代码如下:

 <body>
    ${test}
 </body>

发现毫无结果,再使用requestScope尝试取出:

  <body>
    ${requestScope.test}
  </body>

发现还是毫无结果,感到非常诧异,遂干脆使用Java脚本尝试取出。

  <body>
      <%request.getAttribute("test"); %>
  </body>


依然无解。

之后发现,若使用已下代码向request作用域赋值,则用上面代码可以取出

<%
    request.setAttribute("test", "123");
 %>

 


查询资料后发现,使用以下代码可以取出之前的请求参数:
EL:

  <body>
    ${param.test}
  </body>

JAVA脚本:

  <body>
      <%=request.getParameter("test") %>
  </body>

结论就是:${param.name} 等价于 request.getParamter("name"),这两种方法一般用于服务器从页面或者客户端获取的内容。

     ${requestScope.name} 等价于 request.getAttribute("name") 等价于等价于 ${name},一般是从服务器传递结果到页面,在页面中取出服务器保存的值。
View Code

 

EL表达式对象操作

<body>
<%
    People zhangsan=new People();
    zhangsan.setId(1);
    zhangsan.setName("张三");
    zhangsan.setAge(20);
    request.setAttribute("zhangsan",zhangsan);
%>
<h1>编号:${zhangsan.id }</h1>
<h1>姓名:${zhangsan.name }</h1>
<h1>年龄:${zhangsan.age }</h1>
</body>
${user.name}

EL表达式集合操作

<body>
<%
    List all=new LinkedList();
    all.add(0,"元素一");
    all.add(1,"元素二");
    all.add(2,"元素三");
    request.setAttribute("all",all);
%>
<h1>${all[0] }</h1>
<h1>${all[1] }</h1>
<h1>${all[2] }</h1>
</body>
View Code

EL表达式运算符操作

算数运算符,关系运算符,逻辑运算符;
三目运算符;
Empty 关键字;(判断表达式中的值是否为空,结果为true/false)

<body>
<%
    request.setAttribute("num1",10);
    request.setAttribute("num2",3);
    request.setAttribute("flag1",true);
    request.setAttribute("flag2",false);
%>
<h1>算数运算符</h1>
<h2>num1=${num1 },num2=${num2 }</h2>
<h2>num1+num2=${num1+num2 }</h2>
<h2>num1-num2=${num1-num2 }</h2>
<h2>num1*num2=${num1*num2 }</h2>
<h2>num1/num2=${num1/num2 }</h2>
<h2>num1%num2=${num1%num2 }</h2>
<h2>num1*(num1-num2)=${num1*(num1-num2) }</h2>
<h1>关系运算符</h1>
<h2>flag1=${flag1 },flag2=${flag2 }</h2>
<h2>与操作flag1 && flage2:${flag1 && flage2 }</h2>
<h2>或操作flag1 || flage2:${flag1 || flage2 }</h2>
<h2>非操作!flag1:${!flag1}</h2>
<h1>三目运算符</h1>
<h2>三目操作:num1>num2:${num1>num2?"yes":"no" }</h2>
<h1>empty关键字</h1>
<h2>判断空操作:${empty num1 }</h2>
</body>
View Code
posted @ 2017-03-03 16:31  SKYisLimit  阅读(120)  评论(0)    收藏  举报