`
bit1129
  • 浏览: 1052563 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[Velocity三]基于Servlet+Velocity的web应用

 
阅读更多

什么是VelocityViewServlet

使用org.apache.velocity.tools.view.VelocityViewServlet可以将Velocity集成到基于Servlet的web应用中,以Servlet+Velocity的方式实现web应用

 

Servlet + Velocity的一般步骤

1.自定义Servlet,实现VelocityViewServlet的handleRequest方法,不要覆写VelocityViewServlet的doGet或者doPost方法,它的默认实现是将请求转发到handleRequest方法中,在实现handleRequest时,需要返回一个vm的模版对象Template

2.在web.xml中,配置自定义的Servet,同时需要指定,Velocity配置文件velocity.properties的位置

3.在指定的目录下,创建velocity.properties配置文件,用于存放Velocity的配置信息,比如vm文件的加载位置

4.定义vm文件,根据需要,在第一步Servlet的handleRequest方法实现中,将vm需要的参数由Context参数对象传入

 

定义Servlet

 

package com.tom.servlets;

import org.apache.velocity.Template;
import org.apache.velocity.context.Context;
import org.apache.velocity.tools.view.VelocityViewServlet;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestVelocityViewServlet extends VelocityViewServlet {

    @Override
    protected Template handleRequest(HttpServletRequest request, HttpServletResponse response, Context ctx) {
        ctx.put("key", "This is value for the key");
        ctx.put("favoriteFruit","All");
        ctx.put("elements", new String[]{"One", "Two", "Three"});
        return getTemplate("abc.vm");
    }
}
 

配置web.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>Velocity</servlet-name>
        <servlet-class>com.tom.servlets.TestVelocityViewServlet</servlet-class>
        <!--定义Velocity配置文件velocity.properties的位置,相对于web应用根的路径-->
        <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>Velocity</servlet-name>
        <url-pattern>/servlets/velocity</url-pattern>
    </servlet-mapping>
</web-app>
 

Velocity配置文件velocity.properties的配置

resource.loader=webapp
webapp.resource.loader.class=org.apache.velocity.tools.view.WebappResourceLoader
#relative to the web context, has the same parent directory with WEB-INF
#that is, vm and WEB-INF are sibling folders
webapp.resource.loader.path=/vm
 

上面指定了vm文件的加载路径,因为是WebappResourceLoader,因此是相对于web应用根开始算起,也就是vm和WEB-INF同级目录

 

 

vm文件定义

<!--abc.vm-->
<html>
    <body>
        <p>$key</p>
        #foreach($elem in $elements)
            <li>$elem</li>
        #end
        <div>
            #include("def.vm")
        </div>
    </body>
</html>

 

<!--def.vm-->
What's your favorite fruit? $favoriteFruit

 

结果

访问velocity这个servlet,得到的结果是:

 

This is value for the key

  • One
  • Two
  • Three

What's your favorite fruit? $favoriteFruit

 

总结

基于Servlet+Velocity的web应用目录结构:

 

|-web

     |- WEB-INF

           |- web.xml 

           |- velocity.properties

     |- vm

           |- abc.vm

           |- def.vm

 

问题

在上面的显示结果中,需要关注的是favoriteFruit没有被替换,可见,Context定义的值没有传递!那么如何做变量传递呢?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 
分享到:
评论

相关推荐

    最简化velocity的web工程

    &lt;servlet-name&gt;velocity&lt;/servlet-name&gt; &lt;servlet-class&gt;org.apache.velocity.tools.view.VelocityViewServlet&lt;/servlet-class&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;velocity&lt;/servlet-name&gt; *....

    悠幽漫舞新闻系统

    本系统开发环境是:Eclipse 2.1 + Tomcat5.5 + jdk1.5.0 + Mysql 4.0.16在win2k pro 和win2k Ad 上运行通过. Velocity News 采用Java模板技术Velocity + Servlet +...以Servlet和web.xml为控制层;以JavaBean做为MODEL层.

    Tomcat 与Java web开发技术详解(孙卫琴)

    主要内容包括:Tomcat和Java Web开发的基础知识、Java Web开发的高级技术、在Java Web应用中运用第三方提供的实用软件(如Struts、Velocity和Log4J)的方法,以及Tomcat的各种高级功能。 书中内容注重理论与实践相...

    Tomcat与Java Web开发技术详解 孙卫琴 源码

    主要内容包括:Tomcat和Java Web开发的基础知识、Java Web开发的高级技术、在Java Web应用中运用第三方提供的实用软件(如Struts、Velocity和Log4J)的方法,以及Tomcat的各种高级功能。 书中内容注重理论与实践相...

    Tomcat与JavaWeb开发技术详解(第二版) 孙卫琴

    主要内容包括:Tomcat和Java Web开发的基础知识、Java Web开发的高级技术、在Java Web应用中运用第三方提供的实用软件(如Struts、Velocity和Log4J)的方法,以及Tomcat的各种高级功能。 书中内容注重理论与实践相...

    Tomcat与Java Web开发技术详解(第2版).part1.rar

    主要内容包括:tomcat和java web开发的基础知识、java web开发的高级技术、在java web应用中运用第三方提供的实用软件(如struts、velocity和log4j)的方法,以及tomcat的各种高级功能。  书中内容注重理论与实践相...

    Tomcat与Java Web开发技术详解 (14-26章源码)孙卫琴

    主要内容包括:Tomcat和Java Web开发的基础知识、Java Web开发的高级技术、在Java Web应用中运用第三方提供的实用软件(如Struts、Velocity和Log4J)的方法,以及Tomcat的各种高级功能。 书中内容注重理论与实践相...

    struts项目学习笔记

    Struts2 是一个非常优秀的MVC框架,基于Model2 设计模型 由传统Struts1和WebWork两个经典框架发展而来 Struts2框架=Struts2+XWork Strust2 核心功能 允许POJO(Plain Old Java Objects,简单javabean对象,没有继承,...

    Java理论与实践:Web层的状态复制

    本文介绍了不管正在构建的是J2EE还是J2SE服务器应用程序,都有可能以某种方式使用Java Servle--可能是直接地通过像JSP技术、Velocity或者WebMacro这样的表示层,也可能通过一个基于servlet的Web服务实现。Servlet ...

    Tomcat与Java Web开发技术详解(第2版).part5.rar

    主要内容包括:tomcat和java web开发的基础知识、java web开发的高级技术、在java web应用中运用第三方提供的实用软件(如struts、velocity和log4j)的方法,以及tomcat的各种高级功能。  书中内容注重理论与实践相...

    Tomcat与Java Web开发技术详解(第2版).part3.rar

    主要内容包括:tomcat和java web开发的基础知识、java web开发的高级技术、在java web应用中运用第三方提供的实用软件(如struts、velocity和log4j)的方法,以及tomcat的各种高级功能。  书中内容注重理论与实践相...

    Tomcat与Java Web开发技术详解(第2版).part4.rar

    主要内容包括:tomcat和java web开发的基础知识、java web开发的高级技术、在java web应用中运用第三方提供的实用软件(如struts、velocity和log4j)的方法,以及tomcat的各种高级功能。  书中内容注重理论与实践相...

    velocity网页程序设计

    Velocity 把 Java 代码和页面分离开来,Web 设计者能够和 Java 程序员根据 MVC 模块(Model-View Controller)并行设计一个 Web 站点,从而使整个网站更加容易维护,是 JSP和PHP更好的替代品 如果想阅读本书:首先...

    Java Web开发视频教程

    Java在客户端的应用有java applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。Java技术对Web领域的发展注入了强大的动力。 Java的Web框架虽然各不相同,但基本也都是...

    JAVA velocity模板引擎使用实例

    在win7下使用intelliJ IDEA建立一基于tomcat的web app项目,命名为todo_web,设置path为/todo,导入velocity相关jar包。只导入velocity-1.7.jar这个包可能会报错,根据提示再导入velocity自带的其他包。 项目结构...

    spring-webmvc5.3.6 jar包.rar

    org.springframework.web.servlet.DispatcherServlet ) spring-webmvc 是 Spring MVC 的一个实现。spriing-webmvc 依赖于 spring-web如果直接使用spring-webmvc,就会隐式地添加 spring-web。不必显示添加 spring-...

    JessMA Java Web 应用开发框架 (v3.2.2-20130815).pdf

    Dao Bean / Spring Bean装配、国际化、文件上传下载和缓存等基础Web应用组件,提供高度灵活的纯 Jsp/Servlet API 编程模型,完美整合 Spring,支持Action Convention“零配置”,能快速开发传统风格和RESTful风格的...

    SSH相关整合的总要资料

    是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Java Servlet和JSP构建Web应用的一项非常有用的技术。其官方网站如下: 是一个开源框架,是为了解决企业应用...

    实战STRUTS 电子书

    主要内容 Struts 1.0和Struts 1.1 Jakarta Scaffold工具包 HTTP、Java Servlet和JSP标签库 基于Servlet的应用程序设计 设计和开发模式 Jakarta Validator和Tile包 Velocity模板 动态的Web程序设计 使用数据库以及...

    Java Web程序设计教程

    10.2.4应用第三方缓存 216 10.3项目实战——借还图书 217 本章小结 224 课后练习 224 第11章spring框架基础 226 11.1spring框架概述 226 11.1.1认识spring框架 226 11.1.2spring框架特点 226 11.1.3spring...

Global site tag (gtag.js) - Google Analytics