一:MVC
模型(Model):定义一个Person类,含有姓名以及年龄成员变量。
视图(View):定义一个print_vo.jsp,主要功能是显示Person中的成员变量到页面上去。
控制器(Controller):定义一个PersonServlet.java,该类继承HttpServlet类。主要功能是接收Person类中的信息,并通过将该类设置为request属性传递到print_vo.jsp页面中去。
二:具体代码实现:
Person.java代码如下
package shiyeqiang.vo;
public class Person{
private String name;
private int age;
public void setName(String name){
this.name=name;
}
public void setAge(int age){
this.age=age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
PersonServlet.java代码
package shiyeqiang.servlet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import shiyeqiang.vo.Person;
public class PersonServlet extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse resp) throws
IOException,ServletException
{
Person person=new Person();
person.setName("shiyeqiang");
person.setAge(20);
//通过request传递属性
req.setAttribute("Personinfo",person); //将对象保存在request属性范围中
//设置了属性以后,下面必须通过服务器跳转传递属性内容
req.getRequestDispatcher("print_vo.jsp").forward(req,resp);
}
public void doPost(HttpServletRequest req,HttpServletResponse resp) throws
IOException,ServletException
{
this.doGet(req,resp);
}
}
print_vo.jsp代码:
<%@page contentType="text/html" pageEncoding="GBK"%>
<html>
<body>
<%
request.setCharacterEncoding("GBK");
%>
<h1>person.name=${Personinfo.name}</h1> <!-- 有了属性,就可以通过表达式语言进行输出-->
<h1>person.name=${Personinfo.age}</h1>
</body>
</html>
三:表达式语言
观察上述jsp中的代码:
<h1>person.name=${Personinfo.name}</h1> <!-- 有了属性,就可以通过表达式语言进行输出-->
<h1>person.name=${Personinfo.age}</h1>
发现通过表达式语言可以直接取得对象中成员变量的内容。只要你将对象通过request传递到指定的页面即可。
四:使用表达式语言输出集合
如果现在在PersonServlet.java中给print_vo.jsp中传递的是一个集合属性呢?那么在print_vo.jsp中应该如何显示呢?利用Iterator迭代器将iterator.next()元素在setAttribute(),然后在根据这个属性通过表达式语言循环输出即可!
print_vo.jsp输出集合:
<%@page contentType="text/html" pageEncoding="GBK"%>
<%@page import="java.util.*"%>
<html>
<body>
<%
request.setCharacterEncoding("GBK");
%>
<%
List list=(List)request.getAttribute("listinfo");
Iterator it=list.iterator();
while(it.hasNext()){
pageContext.setAttribute("person",it.next());
%>
<h1>person.name=${person.name}</h1>
<h1>person.name=${person.age}</h1>
<%
}
%>
</body>
</html>