一、Jsp脚本问题
代码结构混乱
脚本与HTML混合,容易出错
代码不易于维护
二、EL表达式
EL表达式语法:
${EL表达式} ,作用是用于输出,完全可以替代
<% = %>
并且可以处理null对象。在各个作用域中查询对象,优点是使页面整洁,可读性高,有利于后期的页面维护。EL 表达式会自动在各个作用域中查找数据,
查找的顺序为: page->request->session-application,
EL表达式在访问时也可以指明只访问某个作用域的数据,${requestScope[student]},作用范围如下:
EL操作符“.”获取对象的属性.如下
${stu.studentNo} 输出对象的某个属性值,直接给属性名就行,它会自动去调用封装属性的get方法.
操作符“[]”可以取对象的属性及集合中的某个对象
${list[i]}
在EL表达式中可以用算术符进行运算
三、JSTL标准标签库
使用了EL表达式可以简化页面代码结构,那么为什么还要使用JSTL呢?因为EL不能实现判断,也实现了循环这样操作。
STL(JavaServerPages Standard Tag Library) ,JSP标准标签库,它实现JSP页面中的逻辑控制。
使用步骤:
1.获取jstl.jar和standard.jar文件。导入到Eclipse工具中,如果是Myeclipse则不需要导入,因为已经导入了。
2.在页面上导入jstl
<%@ taglib url= "http://java.sun.com/jsp/jstl/core" prefix="c" %>
注意:prefix表示前缀,可以随意命名,建议用c来表示。
3.在jsp页面上使用jstl来处理业务逻辑
循环案例
<c:forEach items="${students }" var="stu">
<tr>
<td>${stu.studentNo }</td><td>${stu.name }</td><td>${stu.sex }</td>
<td>${stu.age }</td><td>${stu.phone }</td><td>${stu.address }</td>
<td>${stu.email }</td><td><fmt:formatDate value="${stu.birthday }" pattern="yyyy年MM月dd日"/></td><td>${stu.gradeId }</td>
<td>
<a href="student?tag=edit&id=${stu.studentNo }">编 辑</a> |
<a href="student?tag=del&id=${stu.studentNo }" onclick='return confirm(\"你确定要删除吗?\")'>删 除</a>
</td>
</tr>
</c:forEach>
逻辑案例:
<p>
性别:
<c:choose>
<c:when test="${student.sex == '男' }">
<input type='radio' name='sex' value='男' checked> 男
<input type='radio' name='sex' value='女' > 女
</c:when>
<c:otherwise>
<input type='radio' name='sex' value='男' > 男
<input type='radio' name='sex' value='女' checked> 女
</c:otherwise>
</c:choose>
四、外键对象处理
数据表有主外外键关系时,一个表要引用另一个表的主键值,子表所存储的是主表的主键值,在页面上如果显示主键,则表达不直观。处理的办法是,采用存储外键对象的方式来实现。