您的位置:首页 > 其它

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

2012-05-28 14:28 369 查看

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

速度往往是用于生成 web 应用中的页面,通常为一个 jsp 的直接替换.某些使用 velocity 来生成 web 页面的优点是:网站可以由非技术编写和维护简单的网页设计师.简便的维修脚本是用建议的 mvc web 页面的方法.访问对象的方法和属性的 web 设计师能够参考方法以及属性的环境.一致性 velocity 可以用于其它文字生成任务(如发送email)提供一个一致的方式来标记的文本.此文档提供了一些基本的信息在 web 应用中如何使用 velocity

使用一个框架

velocity 引擎的主要目的是只需生成基于模板的.因此,速度没有任何站点中的相关功能和其自身的要使 web 应用.您需要一个框架来响应 http 请求.处理用户认证,使业务逻辑的调用,和生成响应.有几个强 contenders .velocity tools / velocityviewservlet 菲律宾则以下载附带的velocity 工具子项目,并使用velocityviewservlet.此servlet 易于配置和安装.您在您的 web 服务器上创建目录的模板,编辑一个 xml 文件,其中列出了各种"您放置在上下文和工具".下面教程中可以找到有关细节.您可能熟悉流行的 velocity tools / velocitystrutsstrutsframework ,最初用于提供更需要为 jsp 的应用功能.使用velocitystrutsjsp作为页的 velocity 工具可以调整 velocity 模板语言模块.这允许您利用大对数的 struts 结构设计网页时使用的开发进度.在列出的第三方框架有很多第三方框架poweredbyvelocitywiki 页面.这些,spring可能是最复杂的.apache涡轮机具有很多功能和也非常有用.它生成 velocity 作为语言的主网页,这是它并不因为很多原始 velocity 创建者创建它.备选方案是更单击maverick框架,它提供了一个集成的简单控制器架构良好的开发进度.构建您自己的第一种方法是将构建您自己的框架.创建一个 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 工具文档.下载速度工具项目源文件(您需要在示例的源)从下载页面.构建 velocity 工具 jar 和"简单"示例中键入以下命令:
ant  example.simple
看一下"示例"目录您将看到一个文件"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.velocityviewservletvelocity *.vm<欢迎文件列表><欢迎文件>index.vm
这个目录复制到您的"在 tomcat 的 webapps"目录下.您也可以将"simple.war",但在整个目录中复制将让您的实验更改.您现在应该能够访问您的一个页面简单 webapp 用此 url .(或类似的东西):
http://localhost:8080/simple/index.vm
使用添加新的开发进度页进行实验.注意,您可以访问任意 velocity 网页只需更改 url .尝试更改项 tools.xml 或创建您自己的工具.有关详情,请查阅velocity 工具documentation ,"展示"示例应用程序,并在wiki有关的各种各样的工具.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: