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

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

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

    Spring學習筆記系列(一)

    ApplicationContext ctx

    1,定義資源文件獲得資源文件的消息,國際化信息
    <bean id="messageResource" class="org.springFramework.context.support.ResourceBoundleMessageSource">
     <property name="basenames">
      xxxx
     </property>
    </bean>
    將會搜索xxxx.properties,xxxx_zh.properties ,xxxx_ch.properties等。

    2,
    程序里使用資源文件 :ctx.getMessage('key',arg);
    頁面上使用資源文件:<spring:message code="keyxxx"/>


    3,使用其他文件。
     Resource rs = ctx.getResource("classpath:config.properties");
     File file = rs.getFile();
     目錄規則:
     file:c:/test。txt
     /config.properties
     classpath:config.properties
     三種方式。

    4,事件傳播
      不過沒有找到ApplicationListener這個類。

    5, WebApp獲取ApplicaionContext的方法,
     首先是在web。xml中進行配置,可以配置成一個listener,也可以配置成一個servlet。
     然后程序里使用WebApplicationContextUtils.getWebApplicationContext.獲得飲用。

    6,Spring可以和很多框架進行集成。
     Struts+Spring,Webwork+Spring。

    7,Spring可以有自己的調度類,DispatherServlet。
     使用的配置文件就是beans的配置,名字可以隨便取。

    8,Sping配置文件(具體名字見web.xml中對ContextLoaderServlet的參數)類似于Struts的配置文件。
     定義viewer使用的是系統類:
      org.springframework.web.servlet.view.InternalResourceViewResolver
     Request mapping 使用的系統類:
      org.springframework.web.servlet.handler.SimpleUrlHandleMapping
     對Action的定義使用自定義類,但這些類都是下面類的子類:
      SimpleFormController
     Actoin的屬性包括:
      1,跳轉的頁面,和view關聯
      2,封裝form類,就是一個普通的javabean。
      
    9,Acition類的內容,
      實現onsubmit( 封裝的form,異常對象) 返回一個ModelAndView。
      ModelAndView用字符串初始化,字符串來自Action的兩個跳轉view名稱。
      還可以把Map傳入ModelAndView構造函數,用來返回消息。


    10,Spring自帶的數據驗證功能。
     10.1,驗證類作為Aciotn的一個名為“validator”的屬性在配置文件中配置。
     此類繼承org.springframework.validation.Validator
     需要實現兩個接口,support(傳入一個類),驗證此類是否是Action對應的form類。
     validator(object obj,Errors err )首先把obj轉為form類對象,如果有錯誤放到errors里,用法和
      struts類似。
     
     10.2,表現層頁面需要的顯示錯誤
      全部錯誤:
      <spring:bind path="command.*">
       //遍歷status.errorMessages
      </spring:bind>  
     
      單個錯誤:
      <spring:bind path="command.username">
       <input type="text" value="${staus.value}" name="${status.expression}">
       <c:if test="${status.error}">
        //遍歷status.errorMessages
       </c:if>
      </spring:bind>
      如果已經在Action中配置了commandName,那么就不使用command了,而是使用配置的名字
      <bean id=‘loginActoni’>
       <property name="commandName">
        <value>RegisterInfo</value>
       </property>
      </bean>

    11, 異常處理
     在Dispather的配置文件中配置
     <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
     定義兩個屬性:
     <property name="defaultErrorView">
     <property name="exceptionMapping">
      <props>
       <prop key="java.sql.SQLException">sss</prop>
       <prop key="java.lang.RuntimeException">yyy</prop>
      </props>
     </property> 
     可以按不同異常映射到不同的頁面。
     異常頁面從request.getAttribute("Exception")取得Exception對象。顯示他的message屬性。

    12,國際化
     看完1后,補充如下:
     Spring判斷用戶Locale的方式有三種,request中取,session中取,cookie中取客戶端的locale。
     分別用三個類,配置到配置文件中。

    13,數據持久層(重要)對事務的封裝
     Spring是依賴容器的參數化事務管理不用寫代碼。
     見p67。
     1,在配置文件中配置完數據源,
     2,之后配置事務管理的bean,數據源是它的屬性。
     3,DAO,事務員是它的屬性。
     4,事務beanDAOProxy,事務策略,事務bean,DAO都是它的屬性。

    14,數據持久層,對JDBC的封裝
     org.springframework.jdbc.core.JdbcTemplate.
     JdbcTemplate jdbctemplate = new JdbcTemptlate( datasource );
     jdbctemplate.update("xxxxx");
     jdbctemplate.update("xxxxx",new PreparedStatementSetter(){
      public void setValues( PreparedStatementSetter ps ){
       ps.setInt(1,15);
       ps.setString(2,"jjjjjjj");
      }
     });
     jdbctemplate.query("select ...",new RollbackHandler(){
      public void processRow( ResultSet rs ){
       User user = new User();
       user.setName= rs.getString("name");
       userList.add( user );
      }
     });

     .call()可以調用存儲過程。
     query,update還有很多不同版本的實現。
     

    15, JDBC封裝還要引入事務管理機制,默認是沒有事務的。
     兩種方式
     1,代碼控制的,在DAO里TransactionTemplate使用它的方法。
     2,參數化配置的事務。配置一個ProxyDAO,不用寫這個類,只需要在配置文件里增加他對DAO的事物設置。
      使得DAO代碼十分簡潔。

     測試代碼:
     InputStream is = new FileInputStream("xxx.xml");
     XmlBeanFactory factory = new XmlBeanFactoy( is );
     UserDAO dao = (UserDAO)factory.getBean("ProxyDAO");
     dao.insert();//這樣就行了

    16,Hibernate in Spring
     只需修改配置文件增加一個bean名字為sessionFactory,數據源作為他的屬性。
     TrsactionManager的屬性:sessionFactory
     IDAO接口:定義數據庫操作方法。
     DAO的屬性:sessionFactory。繼承HibernateDAOSupport,并實現IDAO接口。
       里面使用getHibernateTemplate模版進行數據庫操作。
     ProxyDAO的屬性:transactionManager,DAO.
     
     測試例子:
     IUserDAO dao=(IUserDAO)factory.getBean("ProxyUserDAO"); 
     User user = new User();
     user.setxxx...
     dao.insertOrUpdate(user);
     

    posted on 2007-06-18 17:58 chenguo 閱讀(225) 評論(0)  編輯  收藏 所屬分類: Spring Dev

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    留言簿

    隨筆分類(1)

    文章分類(52)

    好友 小山的博客

    最新隨筆

    最新評論

    主站蜘蛛池模板: 一本天堂ⅴ无码亚洲道久久| 亚洲高清中文字幕综合网| 亚洲av无码av在线播放| 成人性生交大片免费看无遮挡| 亚洲图片校园春色| 色影音免费色资源| 亚洲人成毛片线播放| 国产高清免费视频| 亚洲av片不卡无码久久| 丁香花在线观看免费观看| 亚洲色大18成人网站WWW在线播放| 99在线精品视频观看免费| 亚洲伊人久久大香线蕉影院| 亚洲性线免费观看视频成熟| 亚洲性无码一区二区三区| 免费一看一级毛片| 两性色午夜视频免费播放| 亚洲精品天天影视综合网| 国产精品久久久久久久久免费| 亚洲人成小说网站色| 国产又大又粗又硬又长免费| 国产线视频精品免费观看视频| 亚洲日本在线看片| 最近2019中文字幕mv免费看| 麻豆安全免费网址入口| 亚洲色成人网站WWW永久| 久久九九兔免费精品6| 久久久亚洲精华液精华液精华液| 久久久久亚洲AV无码专区网站| 无码人妻一区二区三区免费看 | 日韩精品无码免费视频| 久久久久亚洲AV无码专区桃色| 热re99久久6国产精品免费| 天堂亚洲国产中文在线| 亚洲男人的天堂在线va拉文 | 性xxxxx免费视频播放| 久久久久久亚洲av无码蜜芽| 自拍偷自拍亚洲精品情侣| 免费观看无遮挡www的视频| 国产亚洲精品免费| 伊人久久综在合线亚洲2019|