黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Javaweb項(xiàng)目視頻課程,項(xiàng)目要點(diǎn)

Javaweb項(xiàng)目視頻課程,項(xiàng)目要點(diǎn)

更新時(shí)間:2020-03-23 10:03:44 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2391次


  JavaWeb項(xiàng)目需要注意的要點(diǎn),從環(huán)境準(zhǔn)備開始到三層架構(gòu)搭建,需要注意的地方全部羅列出來(lái)。


Javaweb項(xiàng)目視頻課程,項(xiàng)目要點(diǎn)


  第一部分:環(huán)境準(zhǔn)備


  1.Maven命令創(chuàng)建web骨架


  mvnarchetype:create-DgroupId=net.rocketa-DartifactId=mywebapp-DarchetypeArtifactId=maven-archetype-webapp


  注意webservlet版本(web.xml,3.1),Junit版本指定為4.X(這樣Spring好通過(guò)注解的方式來(lái)運(yùn)行單元測(cè)試)


  2.注意在IDEA中需要設(shè)置好MAVEN工程的Sources/Tests/Resources/TestResources屬性。


  3.日志依賴


  slf4j:規(guī)范和接口


  具體的日志實(shí)現(xiàn)有:


  log4j、logback、common-logging


  因此我們一般是使用slf4j接口+一種具體的日志實(shí)現(xiàn)+slf4j和這個(gè)具體日志實(shí)現(xiàn)的依賴整合


  4.數(shù)據(jù)庫(kù)依賴


  有2個(gè)依賴,需要注意,一個(gè)是驅(qū)動(dòng),一個(gè)是數(shù)據(jù)庫(kù)連接池(C3P0,DBCP...)。


  驅(qū)動(dòng)JAR包是運(yùn)行期需要包含,編譯期不需要的。


  5.持久層框架依賴


  說(shuō)白了,DAO層的框架依賴:MyBatisorHibernateor....


  比如除MyBatis本身的依賴需要引入之外,還需要引入MyBatis和Spring的整合依賴。


  6.Web層依賴


  比如,JSP中使用到的一些JSTL、標(biāo)簽、Ajax訪問(wèn)JSON等,還有需要注意的是,在編譯期需要引入servlet-api。


  7.Spring核心依賴


  spring-core、spring-beans、spring-context


  8.Spring和DB之間的整合依賴


  Spring是需要介入DB的管理的,比如它的聲明式事務(wù)。


  spring-jdbc、spring-tx


  9.Spring對(duì)Web的一些整合依賴


  spring-web、spring-webmvc


  10.Spring對(duì)Junit的支持依賴


  spring-test


  NOSQL對(duì)事務(wù)的支持不是很好,它主要追求的是性能、高可用、分布式。


  MySQL等關(guān)系型數(shù)據(jù)庫(kù)對(duì)事務(wù)的支持是很成熟的,也是很可靠的落地方案。


  第二部分:DAO層


  NOSQL對(duì)事務(wù)的支持不是很好,它主要追求的是性能、高可用、分布式。


  MySQL等關(guān)系型數(shù)據(jù)庫(kù)對(duì)事務(wù)的支持是很成熟的,也是很可靠的落地方案。


  1.表


  可以在項(xiàng)目中建立一個(gè)SQL文件,便于SQL的管理。


  注意,表的存儲(chǔ)引擎(事務(wù)的支持:innodb)、自動(dòng)增長(zhǎng)的特性、編碼、主鍵和索引。


  一個(gè)良好的習(xí)慣是:為所有的表都添加一個(gè)創(chuàng)建時(shí)間字段,用于記錄,方便排查。


  應(yīng)該為表名、列名添加注釋,方便其他工程師查閱。


  應(yīng)該注意SQL技巧,比如插入存在唯一約束的表中,如果出現(xiàn)沖突不想報(bào)錯(cuò)的話,可以:insertignoreinto....(可以通過(guò)返回的影響行數(shù)來(lái)進(jìn)行判斷)


  2.Dao層實(shí)體


  一些業(yè)務(wù)對(duì)象的建立,setter/getter/toString等就不說(shuō)了,需要特別注意的是,除了表的字段之外,還需要什么屬性?這里涉及到一個(gè)一對(duì)一、一對(duì)多,多對(duì)多的概念!


  3.Dao層接口和mappersql


  MyBatis的特點(diǎn):從SQL(參數(shù)+sql)映射到Entity/List(定制SQL、自由傳遞參數(shù)、結(jié)果集自動(dòng)賦值)


  使用MyBatis的方式:SQL寫在XML中,或者注解提供SQL。更加推薦的是XML,因?yàn)楦屿`活,XML提供的動(dòng)態(tài)拼接功能也是比注解簡(jiǎn)單的多。


  一個(gè)全局的mybatis配置文件+具體的SQL文件+DAO接口:讓我們只需要設(shè)計(jì)接口,關(guān)注業(yè)務(wù)邏輯,解放出來(lái)。


  在全局mybatis配置文件中重點(diǎn)注意:是否開啟駝峰轉(zhuǎn)換,獲取數(shù)據(jù)庫(kù)自增主鍵,列別名替換列名等。


  注意DAO接口和具體的SQL文件之間的對(duì)應(yīng)關(guān)系。


  具體SQL寫法中,比如#{},<![CDATA[...]]>等需要引起注意。


  輸入?yún)?shù)類型parameterType,如果是多個(gè)基本類型,那么不用給出來(lái)。


  即便返回的是List對(duì)象,我們的resultType依然指定的是集合中的對(duì)象類型。


  在Mybatis的SQL文件中是可以通過(guò)OGNL表達(dá)式來(lái)對(duì)對(duì)象中的一些對(duì)象類型的屬性進(jìn)行賦值的!


  表名.xxx或者表名.xxxasyyy對(duì)于Mybatis而言,會(huì)忽略表名.前綴,也會(huì)忽略as。


  另外,注意在Dao接口中,如果方法有多個(gè)基本類型參數(shù),別忘了通過(guò)@Param來(lái)進(jìn)行運(yùn)行期參數(shù)標(biāo)記!


  總結(jié):Dao層的工作逐漸演變成接口設(shè)計(jì)和SQL編寫了,這種代碼和SQL的分離方式,便于我們進(jìn)行review,而Dao的拼接將在Service層完成。


  4.一些優(yōu)化配置


  比如,對(duì)帶包路徑的類型進(jìn)行簡(jiǎn)化,通過(guò)配置掃描包。


  比如,批量掃描SQL文件,通過(guò)自動(dòng)掃描配置文件。


  5.mybatis和spring需要整合


  spring需要接管數(shù)據(jù)庫(kù)


  JDBC的一些連接信息,數(shù)據(jù)庫(kù)連接池的一些配置信息,就是配置DataSource的過(guò)程。


  spring和mybatis整合的核心


  SqlSessionFactory是MyBatis的配置核心,把DataSource注入,并指明MyBatis的全局配置文件位置,typeAliasesPackage掃描,mapper文件位置掃描等。


  spring通過(guò)動(dòng)態(tài)代理幫助生成Dao的代理實(shí)現(xiàn)類(MapperScannerConfigurer)


  注入SqlSessionFactory(通過(guò)sqlSessionFactoryBeanName),指明Dao接口的包路徑basePackage


  總之,配置的一項(xiàng)原則是:約定優(yōu)于配置!!!


Javaweb項(xiàng)目視頻課程,項(xiàng)目要點(diǎn)


  第三部分:進(jìn)行SpringJunit單元測(cè)試


  當(dāng)我們進(jìn)行了一些配置,寫了一些SQL,Dao接口后,應(yīng)該要進(jìn)行SpringJunit單元測(cè)試,可以通過(guò)IDEA快速的生成測(cè)試用例(很好用的一個(gè)功能,因?yàn)镮DEA可以幫助我們快速在test下建立與dao/service接口的同級(jí)目錄下生成用例)


  在用例中,我們只需要在類上打上注解:


  @RunWith(SpringJUnit4ClassRunner.class)


  @ContextConfiguration({"classpath:spring配置文件"})


  加載Spring容器后,我們就可以在用例中注入對(duì)象,開始測(cè)試了?。。?/p>


  第四部分:Service層


  Service層需要關(guān)注幾個(gè)要點(diǎn):


  業(yè)務(wù)對(duì)象的封裝、web和service之間進(jìn)行數(shù)據(jù)傳遞的DTO、異常的處理(業(yè)務(wù)異常)


  注意Spring事務(wù)回退的默認(rèn)機(jī)制是:運(yùn)行時(shí)異常。


  因此,我們?cè)趕ervice層默認(rèn)定義的業(yè)務(wù)異常一般extendsRuntimeException。


  一般而言,通過(guò):


  try{


  }catch(業(yè)務(wù)異常1e1){


  }catch(業(yè)務(wù)異常2e2){


  }catch(Exceptione){


  thrownew業(yè)務(wù)異常(...);


  }


  要知道,service層可能會(huì)發(fā)生業(yè)務(wù)異常,也可能發(fā)生一些其他異常,為了Spring都可以感知到,這里會(huì)把Exception異常轉(zhuǎn)化成運(yùn)行時(shí)異常


  第五部分:Controller層


  1.Restful


  一種優(yōu)雅的URI表述方式;資源的狀態(tài);狀態(tài)的轉(zhuǎn)移


  Restful示例:


  GET/product/list查詢操作


  GET/product/{productId}/detail


  GET/product/time/now


  POST/product/{productId}/execution添加、修改操作【非冪等性】


  POST/product/{productId}/{userId}/order


  DELETE/product/{productId}/delete刪除操作


  PUT修改操作【冪等性】


  URL設(shè)計(jì):


  /模塊/資源/{標(biāo)示}/集合1/...


  2.Controller中請(qǐng)求方法的細(xì)節(jié)處理


  考慮幾個(gè)方面:請(qǐng)求參數(shù)綁定、請(qǐng)求方式限制、轉(zhuǎn)發(fā)與重定向、數(shù)據(jù)模型賦值、JSON數(shù)據(jù)返回、Cookie訪問(wèn)


  @RequestMapping(value="/{productId:\d+}/detail",method=RequestMethod.GET,produces={"application/json;charset=UTF-8"})


  @ResponseBody


  publicStringdetail(


  @PathVariable("productId")LongproductId,@CookieValue(value="userId",required=false)LonguserId,Modelmodel){


  #return"rediect:/xxx/yyy"


  #return"forward:/xxx/yyy"


  #return"view"


  }


  3.整合配置SpringMVC


  在web.xml中配置DispatcherServlet攔截請(qǐng)求,并指出Spring相關(guān)的配置文件。


  開啟SpringMVC的注解模式:


  <mvc:annotation-driven/>


  靜態(tài)資源請(qǐng)求采用默認(rèn)的servlet配置


  <mvc:default-servlet-handler/>


  配置JSP、ViewResolver的prefix「如/WEB-INF/jsp」suffix「如.jsp」


  掃描web相關(guān)的Controller:


  <context:component-scanbase-package="">


Javaweb項(xiàng)目視頻課程,項(xiàng)目要點(diǎn)


    以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Javaweb項(xiàng)目視頻課程,項(xiàng)目要點(diǎn)”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 黄色影院在线看 | 中文欧美一级强 | 黄色精品 | www.亚洲国产 | 国产婷婷综合丁香亚洲欧洲 | 国语对白自拍 | 最新在线黄色网址 | 在线欧美视频免费观看国产 | 五月花成人网 | 亚洲天堂视频在线播放 | 日韩久久一区二区三区 | 爱呦视频在线播放网址 | 黄短视频在线观看免费版 | 一级特级毛片免费 | 一级a级国产不卡毛片 | 日韩性公交车上xxhd免费 | 色综合久久久久久久久五月性色 | 国产成人综合久久亚洲精品 | 特级毛片aaaa免费观看 | www.色五月| 欧美日韩v| 激情久久久久久久久久久 | 一级女性全黄生活片免费 | 国产黄色一级大片 | 亚洲精品mv在线观看 | 色色色色色色网 | 日韩手机在线免费视频 | 国产日韩欧美另类重口在线观看 | 青青草欧美 | 亚洲视频a| 亚洲国产精品久久网午夜 | 蜜臀国产在线 | www香蕉视频 | 国产欧美精品国产国产专区 | 欧美日本综合 | 毛片手机在线观看 | 韩国理论午夜 | 18av黄动漫网站在线观看 | 国产成人免费高清视频 | 成人午夜在线 | 久久免费视频7 |