EL表达式概念
Expression Language 表达式语言,是一种在JSP页面获取数据的简单方式(只能获取数据,不能设置数据)在JSP2.0开始引入概念,它的主要功能是取得保存在内置对象中的数据显示到JSP页面
EL表达式中的运算符
在EL表达式中,我们可以使用运算符以达到完美想要的结果,运算符按照作用分为以下几种
算数运算符:
+:${6+6}注意在EL表达式中的‘+’只有数字运算的功能,没有连接符的功能
-:${7-3}
*:${2*3}
/:${4/2}
关系运算符
> 或者 gt:${8>9} 或者 ${8 gt 9}
>= 或者 ge:${10>=9} 或者 ${10 ge 9}
< 或者 lt:${4<5} 或者 ${4 lt 5}
<= 或者 le
== 或者 eq
!= 或者 ne
逻辑运算符
&& 或者 and:${false && false} 或者 ${false and false}
|| 或者 or
! 或者 not
三目运算符
?:${3>2?'是':'不是'}
特殊运算符
empty:判断EL表达式是否为空 ${empty sessionScope.user}
".":最常用的,作用相当于执行Bean中的get方法
${sessionScope.user.userName}意思是:在会话中得到名称为user的Bean对象,
通过"."运算符执行getUserName();方法,返回存放在Bean中的用户名属性的值
[]:作用和"."运算符的一样,只不过[]运算符可以执行一些不规则的标识符
${user["score-math"]},这个表达式中有不规则的标识符,是不能用"."访问的
EL表达式使用
实现雇员信息查询
根据编号查询雇员信息,查询之后将信息显示到emp.jsp页面
定义控制器中的代码
public class EmpServlet extends BaseServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String pathInfo = req.getPathInfo();
if ("/add".equals(pathInfo)) {
this.addEmp(req, resp);
}else if ("/remove".equals(pathInfo)) {
this.removeEmp(req, resp);
}else if ("/get".equals(pathInfo)) {
this.getEmpById(req, resp);
}
}
/**
* 根据编号查询雇员信息
* @param req
* @param resp
*/
public void getEmpById(HttpServletRequest req, HttpServletResponse resp) {
//取得业务层实现类对象
IEmpService service = new EmpServiceImpl();
//取得要查询的雇员的编号
Integer empno = Integer.parseInt(req.getParameter("id"));
//查询数据保存到request内置对象
req.setAttribute("emp", service.findEmpById(empno));
//跳转到emp.jsp页面使用EL表达式取得雇员的信息
try {
req.getRequestDispatcher("/emp.jsp").forward(req, resp);
} catch (Exception e) {
e.printStackTrace();
}
}
定义出emp.jsp
<body>
<h1>显示雇员的信息:${emp}</h1>
<table border="1">
<tr>
<td>编号</td><td>姓名</td><td>职位</td><td>薪资</td><td>领导编号</td>
<td>入职日期</td><td>佣金</td><td>部门编号</td>
</tr>
<tr>
<td>${emp.empno}</td><td>${emp.ename}</td><td>${emp.job}</td><td>${emp.sal}</td>
<td>${emp.mgr}</td><td>${emp.hiredate}</td><td>${emp.comm}</td><td>${emp.deptno}</td>
</tr>
</table>
</body>