Velocity学习3之整合servlet

目录结构





Servlet代码

package com.anders.wen.controller;

import java.util.ArrayList;

import javax.servlet.annotation.WebServlet;
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.tools.view.VelocityViewServlet;

import com.anders.domain.Book;

/**
 * Servlet implementation class VelocityServlet
 */
public class VelocityServlet extends VelocityViewServlet  {
	private static final long serialVersionUID = 1L;

	@Override
	protected Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context ctx) {
		
		ctx.put("username", "anders");
		ctx.put("company", "gcd");
		
		ArrayList<Book> books = new ArrayList<Book>();
		books.add(new Book(1, "java","anders"));
		books.add(new Book(2, "c","anders"));
		books.add(new Book(3, "c++","anders"));
		books.add(new Book(4, "ruby","anders"));
		
		ctx.put("list", books);
		return getTemplate("demo.vm");
		
	}

	@Override
	protected void setContentType(HttpServletRequest request, HttpServletResponse response) {
		 response.setContentType("text/html;charset=utf-8");
	}
}


配置文件velocity.properties

# \u52A0\u8F7D\u65B9\u5F0F\u4E3A webapp 
resource.loader = webapp  
# webapp\u65B9\u5F0F\u52A0\u8F7D\u5904\u7406\u7C7B 
webapp.resource.loader.class = org.apache.velocity.tools.view.servlet.WebappLoader
# \u6A21\u677F\u6587\u4EF6\u76EE\u5F55
webapp.resource.loader.path=/WEB-INF/vm/ 
# \u8F93\u5165\u5B57\u7B26\u7F16\u7801
input.encoding=UTF-8
# \u8F93\u51FA\u5B57\u7B26\u7F16\u7801
output.encoding=UTF-8


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" id="WebApp_ID" version="3.0">
  <display-name>Velocity</display-name>
  
  <servlet>
        <servlet-name>VelocityServlet</servlet-name>
        <servlet-class>com.anders.wen.controller.VelocityServlet</servlet-class>
         <!-- 加载自定义的velocity.propeties  -->
        <init-param> 
            <param-name>org.apache.velocity.properties</param-name>
            <param-value>/WEB-INF/conf/velocity.properties</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>VelocityServlet</servlet-name>
        <url-pattern>/velocityServlet</url-pattern>
    </servlet-mapping>
</web-app>


demo.vm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> velocity </TITLE>
 </HEAD>

##嘿嘿,我是velocity中的注释噢
#*
    嘿嘿,我也是velocity中的注释噢
*#

 <BODY>
    <h1>hello world,这是经过由servlet返回的velocity视图</h1>
    hello ${username},这是你的信息
    <ul>
        <li>用户公司:${company}</li>
    </ul>
    
    <br/>
    
    #foreach($book in $!{list})
        $!{velocityCount}    
        $!{book.id}     
        $!{book.name}     
        $!{book.author}     
        <br>
    #end
    
 </BODY>
</HTML>



运行结果:

















你可能感兴趣的:(Velocity学习3之整合servlet)