实现以最快速度搭建springboot后台web项目并连通数据库实现控制层与服务层与dao层的select查询...
背景
Servlet的出現
上世紀90年代,隨著Internet和瀏覽器的飛速發展,基于瀏覽器的B/S模式隨之火爆發展起來。最初,用戶使用瀏覽器向WEB服務器發送的請求都是請求靜態的資源,比如html、css等。??但是可以想象:根據用戶請求的不同動態的處理并返回資源是理所當然必須的要求。
servlet的定義
- Servlet is a technology which is used to create a web application. servlet是一項用來創建web application的技術。
- Servlet is an API that provides many interfaces and classes including documentation. servlet是一個提供很多接口和類api及其相關文檔。
- Servlet is an interface that must be implemented for creating any Servlet.servlet是一個接口,創建任何servlet都要實現的接口。
- Servlet is a class that extends the capabilities of the servers and responds to the incoming requests. It can respond to any requests. servlet是一個實現了服務器各種能力的類,對請求做出響應。它可以對任何請求做出響應。
- Servlet is a web component that is deployed on the server to create a dynamic web page.servlet是一個web組件,部署到一個web server上(如tomcat,jetty),用來產生一個動態web頁面
servlet的歷史
| 版本 | 日期 | JAVA EE/JDK版本 | 特性 |
| Servlet 4.0 | 2017年10月 | JavaEE 8 | HTTP2?[1]? |
| Servlet 3.1 | 2013年5月 | JavaEE 7 | Non-blocking I/O, HTTP protocol upgrade mechanism |
| Servlet 3.0 | 2009年12月 | JavaEE 6, JavaSE 6 | Pluggability, Ease of development, Async Servlet, Security, File Uploading |
| Servlet 2.5 | 2005年10月 | JavaEE 5, JavaSE 5 | Requires JavaSE 5, supports annotation |
| Servlet 2.4 | 2003年11月 | J2EE 1.4, J2SE 1.3 | web.xml uses XML Schema |
| Servlet 2.3 | 2001年8月 | J2EE 1.3, J2SE 1.2 | Addition of Filter |
| Servlet 2.2 | 1999年8月 | J2EE 1.2, J2SE 1.2 | Becomes part of J2EE, introduced independent web applications in .war files |
| Servlet 2.1 | 1998年11月 | 未指定 | First official specification, added RequestDispatcher, ServletContext |
| Servlet 2.0 | ? | JDK 1.1 | Part of Java Servlet Development Kit 2.0 |
| Servlet 1.0 | 1997年6月 | ? | ? |
普通servlet實現頁面訪問(https://www.cnblogs.com/davidwang456/p/10297476.html)
1.1 實例1:使用web.xml實現一個http服務
1.2 編程方式實現一個http服務請求
2.spring mvc實現頁面訪問
? 2.1 web.xml方式
? 2.2 編碼方式
3.spring boot
繼承了spring mvc的框架,實現SpringBootServletInitializer,然后controller
總結:
1.servlet的本質沒有變化,從web框架的發展來看,web框架只是簡化了開發servlet的工作,但還是遵循servlet規范的發展而發展的。
2.servlet的歷史發展,從配置方式向編程方式到自動配置方式發展
3.spring mvc框架的分組:root和child(可以有多個dispatcherservlet),多個child可以共享root,child直接不共享
Java 發展史
Java是由Sun Microsystems公司于1995年5月推出的Java面向對象程序設計語言和Java平臺的總稱。由James Gosling和同事們共同研發,并在1995年正式推出。
Java分為三個體系:
JavaSE(J2SE)(Java2 Platform Standard Edition,java平臺標準版)
JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平臺企業版)
JavaME(J2ME)(Java 2 Platform Micro Edition,java平臺微型版)。
2005年6月,JavaOne大會召開,SUN公司公開Java SE 6。此時,Java的各種版本已經更名以取消其中的數字”2”:J2EE更名為Java EE, J2SE更名為Java SE,J2ME更名為Java ME。
JAVA 語言歷史近二十年, 已發展成為人類計算機史上影響深遠的編程語言.
JAVA 語言所崇尚的開源、自由等精神, 吸引了全世界無數優秀的程序員.
事實是, 從人類有史以來, 從來沒有一門編程語言能吸引這么多的程序員, 也沒有一門編程語言能衍生出如此之多的開源框架.
JAVA 語言是一門非常純粹的面向對象編程語言, 它吸收了 C++ 語言的各種優點, 又摒棄了 C++ 里難以理解的多繼承、指針等概念, 因此 JAVA 語言具有功能強大和簡單易用兩個特征.
從某種程度上來看, 學精了 JAVA 語言的相關方面, 相當于系統地學習了軟件開發相關知識, 而不是僅僅學完了一門編程語言.
JAVA 三個版本
J2SE: 整個 JAVA 技術的核心和基礎, 它是 J2ME 和 J2EE 編程的基礎.
J2ME: 主要用于控制移動設備和信息家電等有限存儲的設備.
J2EE: JAVA 技術中應用最廣泛的部分, J2EE 提供了企業應用開發相關的完整解決方案.
JAVA 三類API
核心API: 基本API, JAVA核心類庫.
可選API: Sun公司為JDK提供的擴充API, 這些API因平臺的不同而不同.
特殊API: 用于滿足特殊要求的API. 如用于JCA和JCE的第三方加密類庫.
Jsp的出現
?servlet誕生后,sun公司很快發現servlet編程很繁瑣,1)servlet代碼有大量冗余代碼,out輸出就得寫上百遍;2)開發servlet必須精通網頁前端和美工,你得非常不直觀的在Servlet中寫前端代碼,這使得實現各種頁面效果和風格非常困難。
?因此,sun公司借鑒 微軟的asp,正式推出了jsp(servlet1.1)。采用HTML語言直接生成界面,在界面中使用<% %>腳本標識嵌入Java代碼
一個簡單的jsp例子
<html><head><title>測試</title></head><body>第一階段<% String str = “test” ; out.println(str); %></body> </html>倡導了MVC思想的servlet版本servlet1.2出現------------jsp+javabean+servlet
?jsp出現后,也存在問題,1)前端開發人員需要看大量他看不懂的后端代碼;2)同樣,servlet開發人員也在復雜的前端代碼中找到其能寫servlet代碼的地方
?所以,MVC思想的JSP+JavaBean+Servlet誕生了
?JSP(V):JSP完成輸入和輸出,主要使用HTML標簽和JSP標簽
?Servlet(C):主要完成控制,接收請求,調用業務處理(JavaBean),根據調用的結果找到一個JSP頁面對用戶進行響應
JavaBean(M):完成所有的處理過程
框架階段
?倡導了MVC思想的jsp+javabean+servlet出現,也存在問題:1)jsp頁面中嵌入了很多java代碼,使得結構很亂;2)對于大型項目,servlet過多,轉向頻繁,流程,配置等不易集中管理,因而出現了struts
Struts的出現
2001年6月,struts1.0出現,struts針對jsp推出了一套struts標簽,從而使得jsp中沒有了Java代碼,結構清晰,功能強大。針對servlet,它提供了Action類來代替了servlet,這個Action類具有servlet的功能,并且能夠進行一些請求過濾和自動轉碼的功能。
Spring的出現
原本已經開起來很完美了,但是又有一個問題,就是我們在Action調用DAO、Java bean等對象的時候都需要在自身代碼中構建它們的對象來使用,這樣增加了程序的耦合性,這與我們:“高內聚、松耦合”的思想不符合,那么怎么解決這個問題呢?因而出現了Spring框架。
Spring框架有兩大功能:IOC(控制反轉)和AOP(面向切面的編程),其中IOC就是說:當一個類中想要調用另外一個類的對象時,不需要再通過new 關鍵字來創建,而是由Spring框架來負責:創建、分配和管理,從而降低了程序中的耦合性。而AOP可以用來做一些日志的打印和輸出,用于提示程序執行過程中的一些具體信息等。
注:Spring是一個開源框架,Spring是于2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》。Spring是為了解決企業級應用開發的復雜性而創建的,使用Spring可以讓簡單的JavaBean實現之前只有EJB才能完成的事情。但是Spring不僅僅局限于服務器端開發,任何Java應用都能在簡單性、可測試性和松耦合性等方面從Spring中獲益。Spring是如何簡化Java開發的:為了降低Java開發的復雜性,Spring采用了以下4種關鍵策略:1、基于POJO的輕量級和最小侵入性編程;2、通過依賴注入(DI)和面向接口實現松耦合;3、基于切面(AOP)和慣例進行聲明式編程;4、通過切面和模版減少樣式代碼;
SpringMVC的出現
最后struts和Spring的整合,由于每一個bean都要在Spring中注冊,每一個URL都要在struts配置文件中配置。當bean很多和URL對應的請求很多的時候,配置文件無疑會是很龐大的,這個就會使得配置起來很麻煩的費力。那么還有沒有更好的辦法使得能夠結合Spring的功能和struts的功能,但是又可以使配置文件不會批量的增加?因而SpringMVC出現了
SpringMVC通過“基于注解”的方式代替了struts,并且通過Controller類來代替和實現了Action的功能。由于是基于注解的,所以很多的配置信息放在了Controller類中配置,從而降低了.xml文件的配置復雜度。
java—三大框架
Spring Boot 出現之前,我們常說的三大框架是SpringMVC Spring Hibernate(SSH), SpringMVC Spring Mybatis(SSM)。
java常用的框架介紹
https://www.cnblogs.com/byqh/p/5595384.html
maven
Maven是Java平臺下的一款項目構建和依賴管理的自動化管理工具,將我們的源代碼、配置文件變成可執行的war包或者jar包。
maven的優點
? 1.在平時我們開發項目時,一般都是一個項目就是一個工程。我們劃分模塊時,都是使用package來進行劃分。但是,當項目很大時,有很多子模塊時,即使是package來進行劃分,也是讓人眼花繚亂,所以項目非常大時,可借助Maven將一個項目拆分成多個工程,最好是一個模塊對應一個工程,利于分工協作。而且模塊之間還是可以發送消息的。
? 2.同一項目的jar包 復制和粘貼到WEB/INF/lib下。問題:同樣的jar包重復出現在不同的工程中,一方面浪費空間,同時也讓工程臃腫。但是借助Maven,可將jar包僅僅保存在“倉庫”中,有需要該文件時,就引用該文件接口,不需要復制文件過來占用空間。
? 3.如果jar包都到各個官網網站下載,會浪費很多時間,而且可能不全,但是借助Maven可以以規范的方式下載jar包,因為所有的知名框架或第三方工具的jar包已經按照統一的規范存放到了Maven的中央倉庫中。
? 4.問題:一個jar包依賴的其他jar包可能沒導入到項目而導致項目跑不起來,但是Maven會自動將你要加入到項目中的jar包導入,不僅導入,而且還會將該jar包所依賴的jar包都自動導入進來。
SpringBoot
- 簡化Spring應用開發的一個框架
- 整個Spring技術棧等的一個大整合
- 將J2EE開發的一站式解決方案
-
特點:
- 創建獨立的Spring應用程序
- 內嵌Tomcat、Jetty或者Undertow(無需單獨部署war文件)
- 開箱即用,提供各種默認配置來簡化項目配置
- 沒有冗余的代碼生成也不需要XML配置
- 盡可能的自動化配置Spring以及第三方庫
- 提供生產監控功能,例如metrics(指標)、health checks(運行狀況檢查)和externalized configuration(外部配置)
什么是SpringBoot?
在使用傳統的Spring去做Java EE(Java Enterprise Edition)開發中,大量的 XML 文件存在于項目之中,導致JavaEE項目變得慢慢笨重起來,,繁瑣的配置和整合第三方框架的配置,導致了開發和部署效率的降低。
Spring Boot 并不是用來替代 Spring 的解決方案,而是和 Spring 框架緊密結合用于提升 Spring 開發者體驗的工具。同時它集成了大量常用的第三方庫配置,Spring Boot應用中這些第三方庫幾乎可以是零配置的開箱即用(out-of-the-box),大部分的 Spring Boot 應用都只需要非常少量的配置代碼(基于 Java 的配置),開發者能夠更加專注于業務邏輯。
為什么學習SpringBoot
1.從官方來看
2.從Spring的優點來看
https://blog.csdn.net/qq_32595453/article/details/81141643
①良好的基因?
因為SpringBoot是伴隨著Spring 4.0而生的,boot是引導的意思,也就是它的作用其實就是在于幫助開發者快速的搭建Spring框架,因此SpringBoot繼承了Spring優秀的基因,在Spring中開發更為方便快捷。
②簡化編碼
比如我們要創建一個 web 項目,使用 Spring 的朋友都知道,在使用 Spring 的時候,需要在 pom 文件中添加多個依賴,而 Spring Boot 則會幫助開發著快速啟動一個 web 容器,在 Spring Boot 中,我們只需要在 pom 文件中添加如下一個 starter-web 依賴即可。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency>③簡化配置
Spring 雖然使Java EE輕量級框架,但由于其繁瑣的配置,一度被人認為是“配置地獄”。各種XML、Annotation配置會讓人眼花繚亂,而且配置多的話,如果出錯了也很難找出原因。Spring Boot更多的是采用 Java Config 的方式,對 Spring 進行配置。
④簡化部署
在使用 Spring 時,項目部署時需要我們在服務器上部署 tomcat,然后把項目打成 war 包扔到 tomcat里,在使用 Spring Boot 后,我們不需要在服務器上去部署 tomcat,因為 Spring Boot 內嵌了 tomcat,我們只需要將項目打成 jar 包,使用?java -jar xxx.jar一鍵式啟動項目。
另外,也降低對運行環境的基本要求,環境變量中有JDK即可。
⑤簡化監控
我們可以引入 spring-boot-start-actuator 依賴,直接使用 REST 方式來獲取進程的運行期性能參數,從而達到監控的目的,比較方便。但是 Spring Boot 只是個微框架,沒有提供相應的服務發現與注冊的配套功能,沒有外圍監控集成方案,沒有外圍安全管理方案,所以在微服務架構中,還需要 Spring Cloud 來配合一起使用。
從未來發展趨勢看
微服務是未來發展的趨勢,項目會從傳統架構慢慢轉向微服務架構,因為微服務可以使不同的團隊專注于更小范圍的工作職責、使用獨立的技術、更安全更頻繁地部署。而 繼承了 Spring 的優良特性,與 Spring 一脈相承,而且 支持各種REST API 的實現方式。Spring Boot 也是官方大力推薦的技術,可以看出,Spring Boot 是未來發展的一個大趨勢。
?
JavaWeb
在Sun的Java Servlet規范中,對Java Web應用作了這樣定義:“Java Web應用由一組Servlet、HTML頁、類、以及其它可以被綁定的資源構成。它可以在各種供應商提供的實現Servlet規范的 Servlet容器 中運行。”
Java Web應用中可以包含Servlet、JSP、實用類、靜態文檔如HTML、圖片等描述Web應用的信息(web.xml)?https://www.cnblogs.com/albertrui/p/8427661.html
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?JavaWeb前景
Java開發的市場現狀
今天的“Java”作為所有編程語言中最熱門技術,可以說它無處不在,目前全球有著數十億的設備正在運行著java,很多服務器程序都是用java編寫,用以處理每天超過數以千萬的數據。
無論是手機軟件、手機Java游戲還是電腦軟件,你的每一次購物到每一筆支付成功,都離不開Java,越來越多的企業也正采用Java語言開發網站,而在所有程序員中,Java開發工程師就占據20%的比例。
從國內排名靠前網站的主要開發語言,也可以看出Java在各大開發語言中的地位。
從圖表中不難看出,大部分企業都用Java作為語言架構
這也不難理解,為什么Java現在這么火爆,吸引越來越多的人學習,根本原因,還是因為企業對Java的認可和應用。
Java應用領域
網站:主要適用Java EE開發(java的企業級開發),阿里巴巴、淘寶、支付寶、一號店、網易、搜狐、大眾點評網、驢媽媽、人人網、去哪兒、網銀、電商、YY PC端、等等、、、
大型企業級應用;主要食用JAVAEE,比如企業管理系統
移動互聯網:AndroidAPP 開發應用
最典型應用: (1)有關通信及網絡的企業:移動、聯通、電信、網通主要的信息化都是JAVA (2)有關金融行業的大型企業,所有的銀行、證券公司,比如工商銀行、建設銀行(3)大型管理系統,如:供應鏈、客戶管理系統、、、 (4)電子政務,主要使用JAVA EE,相關的政府部門絕大多數的信息化系統JAVA開發的 (5)游戲,很多手機游戲都是用java開發的 (6)嵌入式設備消費類電子產品,主要用JAVA ME,無線手持設備、通信終端、醫療設備、信息家電(如數字電視、機頂盒、電冰箱)、汽車電子設備等是比較熱門的java應用領域,這方面的應用例子有中國聯通CDMA 1X網絡中基于java技術的無線
人才需求量對比
Java市場人才需求量:
......
https://blog.csdn.net/weixin_38465623/article/details/80775799
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SpringBoot的web項目搭建
回到題目,如何以最快速度搭建springboot后臺項目并連通數據庫實現控制層與服務層與dao層的select查詢呢?
接下來會以圖文操作流程來一步步演示:
使用IntelliJ IDEA軟件工具(付費版Ultimate),如下圖所示
打開軟件,如下圖所示
創建新項目后,如下圖所示,于左側欄選擇Spring Initializr,再選擇jdk15,沒有先Download JDK,提前配好java環境變量哦
選擇下一步,如下圖所示輸入好maven的GroupID和ArtifactID,選擇Maven Project,language選擇java,packaging打包方式選擇jar,java版本選擇15,package寫com.project就好,desciption描述一下項目用途等等做下備注
輸入完之后,點擊下一步,下圖所示,于左側欄選擇web,然后我們將spring web勾上
下圖所示,于左側欄選擇Template Engines,然后我們將Thymeleaf勾上,然后點擊下一步
接著完成項目創建,下圖所示
下圖所示,進入到了IntelliJ IDEA里,左側是剛剛我們創建的名稱為web的javaweb項目,右側是maven,中間是代碼區域,記得進去時允許maven自動下載包
接著我展開web項目文件夾看到如下文件列表
此時我們展開src文件夾,雙擊test文件夾
直到打開到類,我們雙擊WebApplicationTests類,打開了類后我們看到測試的程序入口代碼,我們想要試試可不可以運行可以這樣做
鼠標懸停在下圖所示這里,出現run test提示,然后我們單擊鼠標左鍵,便可運行程序測試,可是contextLoads方法里面沒有代碼,我們總要寫些什么,一般就寫System.out.println("hello world"),然后我們跑起來
我們看到控制臺輸出了"hello world",說明測試程序跑了起來
同樣的,我們的預期目標是運行javaweb項目,然后在瀏覽器端我們輸入一個地址訪問到一個網站,當然這個網站是任意內容,是由后臺傳來html,css,js,圖片等資源,我們可以在這個網頁中上傳數據到后臺服務器還可以獲取后臺的數據,比如如果要獲取后臺服務器的數據,那么服務器的數據其實來自于數據庫,也就是說服務器先從數據庫取出數據再將數據轉回來到前端,我們的網頁接收到之后便可以呈現出來。
這個網頁可以是任意網站,里面包含任意的內容,這個服務器可以是我們的個人PC也可以是租的服務器,我們可以定義任何的數據(比如表單、圖片)上傳到服務器,也可以用向服務器發起任意允許的請求,甚至我們還可以實現內網穿透,即不只限于局域網,讓在互聯網上沖浪的任何人都可以輸入地址查找并進入到我們的網站,是的,任何一個人只要連上了互聯網都可以訪問得到這個網站,也就是說到山區手機連個信號打開瀏覽器輸入個url地址便可以訪問得到我們的網站。
那我們要怎么實現呢,我說過了,這個是以最快的速度搭建的javaweb項目,非常的精簡有效率...
第一步,我們先找到web項目的主程序入口main函數
第二步,實現網頁訪問
提問我們如何在電腦瀏覽器上輸入一段url地址便可訪問到一個網站呢?這個網站是放到web項目之中的,那放到哪里呢?如何服務器跑起來的后臺程序接收到瀏覽器的請求之后,將這個網站首頁資源返回去到游客的瀏覽器端再由瀏覽器處理呈現出來,便可看到網站,具體網站寫了什么,自己可以隨意寫,首頁要掌握html的知識和語言編寫,css樣式和java腳本語言,當然這里指的就是靜態頁面html5的。
文章一開始就提到了Servlet,為什么側重這個呢,因為瀏覽器發起的后臺請求,程序要接收到,首先交由Servlet處理,就類似個訪問入口的關卡一樣,并且是基于這個技術實現的,記得這篇文章之中有這句話:"servlet的本質沒有變化,從web框架的發展來看,web框架只是簡化了開發servlet的工作,但還是遵循servlet規范的發展而發展的"。
那么在這個項目里面怎么實現Servlet呢,有javaweb編程技術和經驗的會想到SpringMVC的@controller注解來快速實現(相關知識:https://www.iteye.com/blog/elim-1753271)
也就是瀏覽器的訪問會進入到@controller所注解的類,再有相應的方法來執行返回網頁資源,然后我們就可以看到頁面了。
那么要怎么寫代碼呢?跟著
上圖所示,我們新建個java類,然后我們可以給class這樣起名,叫做controller.ComController,然后回車鍵enter確定
我們看到了ComController類,這個類屬于在javaweb中被稱為的控制層,接下來我們瀏覽器的請求先進過這個控制層,我們在ComController類上面加一個注解@Controller
如下圖,在輸入@Controller的一部分@Contro之后我們看到工具給的提示,默認導入第一行的包我們按回車鍵
下圖,我們看到注解導入了進來,ComController類上有了@Controller注解,接下來我們為控制器指定處理的URL請求,我們先定義一個方法visitTheWebsite,再于visitTheWebsite方法上加一個注解@RequestMapping
之后我們看到下圖所示,這時我們需要定義一個瀏覽器請求的地址,這里我們寫個根路徑“/”就行
下圖,寫好之后我們就可以通過url請求進入到方法體之中了,我們可以嘗試一下可不可以進去,所以我們在方法里面寫個System.out.println("歡迎訪問網站")
下圖,寫好之后我們就來嘗試一下瀏覽器請求,看看控制臺有沒有輸出"歡迎訪問網站"
然后要怎么嘗試呢,首先我們先將java程序跑起來才行,怎么跑起來呢,找到入口函數,即main函數,如下圖我們在左側欄找到WebApplication類雙擊進入代碼區,點擊綠色按鈕運行
然后控制臺滑下去我們看到Tomcat started on port(s): 8080 (http) with context path ''的提示(下圖),表明Tomcat啟動部署并運行了javaweb項目程序,并且我們還知道port訪問端口為8080 ,然后我們可以打開瀏覽器嘗試可不可以訪問進入到visitTheWebsite方法里面
打開瀏覽器(下圖),在瀏覽器地址欄我們輸入localhost:8080,按回車鍵,我們會看到Whitelabel Error Page的提示,回頭看看,我們是不是要訪問一個網站,但是我們只是指定了請求地址和執行的方法,我們并沒有指定任何一個網站頁面資源。可是回到剛才的,這個瀏覽器的請求有沒有進入到控制層ComController類下面的visitTheWebsite并執行相應的代碼呢,如果有說明請求進入到了后臺程序,我們便可以自己寫相關的代碼功能去做事情啦!
所以我們驗證一下,看看IntelliJ IDEA的控制臺(下圖),我們會看到報錯信息,沒事,我們在控制臺用鼠標滾輪滑上去
直到劃到這里,“歡迎訪問網站",所以說瀏覽器的請求已經到了后臺程序的方法體里面了,因為程序是接著執行的,想必就是因為return "";這里報的錯了
接下來大家可以猜到這里的return "",其實雙引號里面寫的是返回的網頁頁面的路徑,路徑有默認起始的文件夾,也就是網頁資源存放的文件夾的路徑地址,那么能不能猜到網頁資源應當放在哪里呢,默認文件夾是哪個?是的,沒錯我們看到下方有個resources的文件夾,resources顧名思義就是資源的意思,我們在templates文件夾下創建一個html文件,即我們的網頁資源。
起個名字叫”home“(下圖),按回車鍵
接下來我們進入到html頁面代碼區了,熟悉前端的小伙伴可以任意寫自己的網站內容,比如我們可以在body標簽下寫上<h1>歡迎來到網站首頁</h1>,我們還可以在head標簽里面引入我們常用的jquery資源
下圖這是我們寫好的網站,感興趣的小伙伴可以自由嘗試往里面寫自己想寫的代碼
接下來我們回到控制層的ComController類,我們將return "";改為return "home";(下圖)
然后我們停止并重新運行主程序
下圖我們看到程序已經程序跑起來了,然后我在瀏覽器端嘗試請求一下,同樣輸入localhost:8080
猜猜這次我們看到什么了,是的,恭喜網站成功訪問了,如果是第一次玩應該很欣喜啦!
我們打開瀏覽器的控制臺(F12),來到Console這里(下圖)
我們可以在控制臺輸入一個命令檢查一下剛才的jquery有沒有導入進去,我們寫console.log($),然后回車,會看到(下圖)
沒錯,輸出的function函數就是jquery的$函數,我們可以點擊這個函數瞧瞧,進入到Sources欄,我們可以看到jquery的源碼,其實這里面是存放前臺的文件資源目錄的地方(就是后臺傳給前臺的資源存放處),可以查看網站的資源,比如我們可以尋找一下該網站的html文件在哪里
我們找到了網頁的html文件,當然如果網站有眾多資源比如圖片音樂字體html文件css文件js文件等等都可以在這里找(下圖)
這樣我就以簡潔明了和簡短的代碼帶大家以最快的速度構建了一個javaweb的項目,實現了后臺網站資源傳輸到前端瀏覽器并被解析給游客瀏覽到網頁內容的功能,至此我們成功搭建了一個web服務器,用的是個人PC。
但這個是只有局域網才可以看到。
好了,接下來大家還想聽什么呢,是的,我們還沒有操作到數據庫呢。其實剛才這個相當于是個靜態網站,里面的內容都是事先預定的,比如我已經往里面寫了我想要的文章或者展示圖片等。
然后講講數據庫的操作吧,當然這個也是最最快速的啦
我們去到一個網站
https://hutool.cn/docs/#/
百度會查到hutool的介紹(
Hutool是一個小而全的Java工具類庫,通過靜態方法封裝,降低相關API的學習成本,提高工作效率,使Java擁有函數式語言般的優雅,讓Java語言也可以“甜甜的”。
Hutool中的工具方法來自每個用戶的精雕細琢,它涵蓋了Java開發底層代碼中的方方面面,它既是大型項目開發中解決小問題的利器,也是小型項目中的效率擔當;
Hutool是項目中“util”包友好的替代,它節省了開發人員對項目中公用類和公用工具方法的封裝時間,使開發專注于業務,同時可以最大限度的避免封裝不完善帶來的bug。
)
在hutool的文檔里面我們找到入門和安裝下面的文檔并選中它(下圖),提示我們應該粘貼一段配置到pom.xml文件里面,我們復制這一段配置
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.5.9</version> </dependency>回到IntelliJ IDEA工具,找到pom.xml文件,在某處插入剛才的一段配置信息(下圖)
插入好配置之后如下圖所示,但記得點擊第二步驟的maven更新導入Hutool包,導入好后我們就可以使用Hutool給我的許許多多的功能了,比如可以嘗試一下控制臺打印封裝-Console
hutool的使用嘗試,我們可以看到文檔的說明,然后在test程序里面測試看看
test測試環境下,我們在contextLoads方法里面寫Conso之后出現提示選擇第二個,導入hutool的cn.hutool.core.lang.Console包
然后我們可以嘗試輸出看看(下圖),一樣的,運行之后看控制臺
測試之后我們發現可以使用,如下圖所示
然后演示怎么操作數據庫
在hutool的文檔里面我們找到數據庫簡單操作-Db(下圖)
先在resources目錄下添加db.setting文件(下圖)
點擊確定后,會看到創建了該文件,然后我們粘貼這段配置進去
## db.setting文件url = jdbc:mysql://localhost:3306/test user = root pass = 123456## 可選配置 # 是否在日志中顯示執行的SQL showSql = true # 是否格式化顯示的SQL formatSql = false # 是否顯示SQL參數 showParams = true # 打印SQL的日志等級,默認debug,可以是info、warn、error sqlLevel = debug配置的信息寫對上,比如url = jdbc:mysql://localhost:3306/數據庫的名稱,user = 用戶名,pass = 密碼(下圖)
打開測試下數據庫連接
由上兩圖可知,正確的數據庫配置是
## db.setting文件url = jdbc:mysql://localhost:3306/all_user user = root pass = 123456## 可選配置 # 是否在日志中顯示執行的SQL showSql = true # 是否格式化顯示的SQL formatSql = false # 是否顯示SQL參數 showParams = true # 打印SQL的日志等級,默認debug,可以是info、warn、error sqlLevel = debug再嘗試操作數據庫之前我們還要引入MySQL JDBC驅動jar(下圖)
如下圖所示,配置好mysql jdbc驅動,并且maven成功更新該驅動之后,我們就可以嘗試對數據庫進行操作了
那么操作數據庫得代碼怎么寫呢,文檔滾輪往下滑動,找到查詢全部字段(下圖)
//user為表名 Db.use().findAll("user");那么這句代碼寫在哪里呢?在這之前我先新建service層和dao層(下圖)
建好之后,我們在服務層加上@Service注解,在dao層加上@Repository注解,如下兩圖所示
然后我先把dao層操作數據庫的代碼寫了,代碼是
package com.project.dao;import cn.hutool.db.Db; import cn.hutool.db.Entity; import org.springframework.stereotype.Repository;import java.sql.SQLException; import java.util.List;@Repository public class UserDao {public List<Entity> getUser() throws SQLException {//user為表名List<Entity> list = Db.use().findAll("user");return list;} }然后我再把服務層的代碼寫了,代碼是
package com.project.service;import com.project.dao.UserDao; import org.springframework.stereotype.Service;import javax.annotation.Resource; import java.sql.SQLException; import java.util.HashMap; import java.util.Map;@Service public class UserService {@Resourceprivate UserDao userDao;public Map getUserService() throws SQLException {Map<String, Object> map = new HashMap<>();map.put("data",userDao.getUser());map.put("state","請求成功");return map;} }最后我們再寫控制層,代碼是
package com.project.controller;import com.project.service.UserService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;import javax.annotation.Resource; import java.sql.SQLException; import java.util.Map;@Controller public class ComController {@Resourceprivate UserService userService;@RequestMapping("/")String visitTheWebsite(){System.out.println("歡迎訪問網站");return "home";}@RequestMapping("/getUser")@ResponseBodyMap getUser() throws SQLException {return userService.getUserService();} }?
寫好之后,我們現在可以用瀏覽器請求了,我們重新啟動程序。啟動成功(下圖)
然后我打開瀏覽器請求localhost:8080,會進到剛才的網站(下圖)
這時如果我們要操作數據庫就要訪問控制層的另一個接口(下圖)
@RequestMapping("/getUser")@ResponseBodyMap getUser() throws SQLException {return userService.getUserService();}代碼中"/getUser"代表訪問的路徑后綴,所以我們在localhost:8080后面加上"/getUser"變為localhost:8080/getUser,注意這里要加上@ResponseBody表明是返回數據而不是返回網頁,不然指定的是網站地址。服務層的UserService類已經注入進來了,使用userService對象的getUserService方法調用服務層的這段代碼,我們可以看到UserDao也注入進來了,userDao.getUser()調用dao層操作數據庫的代碼(下圖)
@Service public class UserService {@Resourceprivate UserDao userDao;public Map getUserService() throws SQLException {Map<String, Object> map = new HashMap<>();map.put("data",userDao.getUser());map.put("state","請求成功");return map;} }調用dao層操作數據庫的代碼,返回user表的List<Entity>集合,Entity已經封裝好,是個對象,可以直接返回前端網頁(下圖)
public List<Entity> getUser() throws SQLException {//user為表名List<Entity> list = Db.use().findAll("user");return list;}所最后控制層的getUser方法返回的是服務層的map對象userService.getUserService()(下圖)
@RequestMapping("/getUser")@ResponseBodyMap getUser() throws SQLException {return userService.getUserService();}分析完控制層、服務層、dao層這些代碼后,我們可以嘗試看看有沒有請求到數據并傳回json格式的數據到前端網頁
在瀏覽器輸入http://localhost:8080/getUser(下圖),看到數據庫的user表數據已經查出來了
對照下數據庫(下圖)
如果用ajax請求返回的數據進到回調函數即可正常處理。
至此,我講了如果極快速的搭建一個javaweb后臺項目,使用個人PC作為服務器,成功訪問網站資源、連通并操作數據庫還有前面的Servlet、java、springboot等等的介紹
PS:從早上寫到晚上10點了,終于完成了,如果大家有什么寶貴的建議請留言!謝謝!
再說一下,文章中提到的不只限于局域網,讓在互聯網上沖浪的任何人都可以輸入地址查找并進入到我們的網站,是的,任何一個人只要連上了互聯網都可以訪問得到這個網站,也就是說到山區手機連個信號打開瀏覽器輸入個url地址便可以訪問得到我們的網站。這個確實可以做到,不過這里不寫,這里已經完成了如何搭建一個java服務器后臺程序和網站的教程還有操作數據庫,估計可以算是比較有價值的了,這些是工作之余抽空摸索的,平時不做java開發,好像也難有機會,先到這里了,希望能夠幫助到大家,互相學習,祝各位工作順利,心想事成!!
項目源碼下載,云盤提取碼0sqw
總結
以上是生活随笔為你收集整理的实现以最快速度搭建springboot后台web项目并连通数据库实现控制层与服务层与dao层的select查询...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 次世代角色模型完整建模流程解析,这6款软
- 下一篇: 以信息化建设为抓手,推出职业病危害因素在