JSTL和EL完美结合

引出

对于JSP中的程序控制和业务逻辑,通过嵌入java代码来实现,有种不伦不类的感觉,就像apsx中直接调用后台方法一样,在拨号项目中这样用过。

 

这样做,阅读性差,也不利于调试和维护。况且JSP只是视图,视图的任务就是显示响应,所以在JSP页面中应该尽可能少的、或者完全不出现Java代码。这样对于页面开发人员,也不用掌握过多的java知识。

 

JSTLEL的结合便很好的解决了这些问题。EL来显示数据,JSTL来实现网页逻辑判断和迭代显示等。这样基本可以取代java代码,而且更加简洁了,或者说封装得更好了,因为使用更少的代码完成了相同的工作,从而提高工作效率。

 

JSTL概要

JSTL的全称是JSPStandard Tag Library(JSP标准标签库),它是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的;提供五个标准标记库并支持EL。


 

JSTL标签的配置和使用:

配置:

 将jstl.jar和standard.jar拷贝到WEB-INF/lib下

使用:

 采用taglib指令引入标签库

 <%@ tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>   

 <%@ tagliburi="http://java.sun.com/jsp/jstl/functions"prefix="fn"%>

 <%@ tagliburi="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>


Expression Language概要


 

  • EL表达式不需要引入任何jar包,只要jsp/servlet容器实现了J2EE1.4/Servlet2.4、JSP2.0规范就可以
  • 定义和设置一个变量,如果不设置范围,默认的是page
  • 如果在获取变量值时,不使用作用域访问对象,系统就会按照page—>request—>session—>application的顺序来查找

  

  • 在JSP页面中,经常会进行接收其他页面或者Servlet传递过来的参数;EL为什么提供参数访问对象来获取这些参数值,如:${param:name}

 

  • JSP和EL有一个公共的对象:pageContext,EL可以通过pageContext来访问JSP中其他的隐式对象(request,session),如:${pageContext:request.requestURL}

 

例子

jsp

<%@taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c"%>
<html>
<head>
<title>Inserttitle here</title>
</head>
<body>
<h1>测试JSTL核心库</h1>
 
<li>测试c:set,c:remove</li><br>
<c:setvalue="root" var="userid"/>
userid:${userid}<br>
<c:removevar="userid"/>
userid:${userid}<br>
<p>
<li>条件控制标签:c:if</li><br>
<c:iftest="${v1 lt v2}">
v1小于v2<br>
</c:if>
<p>
 
<li>条件控制标签:c:choose,c:when,c:otherwise</li><br>
<c:choose>
<c:whentest="${v1 gt v2}">
v1大于v2<br>
</c:when>
<c:otherwise>
v1小于v2<br>
</c:otherwise>
</c:choose>
<c:choose>
<c:whentest="${empty userList}">
没有符合条件的数据<br>
</c:when>
<c:otherwise>
存在用户数据<br>
</c:otherwise>
</c:choose>
<p>
 
<li>演示循环控制标签:forEach</li><br>
<h3>采用forEach标签</h3>
<tableborder="1">
<tr>
<td>用户名称</td>
<td>年龄</td>
<td>所属组</td>
</tr>
<c:choose>
<c:whentest="${empty users}">
<tr>
<tdcolspan="3">没有符合条件的数据</td>
</tr>
</c:when>
<c:otherwise>
<c:forEachitems="${users}" var="user">
<tr>
<td>${user.username}</td>
<td>${user.age}</td>
<td>${user.group.name}</td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</table>        
</body>


 

Servlet

protectedvoid doGet(HttpServletRequest request, HttpServletResponse response)
throwsServletException, IOException {
//条件控制标签
request.setAttribute("v1",10);
request.setAttribute("v2",20);
 
request.setAttribute("userList",new ArrayList());
 
//结构
Groupgroup = new Group();
group.setName("动力节点603班");
 
Listusers = new ArrayList();
for(int i=0; i<10; i++) {
Useruser = new User();
user.setUsername("张三_"+ i);
user.setAge(23+ i);
user.setGroup(group);
users.add(user);
}
request.setAttribute("users",users);        
 
request.getRequestDispatcher("/jstl_core.jsp").forward(request,response);
}


 

小结

JSTL也好,EL表达式也罢,实质都是后台的java代码,只是为了“名正言顺”的体现在jsp页面,以标签的形式展现。这倒和aspx控件类似,虽然是个类,却在页面使用标签表示。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值