java連接數據庫(第一步)

          需要聯系的幾個文件: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參數1類,創建一個方法為setRequest參數為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獲取成員函數)
                  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類;//此方法引入數據庫連接 
                  //以上剛進入頁面的時候instance調用三個類初始化,分別是繼承關系DaosupportController ,controller,和BeanFactory
                  /*--->>>其中DaoSupportController類中protected ObjectDao dao = (ObjectDao)BeanFactory.getBean("objectDao");
                  --->>>調用:getBean 方法public class BeanFactory {
                      public static ApplicationContext context = new ClassPathXmlApplicationContext("appcontext.xml") ;//此方法引入數據庫連接                                        
                      public static Object getBean(String beanId) {
                          return context.getBean(beanId);
                      }
                  }
          */

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

          }



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

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

          導航

          統計

          公告

          this year :
          1 jQuery
          2 freemarker
          3 框架結構
          4 口語英語

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          EJB學習

          Flex學習

          learn English

          oracle

          spring MVC web service

          SQL

          Struts

          生活保健

          解析文件

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宜州市| 双桥区| 澄江县| 新民市| 昌黎县| 孟津县| 景宁| 常宁市| 平乡县| 固始县| 平罗县| 石楼县| 黄梅县| 仁怀市| 会同县| 米林县| 四子王旗| 桦南县| 棋牌| 七台河市| 呼玛县| 新竹市| 富蕴县| 静宁县| 清河县| 洛川县| 茂名市| 洞头县| 新宾| 阳山县| 玛纳斯县| 庆元县| 玛多县| 洞口县| 仲巴县| 如皋市| 长垣县| 道孚县| 平顺县| 龙岩市| 苍梧县|