1、velocity簡介:略
html
2、須要引入一些相關的包:java
(相關包能夠到官方下載:http://velocity.apache.org/download.cgi)web
velocity-tool是velocity的一個子項目,主要做用:apache
Contains tools and supporting infrastructure for using those tools in a servlet environment as well as general use classes to support use of Velocity as (or in) the view layer of web applications.app
基本應用見接下來的介紹。webapp
3、使用介紹jsp
一、velocity簡單配置
ide
resource.loader = webapp webapp.resource.loader.class = org.apache.velocity.tools.view.servlet.WebappLoader ##模板路徑 webapp.resource.loader.path=/WEB-INF/vm/ ##設置編碼 input.encoding=UTF-8 output.encoding=UTF-8
二、繼承VelocityViewServlet,用於處理請求;測試
VelocityViewServlet實現了HttpServlet接口編碼
package tan.code.velocitytest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.velocity.Template; import org.apache.velocity.context.Context; import org.apache.velocity.exception.ParseErrorException; import org.apache.velocity.exception.ResourceNotFoundException; import org.apache.velocity.tools.view.servlet.VelocityViewServlet; public class VelocityServlet extends VelocityViewServlet { /** * */ private static final long serialVersionUID = 1L; @Override protected Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context ctx) throws ResourceNotFoundException, ParseErrorException, Exception { //寫入數據 ctx.put("name", "tan"); //返回模板;能夠設置編碼,getTemplate("test.vm","UTF-8") return getTemplate("test.vm"); } @Override protected void setContentType(HttpServletRequest request, HttpServletResponse response) { //設置相應內容類型 response.setContentType("text/html;charset=utf-8"); } }
三、velocity-toolbox.xml配置
<?xml version="1.0" encoding="UTF-8"?> <toolbox> <tool> <key>UserTool</key> <scope>application</scope> <class>tan.code.velocitytest.UserTool</class> </tool> </toolbox>
四、web.xml配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>VelocityServlet</servlet-name> <servlet-class>tan.code.velocitytest.VelocityServlet</servlet-class> <init-param> <param-name>org.apache.velocity.toolbox</param-name> <param-value>/WEB-INF/velocity-toolbox.xml</param-value> </init-param> <init-param> <param-name>org.apache.velocity.properties</param-name> <param-value>/WEB-INF/velocity.properties</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>VelocityServlet</servlet-name> <url-pattern>/VelocityServlet</url-pattern> </servlet-mapping> </web-app>
四、模板
##直接調用方法獲取數據 #set($fullname = $UserTool.getFullName()) #set($userlist = $UserTool.getUsers()) <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Test Page</title> </head> <body> <div>Hello!Call me ${name}</div> <div>My full name is ${fullname}</div> ##遍歷list #foreach($user in $userlist) <div>id:${user.id}/name:${user.name} /sex:${user.sex}, ##判斷 #if(${user.sex}=="boy") I am a boy! #else I am a girl! #end</div> #end </body> </html>
五、簡單的UserTool,返回數據
package tan.code.velocitytest; import java.util.ArrayList; import java.util.List; public class UserTool { static public String getFullName() { return "tanweijie"; } static public List<User> getUsers() { List<User> userlist = new ArrayList<User>(); User user1 = new User(); user1.setId(1); user1.setName("Huang"); user1.setSex("boy"); User user2 = new User(); user2.setId(2); user2.setName("Li"); user2.setSex("girl"); userlist.add(user1); userlist.add(user2); return userlist; } }
六、User類:略
七、測試結果: