文章目录
ER表达式
概念:是工作在视图组件的技术,完成对内置对象的属性的获取并进行处理,把处理结果发给浏览器进行显示。
对环境的要求:jsp1.2, j2ee2.0, tomcat4.0
基本语法: ${表达式}
如:
- eldemo01.jsp
<%@ page isELIgnored="false"%>
<%
pageContext.setAttribute("name","www.zte.cn");
%>
<%=pageContext.getAttribute("name")%>
<br>
#####${name}
-
eldemo01.jsp
<%@ page isELIgnored="false"%> <% pageContext.setAttribute("name","www.zte.cn"); %> <%=pageContext.getAttribute("name123")%> <br> #####${name123}
-
eldemo01.jsp
<%@ page isELIgnored="true"%> <% pageContext.setAttribute("name","www.zte.cn"); %> <%=pageContext.getAttribute("name123")%> <br> #####${name123}
1. EL表达式的搜索顺序和隐式对象从隐式对象中获得数据
-
eldmo02.jsp
<% pageContext.setAttribute("name","www.zte.cn") ; request.setAttribute("name","tom") ; %> <h1>****${sessionScope.name}</h1>
2. EL表达式的处理
-
eldemo00.jsp
<% pageContext.setAttribute("a","30"); request.setAttribute("b",5); %> <h1><%=request.getAttribute("c")%></h1><br> <h1>---c=${c}----</h1><br> <h1>---a*b+c+6=${a*b+c+6}---</h1><br> <h1>---a>b=${a>b}---</h1><br> <h1>----3+5*2=${3+5*2}-----</h1>
3. EL表达式在MVC中的应用
3.1 EL表达式处理字符串
自动转换成整型
-
ELServletDemo01.java
package cn.zte.pxb.servlet.el ; import java.io.* ; import javax.servlet.* ; import javax.servlet.http.* ; public class ELServletDemo01 extends HttpServlet { public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException { req.setAttribute("name","www.zte.cn") ; // 服务器端跳转 req.getRequestDispatcher("eldemo03.jsp").forward(req,resp) ; } public void doPost(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException { this.doGet(req,resp) ; } } /* <servlet> <servlet-name>el01</servlet-name> <servlet-class>cn.zte.pxb.servlet.el.ELServletDemo01</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>el01</servlet-name> <url-pattern>/eldemo/el_1</url-pattern> </servlet-mapping> */
-
eldemo03.jsp
<h1>${name}</h1>
3.2 EL表达式处理Bean对象的属性–导航
-
Simple.java
package cn.cx.servlet.el ; public class Simple { private String name; public Simple() {} public void setName(String name) { this.name = name ; } public String getName() { return this.name ; } }
-
ELServletDemo02.java
package cn.cx.servlet.el ; import java.io.* ; import javax.servlet.* ; import javax.servlet.http.* ; public class ELServletDemo02 extends HttpServlet { public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException { Simple s=null; //System.out.println(s); s = new Simple() ; s.setName("lisa") ; req.setAttribute("sim",s) ; // 服务器端跳转 req.getRequestDispatcher("eldemo04.jsp").forward(req,resp) ; } public void doPost(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException { this.doGet(req,resp) ; } }; /* <servlet> <servlet-name>el02</servlet-name> <servlet-class>cn.cx.servlet.el.ELServletDemo02</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>el02</servlet-name> <url-pattern>/eldemo/el_2</url-pattern> </servlet-mapping> */
-
eldemo04.jsp
<h1>***${sim.name} //其实sim对象的方法,而不是属性
4. el表达式深度导航
-
CompanyBean.java
package cn.cx.servlet.el ; public class CompanyBean { private String companyName ; private String business ; public CompanyBean() {} public void setCompanyName(String companyName) { this.companyName = companyName ; } public void setBusiness(String business) { this.business = business ; } public String getCompanyName() { return this.companyName ; } public String getBusiness() { return this.business ; } };
-
NameBean.java
package cn.cx.servlet.el ; public class NameBean { private String firstName ; private String lastName ; public NameBean() {} public void setFirstName(String firstName) { this.firstName = firstName ; } public void setLastName(String lastName) { this.lastName = lastName ; } public String getFirstName() { return this.firstName ; } public String getLastName() { return this.lastName ; } };
-
EmployeeBean.java
package cn.cx.servlet.el ; public class EmployeeBean { private NameBean name;//多个公司可以雇佣一个人员 private CompanyBean company;//多个员工可以被一个公司雇佣 public EmployeeBean() {} public void setName(NameBean name) { this.name = name ; } public void setCompany(CompanyBean company) { this.company = company ; } public NameBean getName() { return this.name ; } public CompanyBean getCompany() { return this.company ; } }
-
ELServletDemo03.java
package cn.cx.servlet.el ; import java.io.* ; import javax.servlet.* ; import javax.servlet.http.* ; public class ELServletDemo03 extends HttpServlet { public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException { NameBean nb = new NameBean() ; nb.setFirstName("Li") ; nb.setLastName("sa") ; CompanyBean cb = new CompanyBean() ; cb.setCompanyName("www.cx.cn") ; cb.setBusiness("JAVA EE、JAVA SE、JAVA ME") ; EmployeeBean eb = new EmployeeBean() ; eb.setName(nb) ; eb.setCompany(cb) ; // 保存属性 req.setAttribute("emp",eb) ; //request.getAttribute("emp").getName().getFirstName(); // 服务器端跳转 req.getRequestDispatcher("eldemo05.jsp").forward(req,resp) ; } public void doPost(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException { this.doGet(req,resp) ; } }; /* <servlet> <servlet-name>el03</servlet-name> <servlet-class>cn.cx.servlet.el.ELServletDemo03</servlet-class> </servlet> <servlet-mapping> <servlet-name>el03</servlet-name> <url-pattern>/eldemo/el_3</url-pattern> </servlet-mapping> */
-
eldemo05.jsp
<h1>FirstName:${emp.name.firstName}</h1><br> <h1>BusinessName:${emp.company.companyName}</h1> <h1>CompanyBusiness:${emp.company.business}</h1>
5. el表达式在集合中的应用
-
ELServletDemo04.java
package cn.cx.servlet.el ; import java.io.* ; import java.util.* ; import javax.servlet.* ; import javax.servlet.http.* ; public class ELServletDemo04 extends HttpServlet { public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException { List<Simple> l = new ArrayList<Simple>() ; Simple s = null ; s = new Simple() ; s.setName("zhangsan") ; l.add(s) ; s = new Simple() ; s.setName("lisi") ; l.add(s) ; s = new Simple() ; s.setName("wangwu") ; l.add(s) ; req.setAttribute("all",l) ; // 服务器端跳转 req.getRequestDispatcher("eldemo06.jsp").forward(req,resp) ; } public void doPost(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException { this.doGet(req,resp) ; } }; /* <servlet> <servlet-name>el02</servlet-name> <servlet-class>cn.cx.servlet.el.ELServletDemo04</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>el02</servlet-name> <url-pattern>/eldemo/el_4</url-pattern> </servlet-mapping> */
-
eldemo06.jsp
<%@page import="java.util.*"%> <%-- 要使用Iterator进行输出 --%> <h1>${all}</h1><br> <h1>${all[2].name}</h1><br> <% // List要使用Iterator输出 List l = (List)request.getAttribute("all") ; Iterator iter = l.iterator() ; while(iter.hasNext()) { // 将取出的对象放在page范围之中 pageContext.setAttribute("sim",iter.next()) ; //simple s=(simple)(iter.next()); //<%=s.getName()%> <h1>${sim.name}</h1> <% } %>