构建一个 web 应用的开发进度

构建一个 web 应用的开发进度

速度往往是用于生成 web 应用中的页面,通常为一个 jsp 的直接替换.某些使用 velocity 来生成 web 页面的优点是:

  • 网站可以由非技术编写和维护简单的网页设计师.
  • 简便的维修脚本是用建议的 mvc web 页面的方法.
  • 访问对象的方法和属性的 web 设计师能够参考方法以及属性的环境.
  • 一致性 velocity 可以用于其它文字生成任务(如发送email)提供一个一致的方式来标记的文本.

此文档提供了一些基本的信息在 web 应用中如何使用 velocity

使用一个框架

velocity 引擎的主要目的是只需生成基于模板的.因此,速度没有任何站点中的相关功能和其自身的要使 web 应用.您需要一个框架来响应 http 请求.处理用户认证,使业务逻辑的调用,和生成响应.有几个强 contenders .

  1. velocity tools / velocityviewservlet 菲律宾则以下载附带的velocity 工具子项目,并使用velocityviewservlet.此 servlet 易于配置和安装.您在您的 web 服务器上创建目录的模板,编辑一个 xml 文件,其中列出了各种"您放置在上下文和工具".下面教程中可以找到有关细节.
  2. 您可能熟悉流行的 velocity tools / velocitystrutsstrutsframework ,最初用于提供更需要为 jsp 的应用功能.使用velocitystrutsjsp 作为页的 velocity 工具可以调整 velocity 模板语言模块.这允许您利用大对数的 struts 结构设计网页时使用的开发进度.
  3. 在列出的第三方框架有很多第三方框架poweredbyvelocitywiki 页面.这些,spring可能是最复杂的.apache 涡轮机具有很多功能和也非常有用.它生成 velocity 作为语言的主网页,这是它并不因为很多原始 velocity 创建者创建它.备选方案是更单击maverick框架,它提供了一个集成的简单控制器架构良好的开发进度.
  4. 构建您自己的第一种方法是将构建您自己的框架.创建一个 dispatcher servlet .从一个文件或数据库中检索模板 ,integate 与您的业务逻辑,并将结果返回给用户.通常您将具有一个启动与一个现有的框架和定制.特别是,您可以通过创建子类 velocityviewservlet 只需添加新功能.

作为一个笔记,您还可能遇到 velocityservlet 引用被包含在 velocity 是一个废弃的 servlet 引擎版本 1.4 .因为 velocityservlet 是不再被维护,我们强烈建议您改用 velocityviewservlet 在 velocity 工具

web 特定问题

有一些特定于 web 应用的开发进度的问题.下面是一个简短的讨论最经常遇到的问题.

资源加载的安装

确保使用的默认速度引擎设置 fileresourceloader .这是伟大的大多数程序都没有被部署到 servlet 引擎.一旦您需要建立 web 应用和维护或一个 war 文件部署它 .fileresourceloader 可以成为糟.因此,我们强烈建议您不要使用 fileresourceloader 为您的 web 应用.

真的,任何其他首选 resourceloader 实现有些.但附带的其他所有 resourceloaders velocity 引擎将除了标准的文件系统中的某个位置要求您存储您的模板(例如,位于类路径中,或者在远程服务器上的数据库中).如果您的工作,然后再好!但是,我们不方便的是,这些大多数人的开发周期.

在 web 应用程序中最简单替换 fileresourceloader 实际上 velocitytools 项目的一个部分.它是webappresourceloader.这是专门设计用于就像 fileresourceloader resourceloader 实现,但它会意识到 servlet 上下文,并允许您可配置资源与 servlet 根目录的相对路径.在本地文件系统上.

因此,如果您想要更改配置的路径(s),您只需要添加下面的代码行以 velocity.properties:

 webapp.resource.loader.path = /web  inf/mytemplates/ 

如果您需要在自己的设置 webappresourceloader ,然后可以使您的属性,像这样:

 resource.loader = webapp 
 webapp.resource.loader.class = org.apache.velocity.tools.view.webappresourceloader 
 webapp.resource.loader.path = /web  inf/mytemplates/ 

您还需要配置 servletcontext 你 velocityengine 之前的 application 属性初始化表达式引擎.这是 webappresourceloader 知道如何查找模板.

 myvelocityengine.setapplicationattribute(" javax.servlet.servletcontext", servletcontext); 

更改对象的状态不!

velocity 提供充当引用对象调用任何方法的能力.当显示到页面中的信息,但是危险的状态或 application 对象被修改时是很有帮助的.

例如,下面的代码安全地调用()列表的方法并显示结果.

有$users.size()当前登录.

unsafe 的操作涉及的财务 web 页的示例.按年计算数据的对象的上下文.该方法calculatenextyear()计算下一年的数据,并将内部计数器:

 2005 的数据 :$  table.data 
$ table.calculatenextyear() 
 2006 数据 :$  table.data 

这种方法的问题是多部分"页中的代码不能重复您可能打算这样做,但很容易忘记这个在剪切和粘贴或编写控制语句(如# if 或#foreach).这将成为一个问题,当您处理 application 或 session 级别状态

"(强烈)推荐实践只能使用 velocity 用于插入到文本中的信息.方法可用于检索信息但是,它通常是坏主意到使用一个方法调用以更改对象的状态,它始终是坏主意更改应用程序的状态.

如果您发现自己无需更改对象状态的(如在前面的例子)请尝试 precalculating 控制器并将其放置在一个列表中的所有可能的值或地图 .application 状态始终应由控制器所做的所有更改.

在相关注意.您应该始终将列表或设置到上下文,而一个 iterator 或枚举.这允许在页面中使用了多次与集合中的任何行为

转义 html/xml 实体

任何用户输入的文本包含特殊的 html 或 xml 实体(如<,>,或&)在 web 页中包含之前需要转义.跨站点脚本.乾,例如, jstl(java 中的标准标记语言找到 java server pages)缺省情况下,速度不转义引用

但是 ,velocity 提供了能够指定一个 referenceinsertioneventhandler alter之前,该引用的值插入到页中.尤其是,您可以配置 escapehtmlreference 处理器中 velocity.properties 转义所有引用(")匹配一个规则表达式.以下示例将转义以"msg"在任何 html 实体引用.(例如,$ msgtext).

 eventhandler.referenceinsertion.class = org.apache.velocity.app.event.implement.escapehtmlreference 
eventhandler.escape.html.match = /msg.*/

注意,有时会需要转义的其它种类的.例如,在@需要转义的字符样式.和 javascript 中的单个单引号''需要转义的字符串.

保护应用程序

由于 web 应用程序是运行在一个中央服务器上,通常有多名用户和保密资源.必须谨慎进行特定的 web 应用程序的安全.大多数标准 web 安全性原则应用到使用 velocity 构建的 web 应用.一些特定的问题(如系统的配置、交叉网站脚本和方法method)在编写此文章.构建安全应用的速度.特别是,您可能要阻止模板设计师,包括"危险的"反射和 execute 方法调用相关方法通过指定要 get/set secureuberspector 属性.

 runtime.introspector.uberspect = org.apache.velocity.util.introspection.secureuberspector 

log 文件

一次点是(在某些情况下)速度,在休假的任何日志相关的配置,在当前目录中创建一个日志文件.当速度"是用于 web 应用程序的当前目录"是当前目录通常是启动 application server如果您在随机放置在您的服务器上的文件"velocity.log"文件很多,检查的开发进度日志配置.这是由于默认使用的阿瓦隆工具包时有错误日志位于类路径中.通常这发生在 velocity 是一个 web 应用程序外部的 web 页面生成(例如,针对关心的).要解决这个问题,删除任何文件标有"阿瓦隆 logkit"从 classpath 或正确配置的日志文件的位置.

教程

构建一个简单的使用教程 velocityviewservlet web app .注意,它会建议您从源中编译velocityviewservlet这实际上不需要用 velocityviewservlet ,但我们建议您在本例中源和再编译示例文件.

以下先决条件包括 java developer ''skit(jdk)和apache ant.

有关信息,请查阅velocity 工具文档.

  1. 下载速度工具项目源文件(您需要在示例的源)从下载页面.
  2. 构建 velocity 工具 jar 和"简单"示例中键入以下命令:
     ant  example.simple 
    
  3. 看一下"示例"目录您将看到一个文件"index.vm".下面是摘自:
     
    
    我一个 velocity 模板. #如果($ xhtml) #设置($ br ="
    ") # else #设置($ br ="
    ") # end $ br $ br 这里我们使用定制的工具 :$ toytool.message $ br $ br 这里我们从 datetool 获取日期 :$ date.medium可以复制任何额外的开发进度文件到此目录下 .inf 中 examples/web 你会看到一个文件"tools.xml".指定的"工具"中的列表被自动包括在上下文.
    <工具>
      
      
      
    <数据键="foo">这是 foo 
    <数据键="bar">这是栏 . 
    <工具箱 scope =""> 
    <工具 key ="toytool"class ="toytool"restrictto ="index  *" /> 
      
    <工具箱 scope ="会话"> 
    <工具 key ="地图"class ="java.util.hashmap"/> 
      
      
    
    最后 toolbox.properties. servlet 的 web.xml 文件指定名称和位置
      
     velocity org.apache.velocity.tools.view.velocityviewservlet  
     velocity *.vm 
    <欢迎文件列表>
    <欢迎文件>index.vm
     
      
    
    • 这个目录复制到您的"在 tomcat 的 webapps"目录下.您也可以将"simple.war",但在整个目录中复制将让您的实验更改.您现在应该能够访问您的一个页面简单 webapp 用此 url .(或类似的东西):
     http://localhost:8080/simple/index.vm 
    
    • 使用添加新的开发进度页进行实验.注意,您可以访问任意 velocity 网页只需更改 url .尝试更改项 tools.xml 或创建您自己的工具.有关详情,请查阅velocity 工具documentation ,"展示"示例应用程序,并在wiki有关的各种各样的工具.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值