• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Spring MVC+JDBCTemplate的Web系統(tǒng)的研究與應(yīng)用

      2017-03-22 12:37:09趙璘王紅霞
      軟件工程 2017年1期
      關(guān)鍵詞:視圖校驗(yàn)語(yǔ)句

      趙璘 王紅霞

      摘 要:Spring MVC以其松散耦合的特性在業(yè)內(nèi)被廣泛使用,JDBCTemplate對(duì)數(shù)據(jù)庫(kù)的操作在JDBC層面做了深層次的封裝,簡(jiǎn)化了項(xiàng)目中繁瑣的JDBC操作。Spring MVC與JDBCTemplate的有機(jī)結(jié)合,優(yōu)化了軟件開(kāi)發(fā)的過(guò)程。在分析Spring MVC與JDBCTemplate的技術(shù)要點(diǎn)、工作原理的基礎(chǔ)上,通過(guò)實(shí)例,展示了Spring MVC+JDBCTemplate的整合應(yīng)用給項(xiàng)目帶來(lái)的便利。

      關(guān)鍵詞:SpringMVC;JDBCTemplate;封裝;整合

      中圖分類號(hào):TP311.5 文獻(xiàn)標(biāo)識(shí)碼:A

      1 引言(Introduction)

      在Web應(yīng)用中,表現(xiàn)層是Web應(yīng)用不可忽略的重要組成部分,Spring為表現(xiàn)層提供了一個(gè)十分優(yōu)秀的Web框架——Spring MVC。與大多數(shù)其他的Web框架一樣的設(shè)計(jì)理念,都是遵循MVC的思想架構(gòu)。Spring MVC通過(guò)注解的方式,讓POJO成為處理請(qǐng)求的控制器,無(wú)需實(shí)現(xiàn)任何的接口[1]。另外,Spring MVC最大的優(yōu)點(diǎn)就是松散耦合,更具有靈活性和可擴(kuò)展性[2]。

      JDBC已經(jīng)能夠滿足大部分用戶最基本的對(duì)數(shù)據(jù)庫(kù)的需求,但是在使用JDBC時(shí),應(yīng)用必須自己來(lái)管理數(shù)據(jù)庫(kù)資源。JDBCTemplate正是為了減少JDBC繁瑣的代碼而設(shè)計(jì)出來(lái)的。Spring對(duì)數(shù)據(jù)庫(kù)操作需求提供了很好的支持,并在原始JDBC基礎(chǔ)上,構(gòu)建了一個(gè)抽象層,提供了許多使用JDBC的模板和驅(qū)動(dòng)模塊,為Spring應(yīng)用操作關(guān)系數(shù)據(jù)庫(kù)提供了更大的便利[3-6]。Spring封裝好的模板,封裝了數(shù)據(jù)庫(kù)存取的基本過(guò)程,方便使用。

      2 Spring MVC的技術(shù)要點(diǎn)(Technical points of Spring MVC)

      2.1 Spring MVC的組件

      (1)DispatherServlet:前置控制器,負(fù)責(zé)接收并處理所有的web請(qǐng)求,根據(jù)HandlerMapping找到具體的Controller,由Controller完成具體的處理邏輯。

      (2)HandlerMapping:負(fù)責(zé)處理web請(qǐng)求和具體的Controller之間的映射關(guān)系匹配。

      (3)Controller:DispatherServlet的次級(jí)控制器,web請(qǐng)求的具體處理者。DispatherServlet獲得HandlerMapping的返回結(jié)果后,調(diào)用Controller的方法處理前端發(fā)出的請(qǐng)求,處理結(jié)果通過(guò)ModelAndView對(duì)象返回。

      (4)ViewResolver:用來(lái)處理視圖名與具體的View實(shí)例之間的映射對(duì)應(yīng)關(guān)系。根據(jù)ModelAndView中的視圖名查找相應(yīng)的View實(shí)現(xiàn)類,然后將查找的結(jié)果返回給DispatcherServlet,DispatcherServlet最終會(huì)將ModelAndView中的模型數(shù)據(jù)交給返回的View處理最終的視圖渲染工作。

      (5)View:為支持多種視圖技術(shù)而存在,統(tǒng)一抽象視圖的生成策略,根據(jù)模型數(shù)據(jù)輸出具體的視圖。

      2.2 Spring MVC的體系架構(gòu)

      Spring MVC是基于Model 2實(shí)現(xiàn)的,Model 2是MVC模型在Java Web應(yīng)用中的一個(gè)變體。Spring MVC的底層機(jī)制是MVC,是利用處理器分離模型、視圖和控制達(dá)到松散耦合的效果。Spring MVC的框架模型如圖1所示。

      從接收請(qǐng)求開(kāi)始,到返回響應(yīng)為止,Spring MVC框架中的各個(gè)組件各司其職,通力合作,有序配合地完成各自的工作。在整個(gè)Spring MVC框架中,DispatcherServlet處于核心領(lǐng)導(dǎo)地位。它負(fù)責(zé)組織和協(xié)調(diào)不同的組件完成從請(qǐng)求到響應(yīng)的任務(wù)。其處理請(qǐng)求的整體過(guò)程如下:

      (1)整個(gè)過(guò)程從客戶端發(fā)出一個(gè)HTTP請(qǐng)求開(kāi)始,Web應(yīng)用服務(wù)器接收請(qǐng)求,如果與DispatcherServlet的請(qǐng)求路徑相匹配,Web容器就將該請(qǐng)求轉(zhuǎn)發(fā)給DispatcherServlet處理。

      (2)DispatcherServlet接收到這個(gè)請(qǐng)求后,將根據(jù)請(qǐng)求的信息及HandlerMapping的配置找到處理請(qǐng)求的處理器,即Handler。注意:Spring MVC中并沒(méi)有定義Handler接口。

      (3)當(dāng)DispatcherServlet根據(jù)HandlerMapping得到對(duì)應(yīng)當(dāng)前請(qǐng)求的Handler后,通過(guò)HandlerAdapter對(duì)Handler進(jìn)行封裝。再通過(guò)統(tǒng)一的適配器接口調(diào)用Handler(HandlerAdapter是Spring MVC的框架級(jí)接口)。

      (4)處理器完成業(yè)務(wù)處理后,返回一個(gè)ModelAndView給DispatcherServlet,ModelAndView包含視圖邏輯的名稱和模型數(shù)據(jù)的信息。

      (5)ModelAndView中包含的是邏輯視圖名,不是真正意義的視圖對(duì)象。DispatcherServlet通過(guò)ViewResolver完成從邏輯視圖名到真實(shí)視圖對(duì)象的解析。

      (6)當(dāng)?shù)玫秸嬲囊晥D對(duì)象后(View),DispatcherServlet就使用這個(gè)View對(duì)象對(duì)ModelAndView中的模型數(shù)據(jù)進(jìn)行視圖渲染。

      (7)最后客戶端得到的響應(yīng)信息可能是一個(gè)頁(yè)面(HTML、JSP),也可能是XML、JSON串或其他不同的媒體形式。

      2.3 Spring MVC配置

      (1)配置DispatcherServlet

      DispatcherServlet在web.xml中進(jìn)行配置,它讓Spring MVC能夠生龍活虎?;敬a如下所示:

      webservlet

      org.springframework.web.servlet.DispatcherServlet

      contextConfigLocationclasspath:web-servlet.xml

      1

      webservlet

      *.do

      3 JDBCTemplate的應(yīng)用(The application of JDBCTemplate)

      由于JDBC API過(guò)于底層,直接進(jìn)行JDBC編寫數(shù)據(jù)庫(kù)程序,需要完成數(shù)據(jù)庫(kù)代碼(SQL)、還需要編寫獲取JDBC連接、異常處理、釋放連接資源等代碼,實(shí)在是過(guò)于繁瑣。Spring JDBC通過(guò)模板和回調(diào)機(jī)制簡(jiǎn)化了JDBC編寫數(shù)據(jù)庫(kù)程序的復(fù)雜度。借助JDBCTemplate,程序員只需要編寫處理業(yè)務(wù)的核心SQL語(yǔ)句即可。

      3.1 JDBCTemplate配置

      在Spring的配置文件ApplicationContext.xml中進(jìn)行數(shù)據(jù)源的配置。以下代碼以mariadb數(shù)據(jù)庫(kù)為例,代碼如下:

      destroy-method="close"p:driverClassName="org.mariadb.jdbc.Driver"

      p:url="dbc:mysql://localhost:3306/asms?useUnicode=true&characterEncoding=UTF-8"

      p:username="asms"

      p:password="asms"/>

      3.2 JDBCTemplate中的常用方法

      (1)update()方法用于執(zhí)行數(shù)據(jù)庫(kù)表的新增、修改、刪除的SQL語(yǔ)句。

      (2)batchUpdate()方法用于執(zhí)行批處理相關(guān)的SQL語(yǔ)句。

      (3)query()方法及queryForXXX()方法:用于執(zhí)行查詢相關(guān)的SQL語(yǔ)句。其中queryForXXX()根據(jù)返回對(duì)象類型進(jìn)行方法的選擇(queryForObject,queryForList等)。

      (4)call()方法用于執(zhí)行存儲(chǔ)過(guò)程、函數(shù)相關(guān)的SQL語(yǔ)句。

      3.3 JDBCTemplate實(shí)例

      在代碼中,以向表nps_classes中插入數(shù)據(jù)為例。首先定義SQL語(yǔ)句,然后使用JDBCTemplate執(zhí)行該SQL。

      privatestaticfinal String SQL_ADD_CLASS="insert into nps_classes(classid,classname,classdesc,batid,apid) values(?,?,?,?,?)";

      publicvoidaddClass(Map map) {

      Object[]params=MapUtil.getObjectArrayFromMap(map, "classid,classname,classdesc,

      batid,apid");

      jt.update(SQL_ADD_CLASS,params);

      }

      4 應(yīng)用實(shí)例(Application instance)

      運(yùn)用實(shí)際案例介紹Spring MVC在項(xiàng)目中的實(shí)現(xiàn)過(guò)程。基本功能說(shuō)明:畢業(yè)生首次登錄系統(tǒng)要完成自主注冊(cè)功能,該功能分為兩步完成:第一步,通過(guò)姓名和身份證號(hào)在畢業(yè)生信息中進(jìn)行校驗(yàn),校驗(yàn)成功后進(jìn)入第二步,校驗(yàn)失敗重新填寫姓名和身份證號(hào)進(jìn)行校驗(yàn)。第二步:在第一步校驗(yàn)成功后,需要填寫姓名拼音、電子郵箱、驗(yàn)證碼、密碼、確認(rèn)密碼提交至系統(tǒng)保存,保存成功即畢業(yè)生注冊(cè)成功。

      (1)在注冊(cè)第二步,填寫相應(yīng)信息后,點(diǎn)擊“下一步”按鈕,向服務(wù)端發(fā)送post請(qǐng)求,如圖2所示。

      (2)分發(fā)器得到客戶端請(qǐng)求后,通過(guò)控制器映射匹配到負(fù)責(zé)業(yè)務(wù)邏輯處理的控制器,并將請(qǐng)求轉(zhuǎn)發(fā)給該控制器。該控制器所在的Java類為StuRegisterController.java,代碼如下:

      @RequestMapping(value="/stu/registerasmsstep2.do")

      public Mapregisterasmsstep2(String studentno,String stupwd,Stringstudentnameen)

      throwsIOException {

      Mapjsonrslt=new HashMap();

      boolean flag=false;

      flag=this.registerService.updateregisterasmsstep2(studentno,stupwd,studentnameen);

      jsonrslt.put("flag",flag);

      returnjsonrslt;

      }

      (3)控制器調(diào)用RegisterServiceImpl處理注冊(cè)第二步的業(yè)務(wù)邏輯,其處理方法如下:

      @Override

      publicboolean updateregisterasmsstep2(String studentno,

      Stringstupwd,Stringstudentnameen) {

      boolean flag=false;

      MaprmParam=new HashMap();

      rmParam.put("studentno",studentno);

      rmParam.put("stupwd",stupwd);

      rmParam.put("studentnameen",studentnameen);

      int i=jdbctemplate.update(sql.updateregisterasmsstep2(),rmParam);

      if(i==1){

      flag=true;

      }

      return flag;

      }

      (4)由于業(yè)務(wù)要求第一步注冊(cè)校驗(yàn)時(shí)已將畢業(yè)生信息插入到數(shù)據(jù)表中,所以第二步注冊(cè)僅僅是更新部分?jǐn)?shù)據(jù)信息,RegisterServiceImpl中的JDBCTemplate更新數(shù)據(jù)表的信息,調(diào)用SQL如下:

      public String updateregisterasmsstep2() {

      return"update ASMS_STUREGINFO set stupwd=:stupwd,studentnameen=:studentnameen where studentno=:studentno";

      }

      (5)響應(yīng)返回至客戶端獲取flag數(shù)據(jù),則顯示“注冊(cè)成功,請(qǐng)使用學(xué)號(hào)和密碼進(jìn)行系統(tǒng)登錄”信息,如圖3所示。

      5 結(jié)論(Conclusion)

      本文分析了Spring MVC的技術(shù)要點(diǎn)和JDBCTemplate的應(yīng)用。Spring MVC技術(shù)要點(diǎn)包括組件、框架模型和配置,JDBCTemplate的應(yīng)用包括配置和常用方法。最后通過(guò)實(shí)際項(xiàng)目,介紹了web請(qǐng)求在Spring MVC中的應(yīng)用,以及JDBCTemplate如何操作數(shù)據(jù)表。

      綜上得出:Spring MVC大大簡(jiǎn)化了程序開(kāi)發(fā)的繁瑣度,JDBCTemplate降低了編寫數(shù)據(jù)庫(kù)程序的復(fù)雜度。Spring MVC+JDBCTemplate的組合值得在Web應(yīng)用軟件開(kāi)發(fā)中廣泛使用。

      參考文獻(xiàn)(References)

      [1] 張文宇,許明健,薛昱.論spring的零配置與XML配置[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2015,24(2):270-275.

      [2] 周燕玲.Spring MVC框架開(kāi)發(fā)WEB應(yīng)用程序的探索與研究[J].科技廣場(chǎng),2016(6):25-28.

      [3] 葉雯.基于Spring MVC框架的Web登錄模塊的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2013(35):7983-7984.

      [4] Zhang Chao,Zhao Ping,He Jing.Design and Implementation of the Control System Software Based on MVC Model[J].High Power Laser and Particle Beams,2013(S1):91-95.

      [5] TianPengfei,Tian Di,Yang Guang.Design and Implementation of LIBS Software Based on MVC Architecture[J].Journal of Jilin University(Engineering and Technology Edition),2016(1):242-245.

      [6] Lin HC,et al.Development of a Real-Time Clinical Decision Support System upon the Web MVC-Based Architecture for Prostate Cancer Treatment[J].BMC Med Inform DecisMak,2011(926):3306-3309.

      作者簡(jiǎn)介:

      趙 璘(1981-),男,碩士,助教.研究領(lǐng)域:軟件工程.

      王紅霞(1982-),女,碩士,工程師.研究領(lǐng)域:計(jì)算機(jī)軟件與

      理論.

      猜你喜歡
      視圖校驗(yàn)語(yǔ)句
      重點(diǎn):語(yǔ)句銜接
      爐溫均勻性校驗(yàn)在鑄鍛企業(yè)的應(yīng)用
      精彩語(yǔ)句
      5.3 視圖與投影
      視圖
      Y—20重型運(yùn)輸機(jī)多視圖
      SA2型76毫米車載高炮多視圖
      大型電動(dòng)機(jī)高阻抗差動(dòng)保護(hù)穩(wěn)定校驗(yàn)研究
      基于加窗插值FFT的PMU校驗(yàn)方法
      鍋爐安全閥在線校驗(yàn)不確定度評(píng)定
      会东县| 双辽市| 留坝县| 阳新县| 郁南县| 喀喇沁旗| 金堂县| 铜山县| 巴林左旗| 濮阳县| 锡林郭勒盟| 措勤县| 甘南县| 开封市| 乌鲁木齐市| 海南省| 西吉县| 天津市| 华安县| 北京市| 高唐县| 团风县| 玉溪市| 渝中区| 于田县| 黎城县| 海伦市| 克东县| 桂平市| 常宁市| 光山县| 齐河县| 临泉县| 盘锦市| 嘉荫县| 积石山| 买车| 鄂温| 白沙| 青神县| 衡山县|