el表达式中换行_JSP之el表达式

el表达式

el: jsp的内置表达式语言,从jsp2.0开始,用来替代

作用:1.获取域中数据 ★2.执行运算 ★3.获取常见的web对象4.调用java的方法

格式:

${el表达式}

获取域中数据:★

注意:★

若属性名中出现了"."|"+"|"-"等特殊符号,需要使用scope获取

例如:

${requestScope["arr.age"] }

获取简单数据

${pageScope|requestScope|sessionScope|applicationScope.属性名}

以后经常使用:

${属性名}:依次从pageContext,request,session,application查找指定属性,若查找到返回值,结束该次查找

若查找不到,返回""获取复杂数据

获取数组中的数据: ${域中的名称[index]}

获取list中的数据: ${域中的名称[index]}

获取map中的数据: ${域中的名称.键名}

案例1--el获取域中简单数据

demo1.jsp

el获取域中简单数据

session.setAttribute("rkey", "svalue");

session.setAttribute("skey", "svalue");

application.setAttribute("akey", "avalue");%>获取request中的数据:

老方式:
el方式:${requestScope.rkey }


获取session中的数据:

老方式:
el方式:${sessionScope.skey }


获取application中的数据:

老方式:
el方式:${applicationScope.akey }



获取application数据失败:

老方式失败:
el方式失败:${applicationScope.aakey }


便捷获取:

${rkey },${skey },${akey },${aakey }


启动tomcat,浏览器中输入以下url,回车,页面显示如下:

案例2--el获取域中复杂数据

el获取域中复杂数据

//往request域中放入数组

request.setAttribute("arr", new String[]{"aa","bb","cc"});//往request域中放入list中

List list = newArrayList();

list.add(111);

list.add(222);

list.add(333);

request.setAttribute("list", list);//往request域中放入map集合中

Map map = newHashMap();

map.put("username","hjh");

map.put("password","12345");

request.setAttribute("map", map);

request.setAttribute("user-age", "999");%>获取域中的数组:
老方式:
el方式:${arr[1] }


获取域中的list:
老方式:
el方式:${list[1] }
list的长度:${list.size() }
获取域中的map:
老方式:
el方式:${map.username }
获取特殊名字的数据 :

${requestScope["user-age"] }

启动tomcat,浏览器中输入以下url,回车,页面显示如下:

javabean导航

javabean:

java语言编写的一个可重用的组件,

狭义上来说就是我们编写的一个普通的java类 例如:User Person

javabean规范:1.必须是一个公共的具体的类 public class

2.提供私有的字段 private String id;//id称之为字段

3.提供公共访问字段的方法 get|set|is方法publicString getId(){..}

一旦有公共的方法之后,get|set|is之后的内容,将首字母小写,将这个东西称之为bean属性

id就是一个bean属性4.提供一个无参的构造器5.一般实现序列化接口 serializable

${域中javabean名称.bean属性}

案例--javabean

user.java

packagecom.hjh.javabean;public classUser {privateString id;private String username;privateString password;publicUser() {}publicUser(String id,String username,String password) {this.id =id;this.username =username;this.password =password;

}publicString getId() {returnid;

}public voidsetId(String id) {this.id =id;

}public String getName() {

return username;

}

public void setName(String username) {

this.username = username;

}publicString getPassword() {returnpassword;

}public voidsetPassword(String password) {this.password =password;

}

@OverridepublicString toString() {return "User [id=" + id + ", username=" + username + ", password=" + password + "]";

}

}

javabean.jsp

javabean

user.setId("001");

user.setName("hjh");//name为javabean属性,而非username

user.setPassword("12345");

request.setAttribute("user",user);%>获取域中javabean的id值:
老方式:
el方式:${user.id }


el获取name:
正确演示:${user.name }

启动tomcat,浏览器中输入以下url,回车,页面显示如下:

加入以下代码,程序报错,应为user类中并没有提供getUsername()、setUsername()方法:

错误演示:${user.username}

错误信息如下:

el执行运算:

四则运算 关系(>..) 逻辑(&& ||)

注意:+:只能进行加法运算,字符串形式数字可以进行加法运算.

数字+数字字符串=数字

数字字符串+数字字符串 报错

empty:判断一个容器的长度是否为0(array set list map),还可以判断一个对象是否为空

${empty 域中的对象名称}

三元运算符

案例1--el加法运算:

el加法运算

request.setAttribute("b", 22);

request.setAttribute("c", "33");

request.setAttribute("d", "kkk");%>数字+数字:${a+b }数字+数字字符串:${a+c }数字字符串+数字字符串:${c+c }

数字+字母字符串:${a+d}数字字符串+字母字符串:${c+d }字母字符串+字母字符串:${d+d }

案例2--el判断长度empty:

empty1.jsp

empty判断长度是否为0

request.setAttribute("list1", list1);

List list2= newArrayList();

list2.add(1234);

request.setAttribute("list2", list2);%>request域中lis:1的长度是否为0:${empty list1 }request域中list2的长度是否为0:${empty list2 }

启动tomcat,浏览器中输入以下url,回车,页面显示如下:

案例3--el判断对象是否为empty:

empty2.jsp:

empty判断对象是否为0

request.setAttribute("user1", user1);

User user2= newUser();

request.setAttribute("user2", user2);%>request域中javabean对象的长度是否为0:${empty user1 }request域中javabean对象的长度是否为0:${empty user2 }

启动tomcat,浏览器中输入以下url,回车,页面显示如下:

案例3--el三元运算符:

demo3.jsp

el获取域中简单数据

int i=3;%>


${3>4?"yes":"no" }
${i==3?"yes":"no"}

启动tomcat,浏览器中输入以下url,回车,页面显示如下:

el的内置对象(了解):

11个

pageScope

requestScope

sessionScope

applicationScope

param

paramValues

header

haederValues

initParam

cookie★

pageContext★

注意:

除了pagecontext其余对象获取的全是map集合

了解:和参数相关的el内置对象

param

paramValues

案例:

el内置对象param¶mValues
${param }
${paramValues }
${paramValues.hobby[0] }

http://localhost:8080/Jsp/el/param?username=hjh&password=12345&hobby=eat&hobby=sport

了解:和请求头相关的el内置对象

header

haederValues

案例:

header.jsp

el内置对象header&headerValues
headerValues:${headerValues }
referer:${header.referer }
user-agent:${headerValues["user-agent"][0] }

启动tomcat,输入以下url,回车,页面显示如下:

了解:和全局初始化参数相关的el内置对象

initParam

web.xml

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID"

version="3.1">

encoding

utf-8

initParam.jsp

el获取域中简单数据

启动tomcat,浏览器中输入以下url,回车,页面显示如下:

cookie内置对象:

${cookie} 获取map{key=Cookie}

例如:创建cookie

Cookie c=new Cookie("username","tom");

通过${cookie}获取相当于

{username=new Cookie("username","tom")}

相当于map的key是cookie的键

map的value是当前cookie

若项获取名称username的cookie的value值(获取tom)

${cookie.username.value}--javabean导航

注意:

java中Cookie的api

getName():获取cookie的名称

getValue():获取cookie的value值

我们称name和value是cookie的bean属性

使用cookie内置对象:

${cookie.给cookie起名字.value}

例如:

获取jsession的值

${cookie.JSESSIONID.value}

cookie.jsp

el加法运算

浏览器显示如下:

pageContext:获取不是map集合,相当于jsp的pageContext内置对象

在jsp页面中获取项目名

${pageContext.request.contextPath}

pageContext.jsp

el加法运算

点击跳转到text.jsp

启动comcat,访问以下url,显示一个超链接,如下图:

点击超链接,页面跳转到text.jsp页面,url随之改变:

你可能感兴趣的:(el表达式中换行)