本章目标
掌握表达式输出对象的操作;
掌握表达式语言的实际作用,并结合MVC设计模式应用表达式语言;
定义一个VO类 —— Dept.java
package cn.demo.ov; public class Dept { private int deptno; private String dname; private String loc; public int getDeptno() { return deptno; } public void setDeptno(int deptno) { this.deptno = deptno; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } public String getLoc() { return loc; } public void setLoc(String loc) { this.loc = loc; } }
将此对象保存在属性范围中,通过表达式语言输出
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" import="cn.demo.ov.*"%> <html> <head> <title>将此对象保存在属性范围中,通过表达式语言输出</title> </head> <body> <% Dept dept=new Dept();//实例化VO对象 dept.setDeptno(10);//设置deptno属性 dept.setDname("chaoyi");//设置dname属性 dept.setLoc("阅谁问君诵,水落清香浮。");//设置loc属性 request.setAttribute("deptinfo", dept);//设置request属性 %> <h3>部门编号:${deptinfo.deptno}</h3> <h3>部门名称:${deptinfo.dname}</h3> <h3>部门位置:${deptinfo.loc}</h3> </body> </html>
使用MVC传递集合
一个JSP程序中应该只包含三类代码:接收属性、判断、输出,而且在JSP中最好只导入一个java.util包,所以此时要输出一个集合的话,那么还是要依靠Iterator完成,通过Iterator找出集合中的每一个元素,但表达式语言只能操作四种属性范围中的内容,所以就可以将每一个取出的对象(Object)存放在page范围中(因为每一个要输出的内容只在本页有效),之后再通过表达式输出即可
编写Servlet传递request属性
package cn.demo.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.demo.ov.Dept; public class ELServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Dept dept=new Dept();//实例化VO对象 dept.setDeptno(10);//设置deptno属性 dept.setDname("chaoyi");//设置dname属性 dept.setLoc("阅谁问君诵,水落清香浮。");//设置loc属性 request.setAttribute("deptinfo", dept);//设置request属性 request.getRequestDispatcher("demo2.jsp").forward(request, response);//设置服务器跳转传递request属性 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response);//调用doGet() } }
配置web.xml
<servlet> <servlet-name>EServlet</servlet-name> <servlet-class>cn.demo.servlet.ELServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>EServlet</servlet-name> <url-pattern>/031004/ELServlet</url-pattern><!-- 页面的映射路径 --> </servlet-mapping>
接收 request 属性并输出
<%@ page language="java" contentType="text/html" pageEncoding="utf-8" import="cn.demo.ov.*"%> <html> <head> <title>接收 request 属性并输出</title> </head> <body> <h3>部门编号:${deptinfo.deptno}</h3> <h3>部门名称:${deptinfo.dname}</h3> <h3>部门位置:${deptinfo.loc}</h3> </body> </html>
定义Servlet传递集合
package cn.demo.servlet; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.demo.ov.Dept; public class ELListServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<Dept> all=new ArrayList<Dept>();//实例化List接口 Dept dept=null;//定义Dept对象 dept=new Dept();//实例化OV对象 dept.setDeptno(10);//设置deptno属性 dept.setDname("chaoyi");//设置dname属性 dept.setLoc("阅谁问君诵,水落清香浮。");//设置loc属性 all.add(dept);//向集合中增加dept属性 dept=new Dept();//实例化OV对象 dept.setDeptno(11);//设置deptno属性 dept.setDname("chaoyv");//设置dname属性 dept.setLoc("夜半钟声镜雨来。");//设置loc属性 all.add(dept);//向集合中增加dept属性 request.setAttribute("alldept", all);//设置request属性 request.getRequestDispatcher("demo3.jsp").forward(request, response);//设置服务器跳转传递request属性 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response);//调用doGet() } }
配置web.xml
<servlet> <servlet-name>ELListServlet</servlet-name> <servlet-class>cn.demo.servlet.ELListServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ELListServlet</servlet-name> <url-pattern>/031004/ELListServlet</url-pattern><!-- 页面的映射路径 --> </servlet-mapping>
使用表达式输出集合
<%@page import="java.util.Iterator"%> <%@page import="java.util.List"%> <%@ page language="java" contentType="text/html" pageEncoding="utf-8" import="cn.demo.ov.*"%> <html> <head> <title>使用表达式输出集合</title> </head> <body> <% List all=(List)request.getAttribute("alldept");//接收List集合 if(all!=null){//判断是否为空 %> <table border="1" width="30%"> <tr> <td>部门编号</td> <td>部门名称</td> <td>部门位置</td> </tr> <% Iterator iter=all.iterator();//实例化Iterator对象 while(iter.hasNext()){//迭代输出 pageContext.setAttribute("dept", iter.next());//设置page属性 %> <tr> <td>${dept.deptno}</td> <td>${dept.dname}</td> <td>${dept.loc}</td> </tr> <% } %> </table> <% } %> </body> </html>
小结
表达式语言可以方便的进行对象属性的输出;
通过表达式语言输出集合时,需要使用page属性范围完成;
表达式结合MVC设计模式将发挥更大的作用。