在MVC中应用表达式语言

本章目标
掌握表达式输出对象的操作;
掌握表达式语言的实际作用,并结合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设计模式将发挥更大的作用。

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值