这里param 的功能和request.getParameter(String name)相同,而paramValues和
request.getParameterValues(String name)相同。如果用户填了一个表格,表格名称为username,则我们就可以使用${param.username}来取得用户填入的值。
看到这里,大家应该很明确EL表达式只能通过内置对象取值,也就是只读操作,如果想进行写操作的话就让后台代码去完成,毕竟EL表达式仅仅是视图上的输出标签罢了。
pageContext
我们可以使用 ${pageContext}来取得其他有关用户要求或页面的详细信息。下表列出了几个比较常用的部分
Expression 说明 ${pageContext.request.queryString} 取得请求的参数字符串 ${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串,即servlet的HTTP地址。 ${pageContext.request.contextPath} 服务的webapplication的名称 ${pageContext.request.method} 取得HTTP的方法(GET、POST) ${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0) ${pageContext.request.remoteUser} 取得用户名称 ${pageContext.request.remoteAddr} 取得用户的IP地址 ${pageContext.session.new} 判断session是否为新的,所谓新的session,表示刚由server产生而client尚未使用 ${pageContext.session.id} 取得session的ID ${pageContext.servletContext.serverInfo} 取得主机端的服务信息
这个对象可有效地改善代码的硬编码问题,如页面中有一A标签链接访问一个SERVLET,如果写死了该SERVLET的HTTP地址
那么如果当该SERVLET的SERVLET-MAPPING改变的时候必须要修改源代码,这样维护性会大打折扣。
EL算术运算
表达式语言支持的算术运算符和逻辑运算符非常多,所有在Java语言里支持的算术运算符,表达式语言都可以使用;
甚至Java语言不支持的一些算术运算符和逻辑运算符,表达式语言也支持。
<%@ page contentType="text/html; charset=gb2312"%> <html> <head> <title>表达式语言 - 算术运算符</title> </head> <body> <h2>表达式语言 - 算术运算符</h2> <hr> <table bgcolor="aaaadd"> <tr> <td><b>表达式语言</b></td> <td><b>计算结果</b></td> </tr> <!-- 直接输出常量 --> <tr> <td>\${1}</td> <td>${1}</td> </tr> <!-- 计算加法 --> <tr> <td>\${1.2 + 2.3}</td> <td>${1.2 + 2.3}</td> </tr> <!-- 计算加法 --> <tr> <td>\${1.2E4 + 1.4}</td> <td>${1.2E4 + 1.4}</td> </tr> <!-- 计算减法 --> <tr> <td>\${-4 - 2}</td> <td>${-4 - 2}</td> </tr> <!-- 计算乘法 --> <tr> <td>\${21 * 2}</td> <td>${21 * 2}</td> </tr> <!-- 计算除法 --> <tr> <td>\${3/4}</td> <td>${3/4}</td> </tr> <!-- 计算除法 --> <tr> <td>\${3 div 4}</td> <td>${3 div 4}</td> </tr> <!-- 计算除法 --> <tr> <td>\${3/0}</td> <td>${3/0}</td> </tr> <!-- 计算求余 --> <tr> <td>\${10%4}</td> <td>${10%4}</td> </tr> <!-- 计算求余 --> <tr> <td>\${10 mod 4}</td> <td>${10 mod 4}</td> </tr> <!-- 计算三目运算符 --> <tr> <td>\${(1==2) ? 3 : 4}</td> <td>${(1==2) ? 3 : 4}</td> </tr> </table> </body> </html>