<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    First they ignore you
    then they ridicule you
    then they fight you
    then you win
        -- Mahatma Gandhi
    Chinese => English     英文 => 中文             
    隨筆-221  評論-1047  文章-0  trackbacks-0
    很多用戶(其中也包括我)害怕失去那些自己所熟悉的東西,比如框架,開發環境等。在這篇隨筆中,您將看到 如何 在Grails中利用我們所熟知的框架。其中涉及到配置Spring,配置web.xml和配置dwr.xml,而配置Hibernate在 Groovy輕松入門——Grails實戰之遺留數據庫處理篇 》中已經講解過了,所以本篇隨筆不再累述。 我以利用DWR框架為例稍作講解。

    Grails無需任何配置,但不阻止我們配置

    在Grails0.6+中,配置稍有不同,詳見 朝花夕拾——Groovy & Grails

    1,“grails create-app dwrDemo”,創建Grails工程
    2,將dwr.jar(https://dwr.dev.java.net/files/documents/2427/56756/dwr.jar)放到lib目錄中(我使用的是DWR2)
    3,給web-app\WEB-INF\web.template.xml添加如下內容(
    我們可以通過修改web.template.xml來達到配置web.xml的目的 ):
    ???? < servlet >
    ????????
    < servlet-name > dwr-invoker </ servlet-name >
    ????????
    < servlet-class > org.directwebremoting.servlet.DwrServlet </ servlet-class >
    ????????
    < init-param >
    ????????????
    < param-name > debug </ param-name >
    ????????????
    < param-value > true </ param-value >
    ????????
    </ init-param >
    ????
    </ servlet >
    ????
    < servlet-mapping >
    ????????
    < servlet-name > dwr-invoker </ servlet-name >
    ????????
    < url-pattern > /dwr/* </ url-pattern >
    ????
    </ servlet-mapping >
    web-app\WEB-INF\web.template.xml的最終內容如下所示:
    <? xml?version="1.0"?encoding="UTF-8" ?>
    < web-app? version ="2.4"
    ?????????xmlns
    ="http://java.sun.com/xml/ns/j2ee"
    ?????????xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
    ?????????xsi:schemaLocation
    ="http://java.sun.com/xml/ns/j2ee?http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >

    ????
    < context-param >
    ????????
    < param-name > log4jConfigLocation </ param-name >
    ????????
    < param-value > /WEB-INF/classes/log4j.properties </ param-value >
    ????
    </ context-param > ??
    ????
    ????
    < context-param >
    ??????
    < param-name > contextConfigLocation </ param-name >
    ??????
    < param-value > /WEB-INF/applicationContext.xml </ param-value >
    ????
    </ context-param >

    ????
    < context-param >
    ????????
    < param-name > webAppRootKey </ param-name >
    ????????
    < param-value > dwrtest </ param-value >
    ????
    </ context-param >

    ????
    < filter >
    ???????????
    < filter-name > sitemesh </ filter-name >
    ????????
    < filter-class > org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter </ filter-class >
    ????
    </ filter >

    ?????
    < filter >
    ????????
    < filter-name > charEncodingFilter </ filter-name >
    ????????
    < filter-class > org.springframework.web.filter.DelegatingFilterProxy </ filter-class >
    ????????
    < init-param >
    ??????????
    < param-name > targetBeanName </ param-name >
    ??????????
    < param-value > characterEncodingFilter </ param-value >
    ????????
    </ init-param >
    ????????
    < init-param >
    ??????????
    < param-name > targetFilterLifecycle </ param-name >
    ??????????
    < param-value > true </ param-value >
    ????????
    </ init-param >
    ??????
    </ filter >

    ????
    < filter-mapping >
    ????????
    < filter-name > charEncodingFilter </ filter-name >
    ????????
    < url-pattern > /* </ url-pattern >
    ????
    </ filter-mapping >

    ????
    < filter-mapping >
    ????????
    < filter-name > sitemesh </ filter-name >
    ????????
    < url-pattern > /* </ url-pattern >
    ????
    </ filter-mapping >

    ????
    < listener >
    ??????
    < listener-class > org.springframework.web.util.Log4jConfigListener </ listener-class >
    ????
    </ listener > ????
    ????
    ????
    < listener >
    ??????
    < listener-class > org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener </ listener-class >
    ????
    </ listener > ??????

    ????
    <!-- ?Grails?dispatcher?servlet? -->
    ????
    < servlet >
    ????????
    < servlet-name > grails </ servlet-name >
    ????????
    < servlet-class > org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet </ servlet-class >
    ????????
    < load-on-startup > 1 </ load-on-startup >
    ????
    </ servlet >

    ????
    <!-- ?The?Groovy?Server?Pages?servlet? -->
    ??????
    < servlet >
    ????????
    < servlet-name > gsp </ servlet-name >
    ????????
    < servlet-class > org.codehaus.groovy.grails.web.pages.GroovyPagesServlet </ servlet-class >
    ?????
    </ servlet >

    ????
    < servlet-mapping >
    ????????
    < servlet-name > gsp </ servlet-name >
    ????????
    < url-pattern > *.gsp </ url-pattern >
    ????
    </ servlet-mapping >
    ???
    ???
    <!-- DWR servlet? -->
    ???? < servlet >
    ????????
    < servlet-name > dwr-invoker </ servlet-name >
    ????????
    < servlet-class > org.directwebremoting.servlet.DwrServlet </ servlet-class >
    ????????
    < init-param >
    ????????????
    < param-name > debug </ param-name >
    ????????????
    < param-value > true </ param-value >
    ????????
    </ init-param >
    ????
    </ servlet >
    ????
    < servlet-mapping >
    ????????
    < servlet-name > dwr-invoker </ servlet-name >
    ????????
    < url-pattern > /dwr/* </ url-pattern >
    ????
    </ servlet-mapping >

    ????
    < welcome-file-list >
    ?????????
    <!--
    ?????????The?order?of?the?welcome?pages?is?important.??JBoss?deployment?will
    ?????????break?if?index.gsp?is?first?in?the?list.
    ?????????
    -->
    ?????????
    < welcome-file > index.jsp </ welcome-file >
    ?????????
    < welcome-file > index.gsp </ welcome-file >
    ????
    </ welcome-file-list >

    ????
    < jsp-config >
    ????????
    < taglib >
    ????????????
    < taglib-uri > http://java.sun.com/jsp/jstl/core </ taglib-uri >
    ????????????
    < taglib-location > /WEB-INF/tld/c.tld </ taglib-location >
    ????????
    </ taglib >
    ????????
    < taglib >
    ????????????
    < taglib-uri > http://java.sun.com/jsp/jstl/fmt </ taglib-uri >
    ????????????
    < taglib-location > /WEB-INF/tld/fmt.tld </ taglib-location >
    ????????
    </ taglib >
    ????????
    < taglib >
    ????????????
    < taglib-uri > http://www.springframework.org/tags </ taglib-uri >
    ????????????
    < taglib-location > /WEB-INF/tld/spring.tld </ taglib-location >
    ????????
    </ taglib >
    ????????
    < taglib >
    ????????????
    < taglib-uri > http://grails.codehaus.org/tags </ taglib-uri >
    ????????????
    < taglib-location > /WEB-INF/tld/grails.tld </ taglib-location >
    ????????
    </ taglib >
    ????
    </ jsp-config >

    </ web-app >

    4,在src\java下,建立如下目錄結構:
    ????edu
    ????└─ecust
    ????????├─service
    ????????│??│??Service.java
    ????????│??│??
    ????????│??└─impl
    ????????│??????????SomeServiceImpl.java
    ????????│??????????
    ????????└─test
    ????????????????Hello.java

    Hello.java
    package ?edu.ecust.test;

    import ?edu.ecust.service.Service;

    public ? class ?Hello?{
    ????
    private ?Service?service;
    ????
    ????
    public ? void ?setService(Service?service)?{
    ????????
    this .service? = ?service;
    ????}
    ????
    ????
    public ?String?hello(String?name)?{
    ????????
    boolean ?result? = ?service.doSomething(name);
    ????????
    return ?result? ? ? " Welcome? " ? + ?name?:? " Hello? " ? + ?name;
    ????}
    }

    Service.java
    package ?edu.ecust.service;

    public ? interface ?Service?{
    ????
    public ? boolean ?doSomething(String?name);
    }

    SomeServiceImpl.java
    package ?edu.ecust.service.impl;

    import ?edu.ecust.service.Service;

    public ? class ?SomeServiceImpl? implements ?Service?{
    ????
    public ? boolean ?doSomething(String?name)?{
    ????????
    if ?( " Daniel " .equals(name))?{
    ????????????
    return ? true ;
    ????????}?
    else ?{
    ????????????
    return ? false ;
    ????????}
    ????}
    }

    5,修改spring\resources.xml的內容 我們可以通過修改 resources.xml 來達到配置Spring的目的 ):
    <? xml?version="1.0"?encoding="UTF-8" ?>
    < beans? xmlns ="http://www.springframework.org/schema/beans"
    ???????xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
    ???????xsi:schemaLocation
    ="
    http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
    >
    ????
    ????
    < bean? id ="someService" ?class ="edu.ecust.service.impl.SomeServiceImpl" ? />
    ????
    < bean? id ="welcome" ?class ="edu.ecust.test.Hello" >
    ????????
    < property? name ="service" ?ref ="someService" ? />
    ????
    </ bean >
    </ beans >

    6,在web-app\WEB-INF目錄下新建dwr.xml,修改內容如下:
    <? xml?version="1.0"?encoding="UTF-8" ?>
    <! DOCTYPE?dwr?PUBLIC?"-//GetAhead?Limited//DTD?Direct?Web?Remoting?2.0//EN"?"http://www.getahead.ltd.uk/dwr/dwr20.dtd" >
    < dwr >
    ????
    < allow >
    ????????
    < create? creator ="spring" ?javascript ="welcome" >
    ????????????
    < param? name ="beanName" ?value ="welcome" ? />
    ????????
    </ create >
    ????
    </ allow >
    </ dwr >

    7,在web-app\js目錄下新建hello.js,修改內容如下:
    function ?hello()?{
    ???
    var ?name? = ?$('name').value;
    ????welcome.hello(name,?callback);
    }
    ?
    function ?callback(msg)?{
    ??? DWRUtil.setValue('result',?msg);
    }?

    8,“grails create-controller User”創建一個UserController
    9,修改grails-app\controllers\UserController.groovy內容:

    class ?UserController?{
    ????def?hello?
    = ?{}
    }

    10,在grails-app\views\user目錄下新建新建hello.gsp,修改內容如下:
    < html >
    ????
    < head >
    ??????
    < script? type ='text/javascript'? src ='<%=request.getContextPath()% > / dwr / interface / welcome.js' > </ script >
    ??????
    < script? type ='text/javascript'? src ='<%=request.getContextPath()% > / dwr / engine.js' > </ script >
    ??????
    < script? type ='text/javascript'? src ='<%=request.getContextPath()% > / dwr / util.js' > </ script >
    ??????
    < script? type ='text/javascript'? src ='<%=request.getContextPath()% > / js / hello.js' > </ script >
    ????
    </ head >
    ????
    < body >
    ?????
    ????????Name:?
    < input? id ="name" ?type ="text" ?onKeyup ='hello();' />
    ?????????
    ????????
    < div? id ="result" ></ div >
    ????
    </ body >
    </ html >
    11,“grails run-app”,啟動這個Web應用程序
    12,訪問http://localhost:8080/dwrDemo/user/hello,并輸入Daniel,注意觀察效果:

    Name:
    Hello Dan

    Name:
    Welcome Daniel


    附:朝花夕拾——Groovy & Grails
    posted on 2007-06-22 21:44 山風小子 閱讀(4051) 評論(2)  編輯  收藏 所屬分類: Groovy & GrailsAjax
    主站蜘蛛池模板: 亚洲伊人久久大香线蕉综合图片| 亚洲AV成人无码久久WWW| 一区视频免费观看| 最近2019中文字幕免费看最新| 免费一级毛suv好看的国产网站| 国产一区二区三区免费在线观看| 黄色视频在线免费观看| 大地资源在线资源免费观看 | 亚洲网址在线观看你懂的| 中文日本免费高清| 久久亚洲精品成人| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲免费视频在线观看| 99在线观看视频免费| 亚洲免费视频观看| 成人男女网18免费视频| 青娱乐在线免费观看视频| JLZZJLZZ亚洲乱熟无码| 水蜜桃视频在线观看免费播放高清| 久久亚洲精品视频| 在线观看H网址免费入口| 亚洲精品GV天堂无码男同| 国产小视频免费观看| 九九热久久免费视频| 亚洲成av人片天堂网| 又黄又爽又成人免费视频| 亚洲国产成人AV网站| www永久免费视频| 99在线精品免费视频九九视| 伊人婷婷综合缴情亚洲五月| 青青青国产手机频在线免费观看 | 国产精品内射视频免费| 亚洲an天堂an在线观看| 亚洲免费在线视频播放| 亚洲AV无码一区二区三区鸳鸯影院| 亚洲人成色7777在线观看| 亚欧免费视频一区二区三区| 黄色免费在线观看网址| 久久综合亚洲色一区二区三区| 日产乱码一卡二卡三免费| 国产一区二区免费|