posts - 36, comments - 30, trackbacks - 0, articles - 3

               摘要: 要實(shí)現(xiàn)向編輯器增加活動(dòng),我們應(yīng)該在面板上選一種活動(dòng)(開始活動(dòng),普通活動(dòng),結(jié)束活動(dòng)),拖到編輯器中。為此我們必須在面板和編輯器中分別加監(jiān)聽。修改WorkflowProcessEditor類 在編輯器的GraphicalViewer加監(jiān)聽 protectedvoid initializeGraphicalViewer() {     ...  閱讀全文

          posted @ 2008-01-04 08:49 笑看人生 閱讀(1409) | 評(píng)論 (0)編輯 收藏

               摘要:     為了實(shí)現(xiàn)流程編輯器,光有我們建立的模型,控制器和視圖還不夠,我們還必須新建一個(gè)編輯器類,為此,我們要新建一個(gè)插件項(xiàng)目,我們新建的插件項(xiàng)目com.example.workflow結(jié)構(gòu)如下:     為了實(shí)現(xiàn)一個(gè)編輯器,我們必須擴(kuò)展org.eclipse.ui.editors這個(gè)擴(kuò)展點(diǎn),這個(gè)可...  閱讀全文

          posted @ 2008-01-03 08:54 笑看人生 閱讀(2873) | 評(píng)論 (3)編輯 收藏

               摘要:     這一節(jié),我們講控制器的設(shè)計(jì),在gef框架中,控制器作為連接模型和視圖的橋梁,它主要根據(jù)用戶的操作來修改模型,并且刷新視圖。在前面我們定義了流程模型(WorkflowProcess),活動(dòng)模型(AbstractActivity),轉(zhuǎn)移模型(Transition),在這里我們分別定義相應(yīng)的控制器(EditPart),首先我們定義流程模型對(duì)應(yīng)的控制器(Wo...  閱讀全文

          posted @ 2008-01-02 16:51 笑看人生 閱讀(928) | 評(píng)論 (0)編輯 收藏

               摘要:     我自從進(jìn)入公司后,一直從事有關(guān)gef方面的開發(fā)工作,在這期間,走過不少彎路,僅僅是把GEF框架弄明白,就費(fèi)了很大力氣,所以,現(xiàn)在想寫一點(diǎn)東西出來,供初學(xué)者閱讀。     GEF(Graphical Editing Framework)是圖形化編輯器開發(fā)的工具,比較典型的應(yīng)用就是IBM 的Rose,它是一個(gè)...  閱讀全文

          posted @ 2008-01-02 15:32 笑看人生 閱讀(3542) | 評(píng)論 (5)編輯 收藏

          在二的基礎(chǔ)上,我們?cè)俳o這個(gè)簡(jiǎn)單web應(yīng)用增加聲明式事務(wù),聲明式事務(wù)原來是EJB所引以為自豪的地方,現(xiàn)如今Spring框架的AOP也支持這功能,關(guān)于AOP的內(nèi)容,這兒不想太深入,有興趣的讀者,可以參見本blog上有關(guān)Spring AOP方面的介紹,為了增加聲明式事務(wù),我們只需修改Spring的配置文件applicationContext.xml,

          1.首先我們?cè)谂渲梦募性黾邮聞?wù)管理器,由于本應(yīng)用采用了Hibernate,所以我們采用HibernateTransactionManager,配置如下:

          1<bean  id="transactionManager" 
          2class="org.springframework.orm.hibernate.HibernateTransactionManager">
          3    <property name="sessionFactory">
          4      <ref local="sessionFactory"/>
          5    </property>
          6 </bean>

          2.要在Sping使用聲明式事務(wù),我們得用TransactionProxyFactoryBean,它的作用就是把方法包裹在事務(wù)中,配置如下:

           1<bean id="bookService" 
           2class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
           3    <property name="transactionManager">
           4      <ref local="transactionManager"/>
           5    </property>
           6    <property name="target">
           7      <ref local=" registerTarget"/>
           8    </property>
           9    <property name="transactionAttributes">
          10      <props>
          11    <prop key="save*">
          12PROPAGATION_REQUIRED,-OrderException 
          13</prop>
          14      </props>
          15    </property>
          16 </bean>
          17

          下面我們簡(jiǎn)單解釋一下上面配置的意思:transactionManager屬性引用一個(gè)事務(wù)管理器,在這里我們引用HibernateTransactionManager,target屬性指定被代理的對(duì)象,transactionAttributes屬性的save*表示在代理對(duì)象中所有以save開頭的方法,PROPAGATION_REQUIRED表示代理對(duì)象中所有以save開頭的方法都必須在事務(wù)中運(yùn)行,-OrderException表示在執(zhí)行以save開頭的方法時(shí),如果有OrderException異常拋出,則事務(wù)立即回滾。

          完整的applicationContext.xml的配置如下:

           1<?xml version="1.0" encoding="UTF-8"?>
           2<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
           3 
           4<beans>    
           5 
           6    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
           7       <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
           8       <property name="url" value="jdbc:mysql://localhost/register"/>
           9       <property name="username" value="root"/>
          10       <property name="password" value="root"/>
          11    </bean>    
          12 
          13    <!-- Hibernate SessionFactory -->
          14    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
          15       <property name="dataSource" ref="dataSource"/>
          16       <property name="mappingDirectoryLocations">
          17           <value>classpath:test\register\entity\</value>
          18       </property>
          19       <property name="hibernateProperties">
          20           <props>
          21              <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
          22              <prop key="hibernate.show_sql">true</prop>
          23              <prop key="hibernate.generate_statistics">true</prop>
          24           </props>
          25       </property>       
          26    </bean>    
          27    
          28    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
          29    <property name="sessionFactory">
          30      <ref local="sessionFactory"/>
          31    </property>
          32 </bean>
          33 
          34   <bean id="registerService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
          35    <property name="transactionManager">
          36      <ref local="transactionManager"/>
          37    </property>
          38    <property name="target">
          39      <ref local=" registerTarget"/>
          40    </property>
          41    <property name="transactionAttributes">
          42      <props>        
          43        <prop key="save*">PROPAGATION_REQUIRED,-OrderException</prop>
          44      </props>
          45    </property>
          46 </bean>
          47 
          48   <bean id="registerDAO" class="test.register.dao.RegisterDAO">
          49        <property name="sessionFactory" ref="sessionFactory"/>       
          50 </bean>
          51 
          52   <bean id="registerTarget" class="test.register.service.RegisterService">
          53        <property name="registerDAO" ref="registerDAO"/>      
          54 </bean> 
          55 
          56</beans>
          57

          3.同時(shí)還要修改action-servlets.xml文件

          1<?xml version="1.0" encoding="UTF-8"?>
          2<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
          3<beans>    
          4    <bean name="/register" 
          5class="test.register.action.RegisterAction">
          6       <property name="registerService" ref="registerTarget"/>     
          7    </bean>     
          8</beans>
          9




          posted @ 2008-01-02 10:11 笑看人生 閱讀(476) | 評(píng)論 (0)編輯 收藏

          1.我們已經(jīng)搭建完了基本框架,接下來加入日志功能,只需修改原來的web.xml,增加一些配置信息:

           1<!--通知Spring Log4j配置文件的位置 -->
           2<context-param>
           3    <param-name>log4jConfigLocation</param-name>
           4    <param-value>/WEB-INF/log4j.properties</param-value>
           5</context-param>
           6 
           7<!--Spring默認(rèn)刷新Log4j配置文件的間隔,單位為millisecond-->
           8<context-param>
           9    <param-name>log4jRefreshInterval</param-name>
          10    <param-value>60000</param-value>
          11</context-param>
          12 
          13<!--在應(yīng)用啟動(dòng)時(shí),由Spring負(fù)責(zé)加載Log4j-->
          14<listener>
          15    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
          16</listener>

          2.接下來我們定義log4j.properties

           1# Global logging configuration
           2log4j.rootLogger=DEBUG,console,file
           3 
           4## APPENDERS ##
           5# define an appender named console, which is set to be a ConsoleAppender
           6log4j.appender.console=org.apache.log4j.ConsoleAppender
           7 
           8# define an appender named file, which is set to be a RollingFileAppender
           9log4j.appender.file=org.apache.log4j.RollingFileAppender
          10# replace <CATALINA_HOME> with your true path
          11log4j.appender.file.File=D:/eclipse/workspace/login/log.txt
          12 
          13## LAYOUTS ##
          14# assign a SimpleLayout to console appender
          15log4j.appender.console.layout=org.apache.log4j.SimpleLayout
          16 
          17# assign a PatternLayout to file appender
          18log4j.appender.file.layout=org.apache.log4j.PatternLayout
          19log4j.appender.file.layout.ConversionPattern=%t%p-%m%n

          在log4j.properties中,我們定義了日志級(jí)別是DEBUG,日志信息輸出目的地是控制臺(tái)(console)和文件(file)。

          3.這樣我們就可以在程序代碼中進(jìn)行日志操作了:

           1package test.register.action;
           2 
           3import javax.servlet.http.HttpServletRequest;
           4import javax.servlet.http.HttpServletResponse;
           5 
           6import org.apache.log4j.LogManager;
           7import org.apache.log4j.Logger;
           8import org.apache.struts.action.Action;
           9import org.apache.struts.action.ActionForm;
          10import org.apache.struts.action.ActionForward;
          11import org.apache.struts.action.ActionMapping;
          12import org.apache.struts.action.DynaActionForm;
          13 
          14import test.register.entity.Register;
          15import test.register.service.RegisterService;
          16 
          17public class RegisterAction extends Action{
          18       
          19       private static final Logger log = LogManager.getLogger(RegisterAction.class);
          20       
          21       private RegisterService registerService;
          22 
          23       public RegisterService getRegisterService() {
          24              return registerService;
          25       }

          26 
          27       public void setRegisterService(RegisterService registerService) {
          28              this.registerService = registerService;
          29       }

          30 
          31       public ActionForward execute(ActionMapping mapping,
          32                                                               ActionForm form, 
          33                                                 HttpServletRequest request, 
          34                                    HttpServletResponse response) 
          35       throws Exception {
          36              log.info("save register");
          37              Register r = (Register)((DynaActionForm)form).get("register"); 
          38              getRegisterService().saveRegister(r);           
          39              return mapping.findForward("success");
          40       }
               
          41       
          42}

          4.在上面log4j.properties中,我們指定日志輸入文件用了絕對(duì)路徑,這在很多時(shí)候不方便,為此我們作如下修改:在web.xml中增加一個(gè)上下文參數(shù)

          1<context-param>
          2    <param-name>webAppRootKey</param-name>
          3    <param-value>webLogin.root</param-value>
          4</context-param>

          增加系統(tǒng)變量,變量名為webAppRootKey,變量值可以指定應(yīng)用部署的目錄,這樣就可以在log4j.properties對(duì)日志輸出的文件路徑作如下修改:

          log4j.appender.file.File=${webLogin.root}/log.txt


          posted @ 2008-01-02 10:06 笑看人生 閱讀(588) | 評(píng)論 (0)編輯 收藏

               摘要: 這個(gè)Web應(yīng)用很簡(jiǎn)單,就是實(shí)現(xiàn)一個(gè)用戶注冊(cè)頁面,當(dāng)用戶在register.jsp頁面輸入注冊(cè)信息,點(diǎn)保存,如果成功,進(jìn)入registerSuccess.jsp頁面。這個(gè)應(yīng)用雖然很小,但它也有三層組成,表示層由Struts框架負(fù)責(zé),業(yè)務(wù)層由Spring框架負(fù)責(zé),持久層由Hibernate框架負(fù)責(zé)。 開發(fā)環(huán)境:MyEclipse 5+ MySQL4 + Struts1.3.5 + Spring2.0...  閱讀全文

          posted @ 2008-01-02 09:43 笑看人生 閱讀(1945) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題
          共4頁: 上一頁 1 2 3 4 
          主站蜘蛛池模板: 韶关市| 东明县| 凤山县| 甘洛县| 江陵县| 天水市| 防城港市| 克什克腾旗| 民勤县| 辛集市| 屯留县| 牙克石市| 同江市| 宁武县| 福海县| 贵南县| 南乐县| 桦川县| 麟游县| 五大连池市| 石景山区| 织金县| 济南市| 靖边县| 方山县| 鹤峰县| 定结县| 珲春市| 菏泽市| 汉川市| 盐津县| 日喀则市| 微博| 杨浦区| 建德市| 东乌珠穆沁旗| 玛纳斯县| 绥滨县| 家居| 富平县| 井研县|