㈠ jsp中EL标签怎样使用
个人学习笔记.非抄
El表达式的使用:
1、什么是EL表达式:
是一套简单的计算规则,用来给jsp标签的属性赋值。现在,
新的规范当中,也允许el表达式的结果直接输出
访问bean(java对象,有相应属性及get/set方法)的属性
①:
${user.name}:容器会一次从pageContext,request,sessionapplication中
查找绑定名称为”user”的对象,如果找到了,不再向下查找
如果找到了,会调用该对象的getName方法
如果没有找到,会输出” ”空字符串.
注意:属性名不能写错
跟直接写java代码访问bean的属性相比,
使用el表达式的优点是:会将null转换成""输出,
另外,找不到某个对象,会输出""。
②获取请求参数
${param.username} param为关键字
相当于request.getParameter(“username”);
${paramValues.city}
相当于request.getParameterValues(“city”);
③将计算结果输出,或者给jsp标签的属性复制
El表达式可以进行一些简单的计算
a、算数运算 + - * / %
“+” 不能够进行字符串的连接运算,会报错
b、关系运算 > >= < <= != ==
c、逻辑运算 && || !
d、empty运算 :判断一个字符串是否是一个字符串
或者一个集合是否为一个空的集合
如果要指定查找范围,可以使用
pageScope, requestScope,sessionScope,applicationScope。
比如:${requestScope.user.name}
EL表达式翻译为Java代码的含义:
${foo.name}翻译为Java代码是out.println(foo.getName());
意味着调用foo的getName()方法,而非访问foo的成员变量name
EL表达式把数据从四个范围(pageContext、request、session、application)中取出来显示或者计算
EL表达式解决了Java代码和HTML的不匹配问题
EL表达式用字符串表达式替换Java代码,用来表示对数据的获取或计算
㈡ jsp中使用el获取request中的值的问题
jsp中使用el获取request的值:
在jsp中获取request中的参数值就要使用下面的代码:
${requestScope.attr} 或者${attr}
1--EL表达式用${}表示,可用在所有的HTML和JSP标签中作用是代替JSP页面中复杂的JAVA代码.
2--EL表达式可操作常量 变量 和隐式对象. 最常用的 隐式对象有${param}和${paramValues}.
${param}表示返回请求参数中单个字符串的值. ${paramValues}表示返回请求参数的一组
值.pageScope表示页面范围的变量.requestScope表示请求对象的变量. sessionScope表示会话
范围内的变量.applicationScope表示应用范围的变量.
3 --<%@ page isELIgnored="true"%> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁
止.JSP2.0中默认的启用EL语言.
㈢ jsp标签中的 "${表达式}"表示什么
jsp标签中的 ${表达式}用来输出或者计算一个表达式的内容,比如${3+5},那么便会在页面上输出8,在比如${sessionScope.username},那么便会获取Session里面的username的值,它不能在代码块也就是<% %>里使用。
作用:EL(Expression Language)是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。
(3)jspelrequest扩展阅读
jsp中${}是EL表达式的常规表示方式
目的是为了获取{}中指定的对象(参数、对象等)的值
如:
${user.name}<====>User user = (User)request(搜寻范围).getAttribute(user);
String name = user.getName();
out.println(name);
从当前页面起开始搜寻 user对象,然后获取改对象的name属性值
其搜寻的范围依次是:page、request、session、application
如果未搜索到,即会返回null值
它在jsp+servlet的编程中经常使用,如果是刚学EL表达式,建议熟练掌握。
㈣ jsp EL表达式取值过程,page和pagecontext的区别
1、EL表达式解析过程
JSP中,我们经常会写为${obj.name}字样,但你有没有想过,它的取值过程是什么,属性值从哪取得?
${obj}相当于 request.getAttribute("obj"),这句话严格来说不严谨,依次的请求范围是page、request、session、application
也就是说,如果在page.getAttribute()找不到,再去request.getAttribute,如果request找不到,再去session里找,session里找不到,再去application里
page.getAttribute-------->request.getAttribute------------>session.getAttribute----------->applicaton.getAttribute
2、page和pagecontext的区别
page就是当前jsp页面,也等同于jsp编译后的servlet,查看java代码可以得知,page是java.lang.Object类型
publicvoid_jspService(finaljavax.servlet.http.HttpServletRequestrequest,finaljavax.servlet.http.HttpServletResponseresponse)
throwsjava.io.IOException,javax.servlet.ServletException{
finaljavax.servlet.jsp.PageContextpageContext;
javax.servlet.http.HttpSessionsession=null;
finaljavax.servlet.ServletContextapplication;
finaljavax.servlet.ServletConfigconfig;
javax.servlet.jsp.JspWriterout=null;
finaljava.lang.Objectpage=this;
javax.servlet.jsp.JspWriter_jspx_out=null;
javax.servlet.jsp.PageContext_jspx_page_context=null;response.setContentType("text/html;charset=UTF-8");
pageContext=_jspxFactory.getPageContext(this,request,response,
null,true,8192,true);
_jspx_page_context=pageContext;
application=pageContext.getServletContext();
config=pageContext.getServletConfig();
session=pageContext.getSession();
out=pageContext.getOut();
_jspx_out=out;
}
来个具体的例子吧。
page1.jsp,设置键值对
<%
page.setAttribute("name","obma")
%>
在page1.jsp,可以取出上边设置的name值,但是在其它页面(page2,page3中....)获取到的都是null
<%
Stringvalue=(String)page.getAttribute("name");
%>
pagecontext,是page的上下文,是javax.servlet.jsp.PageContext类型,它持有request,response,也持有page,通过pagecontext可以获取servletcontext、servletconfig等,可以看出他是一个桥梁可以获取上下文变量
㈤ 在jsp页面写的EL表达式,提示错误
EL表达式的写法要遵循特定语法的,否则会报错。
JSP EL简介
1、语法结构
${expression}
2、[ ]与.运算符
EL 提供“.“和“[ ]“两种运算符来存取数据。
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用“[ ]“。例如:
${user.My-Name}应当改为${user["My-Name"] }
如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例如:
${sessionScope.user[data]}中data 是一个变量
3、变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
属性范围在EL中的名称
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope