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

velocity入门一续

阅读更多

四、在Servlets中使用Velocity

Servlet编程

Velocity的一个主要的应用领域就是JAVA Servlet。有很多理由可以说明Velocity适合这个领域,最关键的是Velocity强制视图层(VIEW)和代码分离!

servlet中使用velocity非常的简单。基本上你要做的就是继承VelocityServlet基类和实现handRequest()方法。

Velocity1.1开始,有两个handRequest()方法:

 

public Template handRequest(Context)

这是旧的方法。这个方法要求返回一个有效的Template对象。如果无效或者为空,将会产生异常!同时error()方法会被调用!如果你希望产生异常后做一些其他的事情(比如重定向)可以重写这个方法。强烈建议您使用新的方法!

public Template handRequest(HttpServletRequest,HttpServletResponse,Context)

这是新方法。与旧的方法不同,它可以返回一个null来说明方法已经执行,并且Velocity什么都不做。

下面是一个简单的例子:

public class SampleServlet extends VelocityServlet

{

    public Template handleRequest( HttpServletRequest request,

                                   HttpServletResponse response,

                                   Context context )

    {

 

        String p1 = "Jakarta";

        String p2 = "Velocity";

 

        Vector vec = new Vector();

        vec.addElement( p1 );

        vec.addElement( p2 );

 

        context.put("list", vec );

 

        Template template = null;

 

        try

        {

            template =  getTemplate("sample.vm");

        }

        catch( ResourceNotFoundException rnfe )

        {

          // couldn't find the template

        }

        catch( ParseErrorException pee )

        {

          // syntax error : problem parsing the template

        }

        catch( Exception e )

        {}

 

        return template;

    }

}

 

 

是不是觉得很面熟?除了创建context对象,这已经由VelocityServelt帮你做了,并且VelocityServlet也帮你实现了merge()方法,这和我们开始部分的编码方式基本上是一样的。我们获得context和应用程序数据,并反回一个template

默认传递给handleRequest()方法的context对象包含当前的HttpServletRequestHttpServletResponse对象。他们分别被放置在常量VelocityServlet.REQUESTVelocityServlet.RESPONSE中。你可以在JAVA代码中获得并使用他们:

 

public Template handleRequest(  Context context )

{

    HttpServletRequest request =  (HttpServletRequest) context.get( REQUEST );

    HttpServletResponse response =  (HttpServletResponse) context.get( RESPONSE );

 

   ...

 

 

也可以在template中使用

 

#set($name = $req.getParameter('name') )

 

VelocityServelt允许开发者重写它的一些方法,以更好的使用它。

 

Properties loadConfiguration(ServletConfig)

这个方法允许重写通常的配置机制,增加或修改配置属性。

 

Context createContext(HttpServletRequest,HttpServletResponse)

这个方法允许你创建自己的Context对象。默认的实现只是简单的包含requestresponseVelocityContext对象。为了避免在一些servlet容器中发生内省缓存问题,这个resquestresponse对象被一个简单的包裹器类包装了。你可以正常的使用他们,但是请注意他们并不是javax.servlet.XXX

 

void mergeTemplage(Template,Context,HttpServletResponse)

这个方法允许你产生输出流。VelocityServlet提供了一个有效的Writer类的池,所以只有在特殊的情况下才重写这个方法。

 

protected void error(HttpServletResquest,HttpServletResponse,Exception)

用于处理在处理请求过程中产生的异常。默认的实现将发送一个包含错误信息的简单HTML给用户。可以重写这个方法实现更高级的处理。

部署

当你部署基于VelocityServlet时,请确保你的属性文件被用来配置Velocity运行时刻环境。在Tomcat中,一个不错的方法就是放置你的velocity.properties文件在你的web应用的根目录下,并在web.xml文件中如下配置:

 

<servlet>

  <servlet-name>MyServlet</servlet-name>

  <servlet-class>com.foo.bar.MyServlet</servlet-class>

  <init-param>

      <param-name>properties</param-name>

      <param-value>/velocity.properties</param-value>

  </init-param>

</servlet>

 

 

Velocity在核心运行时刻类中使用了单例模式,为了确保web应用的classloader会管理你的运行时刻实例,把velocity-xx.jar包放在WEB-INF/lib目录下是一个好主意!不要放在CLASSPATH或容器的根路径下。

分享到:
评论

相关推荐

    velocity入门使用教程

    入门部分通过编写一个简单的“Hello, World”程序展示了Velocity的基本使用流程。首先,创建一个模板文件(.vm),在这个文件中使用VTL语法定义输出格式。然后,在Java代码中初始化Velocity引擎,并通过Velocity引擎...

    Velocity入门教程(Spring集成Velocity)

    Velocity入门教程,语法,Velocity布局,Spring框架集成Velocity

    Velocity入门小实例,纯java工程

    本实例旨在帮助初学者快速入门Velocity,理解其基本用法和核心概念。 1. **Velocity简介** Velocity是一个基于Java的模板引擎,它允许开发者在模板中使用特定的语法(Velocity Template Language, VTL)来插入动态...

    Velocity入门教程实例

    Velocity是一个基于Java的模板引擎,它主要的作用是在Web开发中分离Java代码与网页展示层,使得开发团队可以基于MVC架构协作开发。页面设计人员可以专注于页面的外观设计,而Java程序员则负责后端业务逻辑的编码。...

    Velocity 入门

    **Velocity 入门** Velocity 是一个基于 Java 的模板引擎,它是 Apache 软件基金会的顶级项目之一。它被广泛用于 Web 开发中,尤其是在 MVC(Model-View-Controller)架构中,作为视图层的技术,帮助开发者将静态...

    Velocity入门Demo

    Velocity入门Demo,含源代码, 直接放到tomcat可以运行

    Velocity入门例子

    Velocity 的核心理念是提供一种简单但强大的模板语言,使得设计师和开发者可以专注于他们各自的工作,而不需要相互理解对方的代码。 在“Velocity入门例子”中,我们将会探讨以下几个关键知识点: 1. **Velocity...

    Velocity模板入门DEMO

    Velocity模板语言(Velocity Template Language,简称VTL)是Apache软件基金会的Velocity项目中的一部分,它是一种用于生成动态网页内容的模板引擎。Velocity以其简洁、易读的语法,为Java开发者提供了一种高效的...

    velocity 入门文档及应用源码,很适合做自动代码生成

    Velocity是Apache软件基金会的一个开源项目,它是一个基于Java的模板引擎,用于生成动态Web内容。Velocity通过将内容展示与业务逻辑分离,帮助开发者专注于内容的编写,而无需关心HTML或者其他模板语言的复杂性。...

    velocity入门使用

    **Velocity入门指南** Velocity是一款基于Java的模板引擎,它允许开发者将HTML页面设计与业务逻辑分离,使得非程序员(如网页设计师)也能参与到网站的构建中。Velocity在Web开发中常用于生成动态内容,比如电子...

    Velocity入门

    Velocity入门,velocity是基于Java的引擎模版

    velocity入门基础

    ### Velocity 入门基础知识 #### 一、Velocity 概述 **Velocity** 是一款基于 Java 的模板引擎,它被设计用来让开发者能够轻松地利用模板语言来引用 Java 代码所定义的对象。这种机制使得 Velocity 成为了一个强大...

    velocity入门例子

    【Velocity入门例子】是关于Apache Velocity的初学者教程资料,主要涵盖了如何使用Velocity这一模板引擎进行Web开发的基础知识。Velocity是一个开源的Java模板引擎,它允许开发者将HTML、XML或者其他格式的文档与...

    velocity入门篇

    **Velocity入门篇** Velocity是一个基于Java的模板引擎,它允许开发者将HTML页面设计与应用程序逻辑分离,使得开发者和网页设计师可以协同工作,提高开发效率。Velocity由Apache软件基金会开发并维护,是Apache ...

    velocity入门简介

    ### Velocity入门知识点详解 #### 一、Velocity简介 Velocity 是一款基于 Java 的模板引擎,用于将数据模型与表现层分离,使得开发人员可以更高效地构建动态内容的 Web 应用程序。它允许用户通过简单的模板语法来...

    velocity快速入门

    ### Velocity快速入门详解 #### 一、Velocity简介与应用场景 **Velocity** 是一款基于 Java 的模板引擎,它允许用户通过简单的模板语言来访问由 Java 代码定义的对象。这种设计模式使得 Velocity 成为了一个非常...

    velocity-1.5.jar,velocity-1.6.2-dep.jar,velocity-tools-1.3.jar

    Velocity是Apache软件基金会的一个开源项目,它是一款强大的模板引擎,主要用于生成动态Web内容。 Velocity的主要优点在于其简单易用和高度可扩展性,使得开发者能够将业务逻辑与表现层分离,提高代码的可读性和维护...

    velocity新手入门

    文档是velocity基本知识,语法运用,宏定义等,适合新手入门

Global site tag (gtag.js) - Google Analytics