参考:百度文库:http://wenku.baidu.com/link?url=nddg_1OX-vYNVOC9OmkjVa3BrQvd8B29RqtY3En010-wev03ASprxB9APX70xqRqAdrETwsNLZu3WR6q_1bgfHLSq2m1oZ9zqjRDMuhChxG
一、使用velocity的好处:
1.不用像jsp那样编译成servlet(.Class)文件,直接装载后就可以运行了,装载的过程在web.xml里面配置。【后缀名为.vhtml是我们自己的命名方式。也只有在这里配置了哪种类型的文件,那么这种类型的文件才能解析velocity语法】
2.web页面上可以很方便的调用java后台的方法,不管方法是静态的还是非静态的。只需要在toolbox.xml里面把类配置进去就可以咯。【调用的方法 $class.method()】即可。
3.可以使用模版生成静态文档html【特殊情况下才用】
二、使用
1、下载velocity-1.7.zip 、velocity-tools-2.0.zip
2、解压后引用3个jar文件 velocity-1.7.jar、velocity-tools-2.0.jar、velocity-tools-view-2.0.jar还有几个commons-…..jar 开头的jar包
三、配置文件:
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_2_5.xsd" version="2.5"> <servlet> <servlet-name>velocity</servlet-name> <servlet-class>org.apache.velocity.tools.view.VelocityViewServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!—在这里配置的mapping中,说明只有后缀名为vm、jsp、html的文件里面才能使用velocity语法,也可以自定义自己的后缀名,只要在下面mappin中添加即可--> <servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>*.jsp</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> </web-app>
Toolbox.xml 【这个文件和web.xml放在一起,不要改名字,否则不会自动加载】
<?xml version="1.0" encoding="UTF-8"?> <tools> <data type="string" key="version" value="2.0"/> <!—在这里配置 类,在项目启动的时候就自动把类实例化好了,在页面就可以用了,例子:下面 ${test.Method()}--> <toolbox scope="request"> <!-- currentProject util start --> <tool key="test" class="com.gzrj.services.Test"></tool> . . . <!-- currentProject util end --> <!—下面的这些配置都是velocity的配置,可以不用管,也不能更改 --> <!-- velocity util start --> <tool class="org.apache.velocity.tools.view.CookieTool"/> <tool class="org.apache.velocity.tools.view.ImportTool"/> <tool class="org.apache.velocity.tools.view.IncludeTool"/> <tool class="org.apache.velocity.tools.view.LinkTool"/> <tool class="org.apache.velocity.tools.view.PagerTool"/> <tool class="org.apache.velocity.tools.view.ParameterTool"/> <tool class="org.apache.velocity.tools.view.ViewContextTool"/> <tool class="org.apache.velocity.tools.generic.ContextTool"/> <tool class="org.apache.velocity.tools.generic.LoopTool"/> <tool class="org.apache.velocity.tools.generic.RenderTool"/> <!-- velocity util end --> </toolbox> <toolbox scope="session" createSession="false"> <tool class="org.apache.velocity.tools.view.BrowserTool"/> </toolbox> <toolbox scope="application"> <tool class="org.apache.velocity.tools.generic.AlternatorTool"/> <tool class="org.apache.velocity.tools.generic.ClassTool"/> <tool class="org.apache.velocity.tools.generic.ComparisonDateTool"/> <tool class="org.apache.velocity.tools.generic.ConversionTool"/> <tool class="org.apache.velocity.tools.generic.DisplayTool"/> <tool class="org.apache.velocity.tools.generic.EscapeTool"/> <tool class="org.apache.velocity.tools.generic.FieldTool"/> <tool class="org.apache.velocity.tools.generic.MathTool"/> <tool class="org.apache.velocity.tools.generic.NumberTool"/> <tool class="org.apache.velocity.tools.generic.ResourceTool"/> <tool class="org.apache.velocity.tools.generic.SortTool"/> <tool class="org.apache.velocity.tools.generic.XmlTool"/> <tool class="org.apache.velocity.tools.generic.ListTool"/> </toolbox> </tools>
四、页面使用(html)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>添加 -- 修改 -- 界面</title> </head> <body> <br> <form name="form1" id="form1" action="tree/tree!add.action" method="post"> <!-- 两个隐藏表单传值 --> <input type="hidden" name="updateBeforeId" id="updateBeforeId" value=$!request.produKey > <input type="hidden" name="treeid" id="treeid" value=$!request.id > <table border=0> <tr> <td> 序号:</td> <td><input type="text" name="treeproduKey" id="treeproduKey" maxlength="3" onkeydown="keySel(event);" value=$!{request.produKey_3} ><lable id="idname"></lable><font color="red" size="2px">*序列号请输入三位数字</font> </td> </tr> <tr> <td> 名字: </td> <td> <input type="text" name="treename" id="treename" maxlength="50" onkeydown="keySel(event);" value=$!request.name><font color="red" size="2px">*‘输入1-50个字母、数字或者汉字’</font> </td> </tr> <tr> <td> 所属类别: </td> <td> <select name="selectP_id" id="selectP_id" onkeydown="keySel(event);" size="1" style="width:120px;"> <option value="">根数据</option> #foreach($list in $!request.listTree) <!-- 当传过来的值id与数据库样的时候,就selected="selected --> #if($!list.id==$request.produKey_id) <option value="$!list.id" selected="selected">$!list.name</option> #else <option value="$!list.id">$!list.name</option> #end #end </select> </td> </tr> <tr><td> </td></tr> <tr align="center"> <td colspan=2 > #if(!$request.name) <a class="easyui-linkbutton" plain="false" iconCls="icon-save" href="#this" onclick="checkForm();">确认添加</a> #else <a class="easyui-linkbutton" plain="false" iconCls="icon-save" href="#this" onclick="checkForm();">确认更新</a> #end </td> </tr> </table> </form> </body> </html>