java連接數(shù)據(jù)庫(第一步)

          需要聯(lián)系的幾個文件:DaosupportController,extents Controller,BeanFactory,CoreDispatcherController,appcontext.xml.
          有web.xml中
          <servlet>
                  <!-- servlet獲得控制文件Class的名字,類名 -->
            <servlet-name>smvcCoreDispatcher</servlet-name>
            <servlet-class>org.bluechant.mvc.core.CoreDispatcherController</servlet-class>
          .....
          </servlet>
          有CoreDispatcherController開始-->

          public void invokeActionHandler(ModelAndView mv , HttpServletRequest request) throws Exception{
                  String className 
          = mv.getClassName();
                  String methodName 
          = mv.getMethodName();
                  
          //load class
                  Class controllerClass = cache.loadClass(className);//== Class.forName(className);java反射機制,jvm加載lassName類
                  Class parentControllerClass = cache.loadClass(baseControllerClass);//class org.bluechant.mvc.controller.Controller
                  
          //load method參數(shù)1類,創(chuàng)建一個方法為setRequest參數(shù)為HttpServletRequest.class的方法與method = clazz.getDeclaredMethod(setRequest, HttpServletRequest.class);與HttpServletRequest的setRequest方法一致的方法.
                  Method setRequest = cache.loadMethod(parentControllerClass, "setRequest"new Class[] { HttpServletRequest.class });    //HttpServletRequest.class,java的反射機制得到自己的類,能夠擁有自己的方法值,(Method setRequest獲取成員函數(shù))
                  Method setModelAndView = cache.loadMethod(parentControllerClass, "setModelAndView"new Class[] { ModelAndView.class });//org.bluechant.mvc.controller.Controller-setModelAndView@6024418  public void org.bluechant.mvc.controller.Controller.setModelAndView(org.bluechant.mvc.controller.ModelAndView)
                  Method targetMethod = cache.loadMethod(controllerClass, methodName, new Class[]{});
                  
          //buiid controller instance and invoke target method以上setRequest,setModelAndView,targetMethod都放在cache(hashMap中)
                  Object instance = controllerClass.newInstance();//加載className類;//此方法引入數(shù)據(jù)庫連接 
                  //以上剛進入頁面的時候instance調(diào)用三個類初始化,分別是繼承關(guān)系DaosupportController ,controller,和BeanFactory
                  /*--->>>其中DaoSupportController類中protected ObjectDao dao = (ObjectDao)BeanFactory.getBean("objectDao");
                  --->>>調(diào)用:getBean 方法public class BeanFactory {
                      public static ApplicationContext context = new ClassPathXmlApplicationContext("appcontext.xml") ;//此方法引入數(shù)據(jù)庫連接                                        
                      public static Object getBean(String beanId) {
                          return context.getBean(beanId);
                      }
                  }
          */

                  setRequest.invoke(instance, 
          new Object[] { request });//對帶有指定參數(shù)的指定對象調(diào)用由此 Method 對象表示的基礎(chǔ)方法    
                  setModelAndView.invoke(instance, new Object[] { mv });//instance立即為原型指針
          //        --->>>執(zhí)行指定的targetMethod方法實則為AccountController的login()登陸方法此時開始調(diào)用數(shù)據(jù)庫
                  targetMethod.invoke(instance, new Object[]{});    
                  
          //調(diào)用instance類中targetMethod這個方法,Object[]{}這個作為參數(shù)..
                  
          //invoke根據(jù)實體獲得方法,添加所要造的參數(shù),就是個找實例的方法克隆工廠,由Method獲得實例模型,由方法鍛造樣子,傳入?yún)?shù)得出想要結(jié)果
              }

          }



          posted on 2012-05-24 16:49 youngturk 閱讀(199) 評論(0)  編輯  收藏 所屬分類: Java基礎(chǔ)web.xml解析 、java連接數(shù)據(jù)庫解析

          <2012年5月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計

          公告

          this year :
          1 jQuery
          2 freemarker
          3 框架結(jié)構(gòu)
          4 口語英語

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          EJB學(xué)習(xí)

          Flex學(xué)習(xí)

          learn English

          oracle

          spring MVC web service

          SQL

          Struts

          生活保健

          解析文件

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 共和县| 舟山市| 马尔康县| 亚东县| 泌阳县| 景东| 平顶山市| 新民市| 雷州市| 神农架林区| 宁都县| 石城县| 大田县| 普兰店市| 洪洞县| 密云县| 沁源县| 陕西省| 彭州市| 宁津县| 尚义县| 宁强县| 河源市| 七台河市| 垣曲县| 峨眉山市| 丰顺县| 开原市| 神农架林区| 乌鲁木齐市| 梁河县| 车险| 桑植县| 崇信县| 浙江省| 上饶县| 浦县| 滨州市| 中山市| 自贡市| 惠来县|