springboot基礎(chǔ)文檔_第1頁
springboot基礎(chǔ)文檔_第2頁
springboot基礎(chǔ)文檔_第3頁
springboot基礎(chǔ)文檔_第4頁
springboot基礎(chǔ)文檔_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余23頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、在IDEA環(huán)境下創(chuàng)建一個(gè) Spring boot程序一、點(diǎn)擊New Project后,選擇Spring Initializr。如下圖所示,此時(shí),如 果右側(cè)你的JDK自動出現(xiàn)了,那可以省很多事。如果沒有自動出現(xiàn),則 需要你點(diǎn)擊New,去選擇你JAVA的安裝目錄。(為什么需要這樣因?yàn)镾pring的運(yùn)行需要JAVA所以IDE需要知道你的JAVA安裝目錄。)二、進(jìn)入下一步后,會讓你設(shè)置一下你工程的名字等基本信息。demoName:Type:Maven Project (Generate a MavenPackaging:JarJava Version:1.8Language:JavaCroup:com

2、.exampleArtifact:demoVersion:O.O.l-SNAPSHOTDescription: Demo projectfor Spring BootPackage:com.example三、然后這個(gè)界面比較重要,它的作用是在開始的時(shí)候,自動下載一些jar包。你勾選一個(gè),他就會自動下載。請按照需求勾選。Spring Boot Version:13.3Dependencies Core Security Cache Retry WebM WebRat packBf AOPDevToolsF LombokWebsockeVaadinf Rest Repositories HAL B

3、rowser 機(jī) Mobile Template Engines FreemarkerMustache SQL nf jpa HSQLDBVelocity JOOQApache De NoSQLMongoDCassandrd四、填寫工程名jjfl New ProjectProject name:demoProject location: rejectdemo卜 More Settin-gsPreii五、OK,現(xiàn)在Intellij就自動為我們創(chuàng)建好一個(gè) Springboot的程序了哦如下圖所示:Spring boot 寫一個(gè) Hello world現(xiàn)在開始寫第一個(gè)Hello World”看下圖:

4、門blog -/IdeaProjects/blog Q .idea tl .mvn D src D main 口 java ©com .example時(shí) DemoApplication Ce re sources由 static©perties testR blogJmlmvnwmvnwxmdm pom,xmlHh External Libraries上圖中的是一個(gè)包名,為了代碼可讀性高,我們會使用MVC的開發(fā)模式,在這個(gè)包下面,再新建幾個(gè)包,分別用來寫不同的代碼。需要新建 的包如下:1. controller包:用來寫控制器

5、代碼,控制器對應(yīng)不同的請求,是網(wǎng) 絡(luò)請求的第一層。2. model包:里面每個(gè)class可以對應(yīng)一個(gè)數(shù)據(jù)表,當(dāng)你寫好 class, 并且運(yùn)行工程時(shí),Springboot和Hibernate會自動為你在數(shù)據(jù)庫里創(chuàng)建 表。3. repository包:這里封裝了所有對數(shù)據(jù)表的增刪改查操作。以后你 需要操作數(shù)據(jù)庫,其實(shí)就是使用這里的接口。4. service包:比如把登錄、注冊等一個(gè)完整的邏輯,封裝為一個(gè)service,彳ft controller調(diào)用,可以極大地簡化開發(fā),同時(shí)代碼也具有更 高的可讀性。下面,讓我們來建立這四個(gè)包吧 在這個(gè)包上右鍵,然后new 一個(gè)包出 來。如圖所示:我這里創(chuàng)建好包名

6、后,目錄結(jié)構(gòu)是這樣的:EPJ rrojecx 3 干【¥ 口blog -/IdeaProjects/blog.idea.mvnisrc亡main Djava B com.exampleE3 controller位model應(yīng)repositoryEl service6 DemoApplication resources位staticE templates oapplication.p rope rties D test blog.iml mvnwmvnw.cmdtYf pom.xmlExternal Libraries好了,到這一步,我們終于可以開始寫代碼啦在本文里,我們將不會用至U

7、service、model、repository,只會用到 controller 來寫一個(gè)簡單 的Hello World。讓我們開始寫吧:首先,在controller這個(gè)包上點(diǎn)擊右鍵,新建一個(gè)class,名字就叫nana, 如下圖所示:嚴(yán)格按照前面的教程來,你的包名可能和我的不一樣,所以這個(gè)代碼復(fù)制過去后,請自己檢查一遍!】package * Created by longge93 on 16/4/14. */RestControllerEnableAutoConfigurationpublic class nana RequestMapping(value="/",met

8、hod =public String index() return "Hello World";然后我們來運(yùn)行以下我們的工程,運(yùn)行方法如下圖所示:寫代碼的過程都是不順利的 雖然我們點(diǎn)了運(yùn)行,但是下面的控制臺里 卻提示我們運(yùn)行失敗了,從上圖的下面看出,是 hibernate出錯了。為 什么呢因?yàn)槲覀冊?Maven里包含了 MySQL的jar包,但是卻沒有配置 數(shù)據(jù)庫連接需要的賬號和密碼等信息。所以 hibernate會報(bào)錯因?yàn)槲?們這篇文章里,只是為了輸出 hello world,用不著數(shù)據(jù)庫。所以我們先 去pom文件里注釋掉數(shù)據(jù)庫相關(guān)的jar包應(yīng)該就OK了。我注釋完后, 我

9、的pom文件是這樣的,請仔細(xì)檢查:<xml version="" encoding="UTF-8">project xmlns="" xmlns:xsi=""xsi:schemaLocation=""><modelVersion> <groupId></groupId><artifactId>demo</artifactId> version<packaging>jar</packaging>&

10、lt;name>demo</name><description>Demo project for Spring Boot</description>parent<groupId> <artifactId>spring-boot-starter-parent</artifactId>version <relativePath/> <!- lookup parent from repository -> </parent><properties>>/></

11、properties>dependencies<dependency><groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency><!-<dependency>-><!-<groupId> <!-<artifactId>spring-boot-starter-data-jpa</artifactId>-><!-</dependency>-><

12、!-<dependency>-><!-<groupId> <!-<artifactId>spring-boot-starter-jdbc</artifactId>-><!-</dependency>-><!-<dependency>-><!-<groupId> <!-<artifactId>spring-boot-starter-redis</artifactId>-><!-</dependency>-&

13、gt;<dependency><groupId> <artifactId>spring-session</artifactId></dependency><dependency><groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId> <artifactId>spring-boot-starter-we

14、b</artifactId></dependency><!-<dependency>-><!-<groupId>mysql</groupId>-><!-<artifactId>mysql-connector-java</artifactId>-><!-<scope>runtime</scope>-><!-</dependency>-><dependency><groupId> <arti

15、factId>spring-boot-starter-test</artifactId><scope>test</scope>/dependency/dependencies<build><plugins><plugin><groupId> <artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>/project此時(shí), 依然報(bào)錯: Cannot det

16、ermine embedded database driver class for databasetype NONE解決辦法:注釋掉pom文件中jap和session,在完成以后,pom配置如下<xml version="" encoding="UTF-8"><project xmlns="" xmlns:xsi=""xsi:schemaLocation=""><modelVersion> <groupId></groupId><

17、;artifactId>demo</artifactId>version<packaging>jar</packaging><name>demo</name>descriptionDemo project for Spring Boot/description<parent>groupId <artifactId>spring-boot-starter-parent</artifactId><version> <relativePath/> <!- lookup

18、parent from repository -></parent><properties>< < <></></properties><dependencies><dependency><groupld><artifactld>spring-boot-starter-aop</artifactld></dependency><dependency><groupld><artifactld>spring-boo

19、t-starter-web</artifactld></dependency><dependency><groupld><artifactld>spring-boot-starter-test</artifactld><scope>test</scope></dependency><dependency><groupld><artifactld>spring-boot-starter-thymeleaf</artifactld></d

20、ependency></dependencies><build><plugins><plugin><groupld><artifactld>spring-boot-maven-plugin</artifactld></plugin></plugins></build></project>然后我們再點(diǎn)擊那個(gè)三角形運(yùn)行,你會發(fā)現(xiàn)運(yùn)行成功啦如下圖所示:來后,其實(shí)就相當(dāng)于跑起來一個(gè)網(wǎng)站?,F(xiàn)在讓我們?nèi)ゾW(wǎng)頁里看看我們的Hello World有沒有正常工作吧在瀏覽器里,打

21、開,你會發(fā)現(xiàn)輸出了 Hello World來源:boot在Spring mvc下接入微信在我們搭建好Spring boot環(huán)境后,可以很容易的使用 Spring mvc不需要復(fù)雜的 配置,只需要做一些基本的注解就行了。這一章講述如何在Spring mvc下去接入微信。一、接入微信需要一個(gè)公網(wǎng)IP,這里我們使用的是ngrock內(nèi)網(wǎng)穿透工具。運(yùn)行-cmd,進(jìn)入ngrock解壓目錄,輸入命令 ngrok-subdomain xpeng -config= 8。80其中yxpeng是可以自己配置的子域名,8080端口通常設(shè)置為你的項(xiàng)目運(yùn)行Tuinne 1 Rtdtu苜UersianFaruardingF

22、orwardIngUcb Interface tt CannAvg Conn TimeHTTP RequestsGET Zwec hat/chec kzyxp GET /uec hat/c hec k/yxp GET Zue e hat/c heckxyxp GET /GFT ZFau icnn - ico(Ctr-L-*-C 七。quit r 1.7/1.7littp:/yxpeng.Im- -> 127.0.B. 1littps :ZZ5xpens.limatm . can -127.0. 9.1: S080=4640656661.24ns2602S02002009

23、RI1二、與用servlet接入微信一樣的,我們需要接受到微信后臺通過get請求傳過來的幾個(gè)參數(shù)。首先,寫了一個(gè) model,其中封裝了這四個(gè)參數(shù)。package/* 微信接入校驗(yàn)信息model* Created by Administrator on 2016/11/8 0008.* /public classCheckModel private String signature;private Long timestamp;private Long nonce;private String echostr;public String getSignature() return signat

24、ure;public void setSignature(String signature) =signature;public Long getTimestamp() return timestamp;public void setTimestamp(Long timestamp) =timestamp;public Long getNonce() return nonce;public void setNonce(Long nonce) =nonce;創(chuàng)建一個(gè)controller類,其中添加一個(gè) validate方法,用來接收這個(gè) model并進(jìn) 行處理在tokenService中,分離出

25、這四個(gè)參數(shù),然后對 token,timestamp和nonce這三 個(gè)參數(shù)進(jìn)行字典排序,然后進(jìn)行 SHA1加密,將密文與signature對比,如果相同就 返回 echostr.package import importimport import import /* Created by Administrator on 2016/11/8 0008.*/Servicepublic classTokenServiCe /* 微信接入數(shù)據(jù)驗(yàn)證* param wxToken* param tokenModel* return*/Transactionalpublic String validate

26、(String wxToken, CheckModel tokenModel)String signature = ()Long timestamp =();Long nonce =()String echostr =();if(signature!=null&&timestamp!= null&nonce!二null) String str = wxToken, timestamp+"", nonce+"”; (str); oLowerCase()基本配置G 基本配置/延寫服務(wù)器配置請?zhí)顚懡涌谂渲眯畔此信息需要傷擁有自己的服資器窗源.埴

27、寫的URL需要正確響應(yīng)撤信發(fā)送的Token蕤證,請閱i雌人指南.URLhttp:/yxpeng.h mdtmom/wec ha t/check/yxp必須以Mtp:或https:/班頭,分別支持80端口和44g瑞.Tokenyxp必須為英文且澈字,長度為3T2字符.什么是Tokon ?隨機(jī)生成0-9.EncodingAESKeyL5FO6cvJrVG4F7PFQOruQjjpwiy6ZQxGVxnLTIJH9p 43 /43消息加密密鑰由43位字符組成,可隨機(jī)修改.字符范圍為A-乙a-z 什么是 Encoding AES Key ?涓息加電方式請根據(jù)業(yè)務(wù)需要r選擇消息加郵國類型,啟用后符立即生

28、效明文歸;明文模式下r不使用消息體加解密功能,安全系數(shù)較低薪容福式in £. Ji* r r- nU, ” ,ii - j rTTnr" -Tr tit,一+ " = :username"),NamedQuery(name = "getUsernamePasswordToken", query = "select new from User u where u." + + " = :username")(2)在interface中定義與對應(yīng)的方法public interface UserRepo

29、sitory extends JpaRepository<User, Long> List<User> findByLastname(String lastname);User findByEmailAddress(String emailAddress); 使用Query自定義查詢(Spring Data提供的) 這種查詢可以聲明在 Repository方法中,擺脫像命名查詢那樣的約束,將查詢直接在相應(yīng)的 接口方法中聲明,結(jié)構(gòu)更為清晰,這是 Spring data的特有實(shí)現(xiàn)。例如:public interface UserRepository extends JpaR

30、epository<User, Long> Query("select u from User u where = 1")|User findByEmailAddress(String emailAddress);Query與Modifying執(zhí)行更新操作這兩個(gè)annotation 一起聲明,可定義個(gè)性化更新操作,例如只涉及某些字段更新時(shí)最為常用, 示例如下:ModifyingQuery("update User u set = 1 where = 2")int setFixedFirstnameFor(String firstname, S

31、tring lastname);索引參數(shù)與命名參數(shù)(1)索引參數(shù)如下所示,索引值從1開始,查詢中" X”個(gè)數(shù)需要與方法定義的參數(shù)個(gè)數(shù)相一致,并且順序也要一致ModifyingQuery("update User u set = 1 where = 2")int setFixedFirstnameFor(String firstname, String lastname);(2)命名參數(shù)(推薦使用這種方式)可以定義好參數(shù)名,賦值時(shí)采用Param("參數(shù)名"),而不用管順序。如下所示:public interface UserRepository

32、extends JpaRepository<User, Long> Query("select u from User u where = :firstname or = :lastname") User findByLastnameOrFirstname(Param("lastname") String lastname, Param("firstname") String firstname);4 . Transactionality (事務(wù))操作單個(gè)對象的事務(wù)Spring Data提供了默認(rèn)的事務(wù)處理方式,即所有的查詢均聲明為只讀事務(wù),對于持久化,更新

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論