国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

自定義MVC

2019-11-09 14:41:44
字體:
來源:轉載
供稿:網友
1、定義個servlet(ActionServlet)控制所有的*.do請求   步驟:   a. 創建web項目   b. 創建com.servlet包,創建ActionServlet.java   c. 配置web.xml文件==============================2、在servlet文件中:獲得請求路徑(request.getRequestURI()),截取到后面的請求名(cname)String url=req.getRequestURI(); //得到你發送的請求路徑,就是訪問的路徑//如:/web2/add.doint start = url.lastIndexOf("/")+1;int end = url.lastIndexOf(".");String cname = url.subString(start, end); //截取add請求名//最后一個“/”起截取================================3、在web-inf下創建一個config.PRoperties文件,保存一個鍵值對,根據不同的請求得到其對應的Class,同時創建好對應的處理類================================4、在servlet的init()方法中加載配置文件 Properties config=new Properties(); String path=this.getServletContext.getRealPath();//得到其絕對路徑 path=path+"/WEB-INF/config.properties"; config.load(new FileInputStream(path));//加載到內存中來 this.getServletContext.setAttribute("config",config); //存入到application中,以便于在處理方法中被調用5、到dopost方法中取出application中的數據,結合前面取到的請求名得到其對應的類名 Properties config=(Properties)this.getServletContext.getAttribute("config"); //先取到application當中的config String className=config.getProperty(cname); //根據請求名 去找到對應的類的名字================================6、將"/WEB-INF/config.properties"存入到web.xml文件中,并通過代碼取出 String sname=this.getServletContext().getInitParameter("config");================================7、根據取出來的類名(全路徑名),實例化對象//將字符串實例化對象try{Class.forName(classname).newInstance();}================================8、新建一個接口(IAction),聲明方法execute();將所有的實現類繼承IAction接口 ================================9、將Class.forName返回的對象統一為轉換為IAction,再統一的調用execute()方法(多態)  //上面代碼要改成:try{  IAction obj=(IAction)Class.forName(classname).newInstance();}================================10、修改接口的方法execute(),讓其帶參數(request,response),其所有的繼承類對應的做修改,保證 能從ActionServlet傳送到對應頁面================================11、將Action存入到一個池中,步驟:先在init方法中建立一個池(Properties),再在dopost方法中判斷,以保證每一個類只會 被實例化一次  有6步:  init()方法中:  a. 創建個池     Properties pool=new Properties();  b. 將池放入application中(上下文)     this.getServletContext().setAttribute("pool",pool);  dopost()方法中:  c. 從application中取池     Properties pool=(Properties)this.getServletContext.getAttribute("pool");     先去池里撈下,判斷:<修改代碼> 如果池為空,創建池 如果池不為空,直接取出使用 try{    IAction obj=null;     obj=(IAction)pool.get(className);    if(obj==null){ //如果在程序池當中沒有該對象 //則實例化一個對象  obj=(IAction)Class.forName(className).newInstance(); //將對象放入到池子中,同時鍵名指定為類名  pool.put(className, obj);    }    obj.execute(); }     ================================
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南充市| 南和县| 庐江县| 大渡口区| 龙胜| 团风县| 德惠市| 额敏县| 通渭县| 吕梁市| 江口县| 陇西县| 河北区| 尉犁县| 祥云县| 英德市| 密云县| 横山县| 当阳市| 太康县| 东光县| 若尔盖县| 鸡东县| 稻城县| 阿勒泰市| 白水县| 梅河口市| 乐山市| 龙门县| 镇远县| 金乡县| 普宁市| 甘孜| 梁平县| 隆化县| 靖安县| 德令哈市| 安远县| 岳阳市| 会同县| 平阳县|