jsp-----el表达式

EL的主要功能---为了计算和输出存储在标志位置的JAVA对象的值(jsp2.0)
1。精确的访问存储对象
2。Bean属性的简略记法
3。空值取代错误消息

之前输出保存在属性范围之内的值时使用一下代码
<%
   pageContext.setAttribute("name","www.mldn.cn");
%>
<%
   if(pageContext.getAttribute("name")!= null){
%>
   <%=pageContext.getAttribute("name")%>
<%}%>
但是可以发现,使用此形式,代码较多,如果使用EL改进
<%
   pageContext.setAttribute("name","www.mldn.cn");
%>
${name}----好处,不用加判断了

<%
   pageContext.setAttribute("name","www.mldn.cn");
   request.setAttribute("name","hahaha");
%>
${name} ---这个时候使用小范围的

EL的主要功能在于MVC设计模式之中
也就是在servlet中设置了属性,那么在jsp上就可以用el了

在传递对象时候很有用

Simple s = new Simple();
s.setName("liXinghua");
request.setAttribute("haha",s);
request.getRequestDispatcher("a.jsp").forward(request,resp);
在a.jsp中
如果不用el,那么先导入<%@page import="cn.zwz.servlet.el.*" %>文件所在的包
<%
  if(request.getAttribute("haha") != null){
     Simple s = (String)request.getAttribute("haha") ;
%>
<%=s.getName()%>
<%}%>
用el表达式
<h1>${haha.name}</h1>  
表达式语言的调用
访问bean的属性
第一种点号记法: ${beanName.beanProperty}
第二种数组记法:${beanName["beanProerty"]}
第二种方法很少使用

如果类中有类,只要他们有getXXX()方法,符合Bean规范,那么就可以使用
${beanName.beanProperty.beanProperty}来搞定

如果是List.add(User);怎么利用el表达式

<%@page import="java.util.*"%>
<%
   List l = (List)request.getAttribute("all"); //因为是List,他不是javabean,所以只能使用这种方式拿出来遍历
   for(Iterator it = l.iterator();it.hasNext();){
        //将取出的对象放到page范围之中
        pageContext.setAttribute("user",it.next());  //在这里为了配合el用上了哈
%>
     <h1>${user.name}</h1>
<%}%>


我们也可以指定在什么范围内取值:
pageScope,requestScope,sessionScope,applicationScope

如:${pageScope.user.name} ;//这种东西一般是如果在不同作用范围中有同名的属性时候采用

你可能感兴趣的:(设计模式,jsp,bean,mvc,servlet)