Struts1和Velocity整合

1.导入struts运行所需的jar文件和Velocity运行所需的jar文件

另外需要commons-collections-3.2.1.jar,commons-lang-2.4.jar,oro-2.0.8.jar

2.在web.xml中配置strus的核心Actionservlet:

<!-- 配置Struts1的配置 -->
  <servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  <init-param>
  <!-- 配置struts配置文件的路径  -->
  <param-name>config</param-name>
  <param-value>/WEB-INF/classes/struts-config.xml</param-value>
  </init-param>
  <load-on-startup>0</load-on-startup>
  </servlet>
 
  <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.do</url-pattern>
  </servlet-mapping>

3.在web.xml中配置Velocity的配置:

<!-- 配置Velocity的配置 -->
  <servlet>
  <servlet-name>Velocity</servlet-name>
  <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServl et</servlet-class>
  <init-param>
  <!-- 这个是定义Velocity工具箱的文件 -->
  <param-name>org.apache.velocity.toolbox</param-name>
  <param-value>/WEB-INF/classes/toolbox.xml</param-value>
  </init-param>
  <!--  
  -->
  <init-param>
  <!-- 这个是Velocity的配置文件,比如配置输出输入字符集等等 -->
  <param-name>org.apache.velocity.properties</param-name>
  <param-value>/WEB-INF/classes/velocity.properties</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>


4.配置toolbox.xml文件:这个文件的作用
1.定义工具
2.声明模板变量,这里声明的变量作用域是全局变量

1.定义工具

<tool> 
<key>person</key>
<class>person.Person</class>
<scope>request</scope>
<parameter name="name" value="ad" /> 
</tool>
*key: 指定在模板中使用此工具时的直接参考变量 
*class: 工具的实现类 
*scope: 工具存在范围有效值request、session、application.三种范围
从名字上可以很容易理解它的意思工具会在不同的范围内实现数据共享 
*parameter向工具传递参数 
这个是自定义的工具,也可以使用Velocity自带的工具。2.声明变量,可以声明具有不同数据类型的模板常量以后可以在模板中通
过表达式直接引用在toolbox.xml中声明的是全局常量。
<data type="number">
<key>app_version</key>
<value>0.9</value>
</data>
<data type="string"> 
<key>app_name</key> 
<value>Jon's Tool Shop</value> 
</data>
<data type="boolean">
<key>debug</key>
<value>true</value> 
</data>

5.配置Velocity.properties文件(在web.xml中可以设置没有这个参数,则不用配置,但这个是Velocity的配置文件,最好自己配下,在本地jar包中具有。)

6.配置struts-config.xml文件,将原来action根据标记返回的页面指定.vm文件。

首先浏览器向服务器发送*.do请求,服务器的struts的核心控制ActionServlet将请求拦截,进行判断,(中间环节就省略不写了)如果有处理的action则将请求交给这个action,action返回标识后如果对应的资源是.vm文件,VelocityViewServlet又会对其进行拦截,因为中间使用的是转发技术,所以他们其实是共享一个request,response的,VelocityViewServlet对访问请求进行处理后(解析),将.vm资源文件返回给浏览器。

可以将数据保存到request,session,application这三个域中,在.vm文件中都可以通过${}取出域中的值,另外我在写Action过程中发现,通过request.getServletContext()获取的application会报错(仅仅处理到这一行会报错),但如果用session.getServletContext()就可以使用。。以上就是struts1+velocity整合。

7. 附上struts-config.xml文件部分信息:
<action path="/getVelocity" 
parameter="mehtod" 
type="cn.go.velocityAction.VelocityStrutsAction" >
<forward name="get" path="/vm/getVelocity.vm" ></forward>
</action>




























































你可能感兴趣的:(Struts1和Velocity整合)