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>
&