我的java天地

          velocity和struts集成


          公司需完成一個(gè)portal的快速開(kāi)發(fā),以下為筆記.所用技術(shù)為struts1.2+velocity

          先完成一個(gè)簡(jiǎn)單示例(說(shuō)明相關(guān)velocity包到http://velocity.apache.org/download.cgi下載)

          一.到Eclipse中new一個(gè)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目錄下放一個(gè)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>


          四.新建處理請(qǐng)求類

          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

          //這個(gè)key也就是vm頁(yè)面中的test對(duì)象的引用 ${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;

          }

          }

          ?

          六.新建頁(yè)面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對(duì)象中取數(shù)據(jù)。

          </body>

          </html>

          ?


          七.檢查沒(méi)有錯(cuò)誤后,運(yùn)行,就會(huì)在頁(yè)面上顯示出hello struts and velocity。

          關(guān)于struts和velocity的配置是很容易理解的,最令初學(xué)者頭痛的是,velocity是如何取到數(shù)據(jù)的?我們?cè)趩为?dú)使用velocity進(jìn)行開(kāi)發(fā)時(shí),需要初始化,并為其設(shè)置想要返回的頁(yè)面。如下:

          程序代碼

          VelocityEngine ve = new VelocityEngine();

          ve.init();

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

          而當(dāng)與struts一同進(jìn)行開(kāi)發(fā)時(shí),這一步就可以省去了,并且我們不必在為context中賦值:

          程序代碼

          VelocityContext context = new VelocityContext();

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

          我們只需在Struts的Action層中將值置入request或session中即能達(dá)到相同的效果。

          posted on 2009-03-28 23:11 tobyxiong 閱讀(417) 評(píng)論(0)  編輯  收藏 所屬分類: java

          <2009年3月>
          22232425262728
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類(144)

          隨筆檔案(157)

          相冊(cè)

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 石嘴山市| 常德市| 峡江县| 侯马市| 石柱| 景德镇市| 迁西县| 衡阳市| 林周县| 鄄城县| 黔西县| 吉隆县| 方山县| 长泰县| 政和县| 庐江县| 连城县| 公安县| 博爱县| 潍坊市| 阿荣旗| 洪泽县| 基隆市| 沙湾县| 合川市| 苍南县| 龙江县| 康定县| 武川县| 汉寿县| 游戏| 惠东县| 大庆市| 三门峡市| 阿拉善右旗| 长垣县| 南华县| 离岛区| 海安县| 逊克县| 常山县|