Jstl和el

Jstl和el以前对我来说是一个很陌生的词,不知道它们是什么,直到今天才知道它们的用处,以前我们在编jsp程序的时候,有经验的程序员总说我们把java程序写在jsp页面中很难看,而且不是很灵活,复杂度也很高,复用率低,所以尽量不要把java程序写在jsp页面中,那时我真的很凝问,不知道是怎么一回事,难道有什么方法可以解决这样的问题吗?今天得到了答案是可以的,我们可以采用Jstl和el标签就可以实现了,而且和方便很灵活,不会像我们在编jsp程序的时候用java程序总会出很多的错误,特别是空指针异常,但是用了Jstl和el以后,即使错了,也不会出现很严重的错误。比如下面的代码。
一:我们在servlet中保存一些参数,在jsp中取出:
package tmc.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class JstlServlet1 extends HttpServlet {


public JstlServlet1() {
super();
}


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("name","tian");
request.setAttribute("name1", "mao");
request.setAttribute("name2","chun");
request.setAttribute("name3","<font color='red'>北京欢迎您</font>");

List<Dog> list = new ArrayList<Dog>();
list.add(new Dog("夏奥1"));
list.add(new Dog("夏奥2"));
list.add(new Dog("夏奥3"));
list.add(new Dog("夏奥4"));
list.add(new Dog("夏奥5"));
list.add(new Dog("夏奥6"));
list.add(new Dog("夏奥7"));
list.add(new Dog("夏奥8"));
request.setAttribute("list",list);
request.setAttribute("now", new Date());
request.getRequestDispatcher("2.jsp").forward(request,response);
//request.getRequestDispatcher("fmt.jsp").forward(request,response);

}


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {


}

}

我们传统的方式会这样写:
<%
String name1 = request.getAttribute("name");
String name2 = request.getAttribute("name1");
String name3 = request.getAttribute("name2");
String name4 = request.getAttribute("name3");
List<Dog> list = request.getAttribute("list");
out.println(name);
out.println(name1);
out.println(name2);
out.println(name3);
for(Dog dog:list){
out.println(dog.getName());
}
%>
以上的这种写法容易出错,当传进来的数是空的时候,就会出现空指针异常了,而且这样的代码看上去不是那么的好,特别是在jsp页面上,错误很难调试。所以我们可以采用Jstl和el标签很简单的来实现和完成上面的相同功能:
<c:out value="${name}"></c:out>
<c:out value="${name1}"></c:out>
<c:out value="${name2}"></c:out>
<c:out value="${name3}" escapeXml="false"></c:out>

<table border="1" width="200" height="50">
<tr>
<td>编号</td>
<td>姓名</td>
</tr>

<c:forEach items="${list}" var="dog" varStatus="vs">
<c:choose >
<c:when test="${vs.count%2==0}">
<tr style="background-color:red;">
</c:when>
<c:otherwise>
<tr style="background-color:blue;">
</c:otherwise>
</c:choose>
<td>${vs.count}</td>
<td>${dog.name }</td>
</tr>
</c:forEach>
</table>
这样的话就很方便的实现了上面的功能,而且看上去都是像html代码一样,很美观,最主要的话它很方便和灵活,不会出现莫名其妙的错误,这样在以后的java web开发中,我们就可以使用Jstl和el标签用于项目开发中,可以大大提高代码的可利用率和灵活性!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值