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>  
  <dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity</artifactId>
			<version>1.6</version>
			<scope>compile</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity-tools</artifactId>
			<version>1.3</version>
			<scope>compile</scope>
		</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>  
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
	<display-name>Archetype Created Web Application</display-name>

	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<servlet>
		<servlet-name>velocity</servlet-name>
		<servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>
	</servlet>

	<!-- Map *.vm files to Velocity -->
	<servlet-mapping>
		<servlet-name>velocity</servlet-name>
		<url-pattern>*.vm</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.vm<welcome-file>
	</welcome-file-list>
</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>  
<?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>

 

好,到此为止整合完毕。

 

最后添上一个helloworld.vm

Html代码   收藏代码
  1. velocity的helloWorld  
  2. #foreach( $header in $request.HeaderNames )  
  3.   <b>$header:</b> $request.getHeader($header)<br>  
  4. #end  
velocity的helloWorld
#foreach( $header in $request.HeaderNames )
  <b>$header:</b> $request.getHeader($header)<br>
#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>  
<html>
<body>
<form action="HelloWorld">
    <input type="text" name="userName"/>
    <input type="submit" value="提交" />
</form>
</body>
</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>  
	<package name="default" extends="struts-default">
		<action name="HelloWorld" class="com.yajun.helloworld.HelloWorld">
			<result name="SUCCESS">/success.vm</result>
		</action>
	</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. }  
package com.yajun.helloworld;

public class HelloWorld {

    private String message;
    private String userName;

    public HelloWorld(){
    }

    public String execute() {
        setMessage("Hello " + getUserName());
        return "SUCCESS";
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

}

 

和success.vm

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

 

完成了,运行吧。哈哈。

 

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

 

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

 

input.encoding = GBK
output.encoding = GBK

 

这下一个HelloWorld应该OK了。

posted on 2012-02-10 01:02  lexus 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/02/10/2344748.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值