velocity基础教程--3用velocity代替jsp作为程序视图展示

来源:互联网 发布:淘宝自动充值 编辑:程序博客网 时间:2024/04/30 12:23
用veloctiy代替jsp作为程序视图展示 
这里我们需要一个velocity的扩展工具包veloctiy-tools,我们可以在velocity的官方网站中得到。 
在web.xml中配置相关的servlet 
Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  6.     <servlet>  
  7.         <servlet-name>velocity</servlet-name>  
  8.         <servlet-class>  
  9.             org.apache.velocity.tools.view.servlet.VelocityViewServlet  
  10.         </servlet-class>  
  11.         <init-param>  
  12.             <param-name>org.apache.velocity.toolbox</param-name>  
  13.             <param-value>/WEB-INF/toolbox.xml</param-value>  
  14.         </init-param>  
  15.         <init-param>  
  16.             <param-name>org.apache.velocity.properties</param-name>  
  17.             <param-value>/WEB-INF/velocity.properties</param-value>  
  18.         </init-param>  
  19.     </servlet>  
  20.   
  21.     <servlet-mapping>  
  22.         <servlet-name>velocity</servlet-name>  
  23.         <url-pattern>*.vm</url-pattern>  
  24.     </servlet-mapping>  
  25.     <welcome-file-list>  
  26.         <welcome-file>index.jsp</welcome-file>  
  27.     </welcome-file-list>  
  28. </web-app>  

toolbox.xml是实体映射文件后面会有说明 
velocity.properties是配置文件 
这里仅设置了字符编码 
Java代码  收藏代码
  1. input.encoding=utf-8  
  2. output.encoding=utf-8  

这里我们创建了一个默认的vm模板文件 
VM_global_library.vm 默认放置在web根目录下 放置一些全局的数据 

接下来我们创建一个Person类 
Java代码  收藏代码
  1. public class Person {  
  2.     private String name;  
  3.     private int id;  
  4.     private int age;  
  5.     public String getName() {  
  6.         return name;  
  7.     }  
  8.     public void setName(String name) {  
  9.         this.name = name;  
  10.     }  
  11.     public int getId() {  
  12.         return id;  
  13.     }  
  14.     public void setId(int id) {  
  15.         this.id = id;  
  16.     }  
  17.     public int getAge() {  
  18.         return age;  
  19.     }  
  20.     public void setAge(int age) {  
  21.         this.age = age;  
  22.     }  
  23. }  

PersonService实际处理的对象 
Java代码  收藏代码
  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3.   
  4.   
  5. public class PersonService {  
  6.     static private List<Person> PERSONS = new ArrayList<Person>();  
  7.     static{  
  8.           
  9.         for (int i = 0 ; i<10;i++){  
  10.             Person p = new Person();  
  11.             p.setId(i);  
  12.             p.setAge(i+3);  
  13.             p.setName("p_name "+i);  
  14.             PERSONS.add(p);  
  15.         }  
  16.     }  
  17.       
  18.     public List<Person> getPersons(){  
  19.         return PERSONS;  
  20.     }  
  21.     public Person getPerson(int id){  
  22.         for(int i = 0 ; i<PERSONS.size() ; i++){  
  23.             Person p = PERSONS.get(i);  
  24.             if(id==p.getId()){  
  25.                 return p;  
  26.             }  
  27.         }  
  28.         return null;  
  29.     }  
  30.     public int parseInt(String id){  
  31.         return Integer.parseInt(id);  
  32.     }   
  33. }  

现在再看看我们的映射文件应该可以很明确了 
Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <toolbox>  
  3.   <data type="string">  
  4.      <key>personList</key>  
  5.      <value>用户列表</value>  
  6.   </data>  
  7.   
  8.   <tool>  
  9.      <key>personService</key>  
  10.      <scope>request</scope>  
  11.      <request-path>/person/*</request-path>  
  12.      <class>PersonService</class>  
  13.   </tool>  
  14. </toolbox>  

下面看看我们的两个模板 
一个是显示全部 一个是显示单个 
persons 
Java代码  收藏代码
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  2. <HTML>  
  3.  <HEAD>  
  4.   <TITLE> $personList </TITLE>  
  5.  </HEAD>  
  6.  <BODY>  
  7.   <table>  
  8.     <tr>  
  9.         <td>姓名</td>  
  10.         <td>年龄</td>  
  11.     </tr>  
  12.     #foreach($person in ${personService.getPersons()})  
  13.     <tr>  
  14.         <td><a href="person.vm?id=${person.getId()}">${person.getName()}</a></td>  
  15.         <td>${person.getAge()}</td>  
  16.     <tr>  
  17.     #end  
  18.   </table>  
  19.  </BODY>  
  20. </HTML>  

person 
Java代码  收藏代码
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  2. <HTML>  
  3.  <HEAD>  
  4.   <TITLE> $personList </TITLE>  
  5.  </HEAD>  
  6.  <BODY>  
  7.  #set ($paramName = $request.getParameter("id"))  
  8.  $paramName  
  9.   <table>  
  10.     <tr>  
  11.     <td>姓名</td>  
  12.     <td>年龄</td>  
  13.     </tr>  
  14.     #set( $person = ${personService.getPerson($personService.parseInt($paramName))} )  
  15.     <tr>  
  16.         <td>${person.getName()}</td>  
  17.         <td>${person.getAge()}</td>  
  18.     <tr>  
  19.   </table>  
  20.     
  21.  </BODY>  
  22. </HTML>  

0 0