Struts + Velocity的集成

来源:互联网 发布:阿里云开发框架 编辑:程序博客网 时间:2024/05/01 17:24
 Struts和Velocity集成相当的简单, 有Struts的基础的人, 可以说一看就明白啦.呵.
下面就简单的说下这个过程:
第一步, 在web.xml中加入Velocity servlet
    <servlet>
        <servlet-name>velocity</servlet-name>
        <servlet-class> org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>
       
<!--
        <init-param>
            <param-name>org.apache.velocity.toolbox</param-name>
            <param-value>/WEB-INF/toolbox.xml</param-value>
        </init-param>
 -->       
        <load-on-startup>10</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>velocity</servlet-name>
        <url-pattern>*.vm</url-pattern>
    </servlet-mapping>

这样, 所有的以vm结尾的文件, 都会交到Velocity Servlet处理, 上面注释掉的一部分,  是toolbox 是声明应用程序的可用工具的位置.如果要用这个工具的话, 记得把注释去掉哟.我下面就用了,  但为了记得明白, 就不去注释了.嘿

第二步, 就是把toolbox.xml放到/WEB-INF下喽.
不过说一句, 如果你想在页面中全部使用Velocity的话, 这个是得加的, 反之, 你想在页面中用Struts标签和Velocity的话, 这个工具就可以省略啦
这个toolbox.xml在 Velocity 工具下载中找到, 也可以自己写一个啦.

<?xml version="1.0"?>

<toolbox>
    <tool>
        <key>link</key>
        <scope>request</scope>
        <class>
            org.apache.velocity.tools.struts.StrutsLinkTool
        </class>
    </tool>
   
    <tool>
        <key>msg</key>
        <scope>request</scope>
        <class>
            org.apache.velocity.tools.struts.MessageTool
        </class>
    </tool>
   
    <tool>
        <key>errors</key>
        <scope>request</scope>
        <class>
            org.apache.velocity.tools.struts.ErrorsTool
        </class>
    </tool>
   
    <tool>
        <key>form</key>
        <scope>request</scope>
        <class>
            org.apache.velocity.tools.struts.FormTool
        </class>
    </tool>
   
    <tool>
        <key>tiles</key>
        <scope>request</scope>
        <class>
            org.apache.velocity.tools.struts.TilesTool
        </class>
    </tool>
   
    <tool>
        <key>validator</key>
        <scope>request</scope>
        <class>
            org.apache.velocity.tools.struts.ValidatorTool
        </class>
    </tool>
</toolbox>

第三步, 修改struts-config.xml
其实也就是把View层的JSP换成VM而已.
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
    "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

<struts-config>
    <form-beans>
        <form-bean name="searchForm" type="com.puras.test.velocity.SearchForm" />
    </form-beans>
   
    <global-forwards>
        <forward name="welcome" path="/welcome.do" />
    </global-forwards>
   
    <action-mappings>
        <action path="/welcome"
            type="org.apache.struts.actions.ForwardAction"
            parameter="/pages/search.vm" />
           
        <action path="/search"
            type="com.puras.test.velocity.SearchAction"
            name="searchForm"
            scope="request"
            input="/pages/search.vm">
            <forward name="success" path="/pages/results.vm" />
        </action>
    </action-mappings>
</struts-config>

第四步, 创建Velocity模版
这个Demo中只用到了两个VM文件,
分别如下, 里面用到了Velocity的工具哟
search.vm:
<html>
    <head>
        <title>Search</title>
    </head>
    <body>
        $!errors.msgs()
        <form method="POST"
            action="$link.setAction('/search')">
            <h2>Book Search</h2>
            ISBN:<input type="text" name="sea" />
            <input type="submit" value="Submit" name="submit" />
        </form>
    </body>
</html>

results.vm:
<html>
    <head>
        <title>Results</title>
    </head>
    <body>
        <h1>Book Details</h1>
        <a href="$link.setForward("welcome")">Search again</a>
        <h3>$user.name</h3>
       
        <b>Name:</b> $user.name<br />
        <b>Age:</b> $user.Age<br />
        <b>Sex:</b> $user.sex<br />
    </body>
</html>

文件是不是很简单呢?

只是感觉不用Struts标签的话, 又得熟悉一下Velocity的工具, 麻烦......
原创粉丝点击