您好,欢迎访问三七文档
计算机学院软件教研室EL全名为ExpressionLanguageJSP2.0之后,EL已经正式成为标准规范之一。因此,只要是支持Servlet2.4/JSP2.0的Container,就都可以在JSP网页中直接使用EL了。注意:有些Tomcat服务器如不能使用EL表达式(1)升级成tomcat6(2)在JSP中加入%@pageisELIgnored=false%2020/6/62语法:${开始,}结束使用方式[]或.1.${user.username}2.${user[“username]}[]使用范围1.当要取的属性名称中包含一些特殊字符,如.或–等非字母或数字的符号,就一定要使用[]${user.My-Name}√${user[My-Name]}2.要从List或数组中取值${shoppingCart[0].price}2020/6/63访问某个Attribute中存放的属性值◦示例:${username}◦表示:取出某一范围中名称为username的变量。范例说明${pageScope.username}取出Page范围的username变量${requestScope.username}取出Request范围的username变量${sessionScope.username}取出Session范围的username变量${applicationScope.username}取出Application范围的username变量2020/6/64示例:request中保存的某个int类型参数做加法对request中的参数操作1.Stringstr_count=request.getParameter(count);2.intcount=Integer.parseInt(str_count);3.count=count+20;EL实现◦${param.count+20}◦假若传来count的值为10时,那么上面的结果为302020/6/651.与范围有关的隐含对象◦applicationScope◦sessionScope◦requestScope◦pageScope2.与输入有关的隐含对象◦param◦paramValues3.其他隐含对象◦cookie◦header◦headerValues◦initParam◦pageContext2020/6/66隐含对象类型说明PageContextjavax.servlet.ServletContxt表示此JSP的PageContextPageScopejava.util.Map取得Page范围的属性名称所对应的值RequestScopejava.util.Map取得Request范围的属性名称所对应的值sessionScopejava.util.Map取得session范围的属性名称所对应的值applicationScopejava.util.Map取得application范围的属性名称所对应的值paramjava.util.Map如同ServletRequest.getParameter(Stringname).回传String类型的值2020/6/67隐含对象类型说明paramValuesava.util.Map如同ServletRequest.getParameterValues(Stringname).回传String[]类型的值headerjava.util.Map如同HttpServletRequest.getHeader(Stringname).回传String类型的值headerValuesjava.util.Enumeration如同HttpServletRequest.getPHeaders(Stringname).回传String[]类型的值cookiejava.util.Map如同HttpServletRequest.getCookies()initParamjava.util.Map如同ServletContext.getInitParameter(Stringname).回传String类型的值2020/6/68注意◦隐含对象只能用来取得范围属性值,即JSP中的getAttribute(Stringname),却不能取得其他相关信息JSP中的request对象除可以存取属性之外,还可以取得用户的请求参数或表头信息等等。◦例:session中储存一个属性,它的名称为usernameJSP:session.getAttribute(“username”)EL:${sessionScope.username}2020/6/69JSP取参数◦request.getParameter(Stringname)◦request.getParameterValues(Stringname)用param和paramValues取得数据◦${param.name}◦${paramValues.name}示例:Paramform.jspParam.jsp2020/6/6101.formaction=Param.jspmethod=post2.table3.trthcolspan=2注册信息/th/tr4.trtd姓名:/tdtdinputname=username/td/tr5.trtd性别:/tdtdinputtype=radioname=sexvalue=男男6.inputtype=radioname=sexvalue=女女/td/tr7.trtd爱好:/tdtdinputtype=checkboxname=habitvalue=阅读阅读8.inputtype=checkboxname=habitvalue=睡觉睡觉9.inputtype=checkboxname=habitvalue=美食美食10./td/tr11.trtdcolspan=2align=centerinputtype=submitvalue=注册//td/tr12./table13./form2020/6/6111.%2.request.setCharacterEncoding(gb2312);3.%4.tableborder=1align=center5.trthcolspan=2注册信息/th/tr6.trtd姓名:/tdtd${param.username}/td/tr7.trtd性别:/tdtd${param.sex}/td/tr8.trtd爱好:/tdtd${paramValues.habit[0]}br/${paramValues.habit[1]}9./td/tr10./table2020/6/612因为动作通常都是后端开发者必须去做的事情,而不是交给前端的开发者。◦假若我们在cookie中设定一个名称为userCountry的值,那么可以使用${cookie.userCountry}来取得它。2020/6/613header储存用户浏览器和服务端用来沟通的数据,当用户要求服务端的网页时,会送出一个记载要求信息的标头文件.◦例如:用户浏览器的版本、用户计算机所设定的区域等其他相关数据。◦假若要取得用户浏览器的版本,即${header[“User-Agent”]}。少数情况,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues来取得这些值。2020/6/614当自行设定web的环境参数(Context)时,可以使用initParam隐含对象去取得参数例如:在web.xml1.?xmlversion=1.0encoding=ISO-8859-1?2.web-app3.…4.context-param5.param-nameuserid/param-name6.param-valuemike/param-value7./context-param8....9./web-appEL:可以直接使用${initParam.userid}来取得名称为userid,其值为mike的参数。2020/6/615使用${pageContext}来取得其他有关用户要求或页面的详细信息表达式说明${pageContext.request.queryString}取得请求的参数字符串${pageContext.request.requestURL}取得请求的URL,但不包含请求参数字符串${pageContext.request.contextPath}服务的webapplication的名称2020/6/616算术运算符说明范例结果+加${17+5}22-减${17-5}12*乘${17*5}85/(div)除${17/5}或${17div5}3.4%(mod)余数${17%5}或${17mod5}22020/6/617关系运算符说明范例结果==(eq)等于${5==5}或${5eq5}true!=(ne)不等于${5!=5}或${5ne5}false(lt)小于${35}或${3lt5}true(gt)大于${35}或${3gt5}false=(le)小于等于${2=5}或${3le5}true=(ge)大于等于${3=5}或${3ge5}false2020/6/618判断两次输入的密码相同◦password1◦password2注意:◦${param.password1}==${param.password2}◦${${param.password1}==${param.password2}}◦${param.password1==param.password2}2020/6/619××√逻辑运算符说明范例结果&&(and)交集${A&&B}或${AandB}true/false||(or)并集${A||B}或${AorB}true/false!(not)非${!A}或${notA}true/false${param.month==7andparam.day==14}${param.month==7||param.day==14}${notparam.choice}2020/6/620empty运算符:检查变量是否为null或“空”◦${emptyA}◦运算规则假若A为null时,回传true否则,假若A为空String时,回传true否则,假若A为空Array时,回传true否则,假若A为空Map时,回传true否则,假若A为空Collection时,回传true否则,回传false三元表达式◦${A?B:C}◦${user!=null?(user.username):“”}2020/6/6212020/6/622所谓保留字的意思是指变量在命名时,应该避开的名字,以免程序编译时发生错误HttpServletRequest.getHeader(Stringname)ReturnsthevalueofthespecifiedrequestheaderasaString.Iftherequestdidnotincludeaheaderofthespecifiedname,thismethodreturnsnull.Iftherearemultipleheaderswiththesamename,thismethodreturnsthefirstheadintherequest.Theheadernameiscaseinsensitive.Youcanusethismethodwithanyrequestheader.Parameters:name-aStringspecifyin
本文标题:EL表达式
链接地址:https://www.777doc.com/doc-5733268 .html