将数据显示到JSP页面(HTML页面中不可)中有三种方法:
Java代码、EL表达式、JSTL表达式
EL表达式
1 EL表达式显示数据
1.1 基本数据类型与String类型
//Servlet.java文件下
<%
request.setAttribute("score",100);
reqeest.setAttribute("name" ,"ncqnb" )
%>
//JSP文件下
成绩:${score }<br/>
姓名:${name }<br/>
1.2 自定义类类型
(1) 在页面中要显示的自定义类成员变量必须要有get方法
(2) 显示:${key (setAttribute中的key).成员变量名}
1.3 集合与数组
- List与Set集合
//Servlet文件下
<%
List<String> nameList = new ArrayList<String>();
nameList.add("唐僧");
nameList.add("孙悟空");
request.setAttribute("names",nameList);
%>
//jsp文件下
<!-- 输出单个 -->
姓名:${names[0]}<br/>
<!-- 遍历集合 -->
<c:forEach var="name" items="${names}">
姓名:${name}<br/>
</c:forEach>
- 数组
//定义Student类
public class Student{
private String name;
public Student(String name){
this.name = name;
}
public String getName(){
return name;
}
}
//Setvlet文件下
Student[] stuArray = {new Student("唐僧"),new Student("悟空")};
request.setAttribute("stuArray",stuArray);
//jsp文件下
<!-- 输出单个 -->
姓名:${stuArray[0].name}<br/>
<!-- 遍历数组 -->
<c:forEach var="student" items="${stuArray}">
姓名:${student.name}<br/>
</c:forEach>
- Map集合
//在Servlet文件下
Map<String,String> teacherMap = new HashMap<String,String>();
teacherMap.put("语文","白老师");
teacherMap.put("数学","李老师");
request.setAttribute("teachers",teacherMap);
//在jsp文件下
<!-- 输出单个 -->
姓名:${teachers.语文}<br/>
姓名:${teachers['数学']}<br/>
姓名:${teachers["数学"]}<br/>
<!-- 遍历Map -->
<c:forEach var="teacher" items="${teachers}">
姓名:${teacher.key}:${teacher.value}<br/>
</c:forEach>
Tips:
1、Map集合的key最好符合Java标识符规范,如果不符合,则在EL表达式中不能使用.的方式获取到Map相应的value,只能通过[]的方式获取到相应的value
2、Map集合key的泛型不能是Java基本数据类型的包装类,否则EL表达式无论使用那种方式都无法获取到相应的value
2 EL表达式中的运算符
1.1 算术运算符
运算符号:+、-、*、/或div(没有按照最高精度保留结果的特点)、%或mod
三目运算符:${a==1?"相等":"不相等"} tip: 单引号和双引号都可以
//jsp文件下
<input type="radio" name="gender" value="0" ${genderType==0?'checked':''}>女
<input type="radio" name="gender" value="1" ${genderType==1?'checked':''}>男
<select name="grade">
<option value="0" ${gradeValue=0?'selected':''}>--请选择--</option>
<option value="1" ${gradeValue=1?'selected':''}>一年级</option>
<option value="2" ${gradeValue=2?'selected':''}>二年级</option>
<option value="3" ${gradeValue=3?'selected':''}>三年级</option>
1.2 关系运算符
运算符符号:==或eq
!=或ne
<或lt(即less than)
>或gt(即great than)
<= 或 le
>= 或 ge
1.3 逻辑运算符
运算符符号:&& 或 and、|| 或 or、! 或 not(注意:只能对boolean型数据运算)
1.4 empty运算符
如果集合或数组中没有数据,或者其值为null,则empty判断为true,not empty判断为false