• struts2 的 velocity整合


    感觉现在的JAVA框架越来越多,纷繁复杂。想彻底研究一种框架,了解下其中的一些通用的东西,于是选择了struts2。

    看了很多struts2的文档,发现很多都是在讲struts2与JSP使用很多标签库,我不喜欢用那么多的标签,于是研究了下如何使用velocity与 struts2整合。

    主要有四个步骤:

    1,添加pom依赖 (这里我采用 maven管理依赖,相当方便)

    Xml代码  收藏代码
    1. <dependency>  
    2.     <groupId>org.apache.velocity</groupId>  
    3.     <artifactId>velocity</artifactId>  
    4.     <version>1.6</version>  
    5.     <scope>compile</scope>  
    6. </dependency>  
    7. <dependency>  
    8.     <groupId>org.apache.velocity</groupId>  
    9.     <artifactId>velocity-tools</artifactId>  
    10.     <version>1.3</version>  
    11.     <scope>compile</scope>  
    12. </dependency>  

    2,修改web.xml 

    Xml代码  收藏代码
    1. <!DOCTYPE web-app PUBLIC  
    2.  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
    3.  "http://java.sun.com/dtd/web-app_2_3.dtd" >  
    4.   
    5. <web-app>  
    6.     <display-name>Archetype Created Web Application</display-name>  
    7.   
    8.     <filter>  
    9.         <filter-name>struts2</filter-name>  
    10.         <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
    11.     </filter>  
    12.     <filter-mapping>  
    13.         <filter-name>struts2</filter-name>  
    14.         <url-pattern>/*</url-pattern>  
    15.     </filter-mapping>  
    16.   
    17.     <servlet>  
    18.         <servlet-name>velocity</servlet-name>  
    19.         <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>  
    20.     </servlet>  
    21.   
    22.     <!-- Map *.vm files to Velocity -->  
    23.     <servlet-mapping>  
    24.         <servlet-name>velocity</servlet-name>  
    25.         <url-pattern>*.vm</url-pattern>  
    26.     </servlet-mapping>  
    27.   
    28.     <welcome-file-list>  
    29.         <welcome-file>index.vm<welcome-file>  
    30.     </welcome-file-list>  
    31. </web-app>  

    3,增加/WEB-INF/velocity.properties

    这里根据需要加velocity参数,我暂时啥参数也不加,整个空文件,用默认的总可以吧,需要的时候再加好了。

    4,增加/EB-INF/toolbox.xml

    Xml代码  收藏代码
    1. <?xml version="1.0"?>  
    2.   
    3. <toolbox>  
    4.     <tool>  
    5.         <key>link</key>  
    6.         <scope>request</scope>  
    7.         <class>org.apache.velocity.tools.struts.StrutsLinkTool</class>  
    8.     </tool>  
    9.     <tool>  
    10.         <key>msg</key>  
    11.         <scope>request</scope>  
    12.         <class>org.apache.velocity.tools.struts.MessageTool</class>  
    13.     </tool>  
    14.     <tool>  
    15.         <key>errors</key>  
    16.         <scope>request</scope>  
    17.         <class>org.apache.velocity.tools.struts.ErrorsTool</class>  
    18.     </tool>  
    19.     <tool>  
    20.         <key>form</key>  
    21.         <scope>request</scope>  
    22.         <class>org.apache.velocity.tools.struts.FormTool</class>  
    23.     </tool>  
    24.     <tool>  
    25.         <key>tiles</key>  
    26.         <scope>request</scope>  
    27.         <class>org.apache.velocity.tools.struts.TilesTool</class>  
    28.     </tool>  
    29.     <tool>  
    30.         <key>validator</key>  
    31.         <scope>request</scope>  
    32.         <class>org.apache.velocity.tools.struts.ValidatorTool</class>  
    33.     </tool>  
    34. </toolbox>  

    好,到此为止整合完毕。

    最后添上一个helloworld.vm

    Html代码  收藏代码
    1. velocity的helloWorld  
    2. #foreach( $header in $request.HeaderNames )  
    3.   <b>$header:</b> $request.getHeader($header)<br>  
    4. #end  

    试一下吧,会打出浏览器的一些请求的head出来。原来不是helloworld,呵呵。但是还是小有成就感,至少出来点东西了吗。

    ====================邪恶的分割线==================

    接下来我们来真正的helloWorld。

    1,建立index.vm

    Html代码  收藏代码
    1. <html>  
    2. <body>  
    3. <form action="HelloWorld">  
    4.     <input type="text" name="userName"/>  
    5.     <input type="submit" value="提交" />  
    6. </form>  
    7. </body>  
    8. </html>  

     2,修改struts.xml

    加上如下配置

    Html代码  收藏代码
    1. <package name="default" extends="struts-default">  
    2.     <action name="HelloWorld" class="com.yajun.helloworld.HelloWorld">  
    3.         <result name="SUCCESS">/success.vm</result>  
    4.     </action>  
    5. </package>  

     3,如上面的配置所示,还需要加入

    com.yajun.helloworld.HelloWorld 这个类:

    Java代码  收藏代码
    1. package com.yajun.helloworld;  
    2.   
    3. public class HelloWorld {  
    4.   
    5.     private String message;  
    6.     private String userName;  
    7.   
    8.     public HelloWorld(){  
    9.     }  
    10.   
    11.     public String execute() {  
    12.         setMessage("Hello " + getUserName());  
    13.         return "SUCCESS";  
    14.     }  
    15.   
    16.     public String getMessage() {  
    17.         return message;  
    18.     }  
    19.   
    20.     public void setMessage(String message) {  
    21.         this.message = message;  
    22.     }  
    23.   
    24.     public String getUserName() {  
    25.         return userName;  
    26.     }  
    27.   
    28.     public void setUserName(String userName) {  
    29.         this.userName = userName;  
    30.     }  
    31.   
    32. }  

    和success.vm

    Html代码  收藏代码
    1. <html>  
    2. <head>  
    3. <title>Hello World</title>  
    4. </head>  
    5. <body>  
    6. <h1>$message</h1>  
    7. </body>  
    8. </html>  

    完成了,运行吧。哈哈。

    感觉比标签清爽许多,而且velocity可以直接从 struts2 的 valueStack中 取得像要的值,还是挺不错的。

    但是,有突然发现,中文显示有问题呀。于是想到了velocity.properties那个文件还需要配置个东西:

    input.encoding = GBK
    output.encoding = GBK

    这下一个HelloWorld应该OK了。

  • 相关阅读:
    WebRTC视频采集中的约束有哪些和具体的使用方法
    解决WebRTC中不同的浏览器之间适配的问题
    WebRTC如何获取音频视频设备
    用C#调用外部DLL
    null值与非null只比较大小时,只会返回false
    jsonp实现js跨域请求
    同一域名的ASP.NET网站实现Session共享
    machinekey相关信息
    从bbs.3dmgame.com与qq的登录解析oauth2.0协议
    asp.net使用wsdl文件调用接口,以及调用SSL接口报错“根据验证过程 远程证书无效”的处理
  • 原文地址:https://www.cnblogs.com/lexus/p/2344748.html
Copyright © 2020-2023  润新知