我的java天地

velocity和struts集成


公司需完成一个portal的快速开发,以下为笔记.所用技术为struts1.2+velocity

先完成一个简单示例(说明相关velocity包到http://velocity.apache.org/download.cgi下载)

一.到Eclipse中new一个web工程,并修改web.xml如下

<welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<
servlet>

     <servlet-name>action</servlet-name>

     <servlet-class>

       org.apache.struts.action.ActionServlet

     </servlet-class>
     <init-param>

       <param-name>debug</param-name>

       <param-value>2</param-value>

     </init-param>

     <init-param>

       <param-name>detail</param-name>

       <param-value>2</param-value>

     </init-param>

     <init-param>

       <param-name>validate</param-name>

       <param-value>true</param-value>

     </init-param>

     <load-on-startup>2</load-on-startup>

  </servlet>

  <servlet-mapping>

     <servlet-name>action</servlet-name>

     <url-pattern>*.do</url-pattern>

  </servlet-mapping>



<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>

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



二.到/WEB-INF目录下放一个toolbox.xml文件

<?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>

 


三.修改WEB-INF目录下面的struts-config.xml文件为:

<?xml version="1.0" encoding="UTF-8"?>

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

 

<struts-config>

<form-beans>

<form-bean name="TestForm" type="org.junesky.form.TestForm"/>

</form-beans>

 

<action-mappings >

<action

name="TestForm"

input="/error.jsp"

scope="request"

path="/test"

validate="false"

type="org.junesky.action.TestAction" >

<forward

name="success"

path="/test.vm" />

</action-mappings>

 

</struts-config>


四.新建处理请求类

public class TestAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest req, HttpServletResponse res) {

TestForm cform = (TestForm)form;

cform.setTest("hello struts and velocity");

//注意这里,将form置入request中,它的keytest

//这个key也就是vm页面中的test对象的引用 ${test.getTest()}

req.setAttribute("test", cform);

return mapping.findForward("success");

}

}

 


五.新建from类

public class TestForm extends ActionForm {

private String test;

public String getTest() {

return test;

}

public void setTest(String test) {

this.test = test;

}

}

 

六.新建页面test.vm

<%@ page pageEncoding="utf-8"%>

<% request.setCharacterEncoding("utf-8");%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>struts velocity 六月天</title>

</head>

<body>


       ${test.getTest()} //
注意这里使用了velocity代码,从test对象中取数据。

</body>

</html>

 


七.检查没有错误后,运行,就会在页面上显示出hello struts and velocity。

关于struts和velocity的配置是很容易理解的,最令初学者头痛的是,velocity是如何取到数据的?我们在单独使用velocity进行开发时,需要初始化,并为其设置想要返回的页面。如下:

程序代码

VelocityEngine ve = new VelocityEngine();

ve.init();

Template t = ve.getTemplate( "hellosite.vm" );

而当与struts一同进行开发时,这一步就可以省去了,并且我们不必在为context中赋值:

程序代码

VelocityContext context = new VelocityContext();

context.put("test", "hello struts and velocity ");

我们只需在Struts的Action层中将值置入request或session中即能达到相同的效果。

posted on 2009-03-28 23:11 tobyxiong 阅读(393) 评论(0)  编辑  收藏 所属分类: java


只有注册用户登录后才能发表评论。


网站导航:
 
<2009年3月>
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿(3)

随笔分类(144)

随笔档案(157)

相册

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜