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表达式内置对象
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表达式接收请求参数
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>
今天演示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},一般是从服务器传递结果到页面,在页面中取出服务器保存的值。
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>
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>
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>

浙公网安备 33010602011771号