日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

实现以最快速度搭建springboot后台web项目并连通数据库实现控制层与服务层与dao层的select查询...

發(fā)布時間:2024/3/24 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现以最快速度搭建springboot后台web项目并连通数据库实现控制层与服务层与dao层的select查询... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景

Servlet的出現(xiàn)

上世紀(jì)90年代,隨著Internet和瀏覽器的飛速發(fā)展,基于瀏覽器的B/S模式隨之火爆發(fā)展起來。最初,用戶使用瀏覽器向WEB服務(wù)器發(fā)送的請求都是請求靜態(tài)的資源,比如html、css等。??但是可以想象:根據(jù)用戶請求的不同動態(tài)的處理并返回資源是理所當(dāng)然必須的要求。

servlet的定義

  • Servlet is a technology which is used to create a web application. servlet是一項用來創(chuàng)建web application的技術(shù)。
  • Servlet is an API that provides many interfaces and classes including documentation. servlet是一個提供很多接口和類api及其相關(guān)文檔。
  • Servlet is an interface that must be implemented for creating any Servlet.servlet是一個接口,創(chuàng)建任何servlet都要實現(xiàn)的接口。
  • Servlet is a class that extends the capabilities of the servers and responds to the incoming requests. It can respond to any requests. servlet是一個實現(xiàn)了服務(wù)器各種能力的類,對請求做出響應(yīng)。它可以對任何請求做出響應(yīng)。
  • Servlet is a web component that is deployed on the server to create a dynamic web page.servlet是一個web組件,部署到一個web server上(如tomcat,jetty),用來產(chǎn)生一個動態(tài)web頁面

servlet的歷史

版本日期JAVA EE/JDK版本特性
Servlet 4.02017年10月JavaEE 8HTTP2?[1]?
Servlet 3.12013年5月JavaEE 7Non-blocking I/O, HTTP protocol upgrade mechanism
Servlet 3.02009年12月JavaEE 6, JavaSE 6Pluggability, Ease of development, Async Servlet, Security, File Uploading
Servlet 2.52005年10月JavaEE 5, JavaSE 5Requires JavaSE 5, supports annotation
Servlet 2.42003年11月J2EE 1.4, J2SE 1.3web.xml uses XML Schema
Servlet 2.32001年8月J2EE 1.3, J2SE 1.2Addition of Filter
Servlet 2.21999年8月J2EE 1.2, J2SE 1.2Becomes part of J2EE, introduced independent web applications in .war files
Servlet 2.11998年11月未指定First official specification, added RequestDispatcher, ServletContext
Servlet 2.0?JDK 1.1Part of Java Servlet Development Kit 2.0
Servlet 1.01997年6月??

普通servlet實現(xiàn)頁面訪問(https://www.cnblogs.com/davidwang456/p/10297476.html)

1.1 實例1:使用web.xml實現(xiàn)一個http服務(wù)

1.2 編程方式實現(xiàn)一個http服務(wù)請求

2.spring mvc實現(xiàn)頁面訪問

? 2.1 web.xml方式

? 2.2 編碼方式

3.spring boot

繼承了spring mvc的框架,實現(xiàn)SpringBootServletInitializer,然后controller

總結(jié):

1.servlet的本質(zhì)沒有變化,從web框架的發(fā)展來看,web框架只是簡化了開發(fā)servlet的工作,但還是遵循servlet規(guī)范的發(fā)展而發(fā)展的。

2.servlet的歷史發(fā)展,從配置方式向編程方式到自動配置方式發(fā)展

3.spring mvc框架的分組:root和child(可以有多個dispatcherservlet),多個child可以共享root,child直接不共享

Java 發(fā)展史

Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計語言和Java平臺的總稱。由James Gosling和同事們共同研發(fā),并在1995年正式推出。

Java分為三個體系:
JavaSE(J2SE)(Java2 Platform Standard Edition,java平臺標(biāo)準(zhǔn)版)
JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平臺企業(yè)版)
JavaME(J2ME)(Java 2 Platform Micro Edition,java平臺微型版)。
2005年6月,JavaOne大會召開,SUN公司公開Java SE 6。此時,Java的各種版本已經(jīng)更名以取消其中的數(shù)字”2”:J2EE更名為Java EE, J2SE更名為Java SE,J2ME更名為Java ME。
JAVA 語言歷史近二十年, 已發(fā)展成為人類計算機(jī)史上影響深遠(yuǎn)的編程語言.
JAVA 語言所崇尚的開源、自由等精神, 吸引了全世界無數(shù)優(yōu)秀的程序員.
事實是, 從人類有史以來, 從來沒有一門編程語言能吸引這么多的程序員, 也沒有一門編程語言能衍生出如此之多的開源框架.

JAVA 語言是一門非常純粹的面向?qū)ο缶幊陶Z言, 它吸收了 C++ 語言的各種優(yōu)點, 又摒棄了 C++ 里難以理解的多繼承、指針等概念, 因此 JAVA 語言具有功能強(qiáng)大和簡單易用兩個特征.

從某種程度上來看, 學(xué)精了 JAVA 語言的相關(guān)方面, 相當(dāng)于系統(tǒng)地學(xué)習(xí)了軟件開發(fā)相關(guān)知識, 而不是僅僅學(xué)完了一門編程語言.
JAVA 三個版本
J2SE: 整個 JAVA 技術(shù)的核心和基礎(chǔ), 它是 J2ME 和 J2EE 編程的基礎(chǔ).
J2ME: 主要用于控制移動設(shè)備和信息家電等有限存儲的設(shè)備.
J2EE: JAVA 技術(shù)中應(yīng)用最廣泛的部分, J2EE 提供了企業(yè)應(yīng)用開發(fā)相關(guān)的完整解決方案.

JAVA 三類API

核心API: 基本API, JAVA核心類庫.
可選API: Sun公司為JDK提供的擴(kuò)充API, 這些API因平臺的不同而不同.
特殊API: 用于滿足特殊要求的API. 如用于JCA和JCE的第三方加密類庫.

Jsp的出現(xiàn)

?servlet誕生后,sun公司很快發(fā)現(xiàn)servlet編程很繁瑣,1)servlet代碼有大量冗余代碼,out輸出就得寫上百遍;2)開發(fā)servlet必須精通網(wǎng)頁前端和美工,你得非常不直觀的在Servlet中寫前端代碼,這使得實現(xiàn)各種頁面效果和風(fēng)格非常困難。

?因此,sun公司借鑒 微軟的asp,正式推出了jsp(servlet1.1)。采用HTML語言直接生成界面,在界面中使用<% %>腳本標(biāo)識嵌入Java代碼

一個簡單的jsp例子

<html><head><title>測試</title></head><body>第一階段<% String str = “test” ; out.println(str); %></body> </html>

倡導(dǎo)了MVC思想的servlet版本servlet1.2出現(xiàn)------------jsp+javabean+servlet

?jsp出現(xiàn)后,也存在問題,1)前端開發(fā)人員需要看大量他看不懂的后端代碼;2)同樣,servlet開發(fā)人員也在復(fù)雜的前端代碼中找到其能寫servlet代碼的地方

?所以,MVC思想的JSP+JavaBean+Servlet誕生了

?JSP(V):JSP完成輸入和輸出,主要使用HTML標(biāo)簽和JSP標(biāo)簽

?Servlet(C):主要完成控制,接收請求,調(diào)用業(yè)務(wù)處理(JavaBean),根據(jù)調(diào)用的結(jié)果找到一個JSP頁面對用戶進(jìn)行響應(yīng)

JavaBean(M):完成所有的處理過程

框架階段

?倡導(dǎo)了MVC思想的jsp+javabean+servlet出現(xiàn),也存在問題:1)jsp頁面中嵌入了很多java代碼,使得結(jié)構(gòu)很亂;2)對于大型項目,servlet過多,轉(zhuǎn)向頻繁,流程,配置等不易集中管理,因而出現(xiàn)了struts

Struts的出現(xiàn)

2001年6月,struts1.0出現(xiàn),struts針對jsp推出了一套struts標(biāo)簽,從而使得jsp中沒有了Java代碼,結(jié)構(gòu)清晰,功能強(qiáng)大。針對servlet,它提供了Action類來代替了servlet,這個Action類具有servlet的功能,并且能夠進(jìn)行一些請求過濾和自動轉(zhuǎn)碼的功能。

Spring的出現(xiàn)

原本已經(jīng)開起來很完美了,但是又有一個問題,就是我們在Action調(diào)用DAO、Java bean等對象的時候都需要在自身代碼中構(gòu)建它們的對象來使用,這樣增加了程序的耦合性,這與我們:“高內(nèi)聚、松耦合”的思想不符合,那么怎么解決這個問題呢?因而出現(xiàn)了Spring框架。

Spring框架有兩大功能:IOC(控制反轉(zhuǎn))和AOP(面向切面的編程),其中IOC就是說:當(dāng)一個類中想要調(diào)用另外一個類的對象時,不需要再通過new 關(guān)鍵字來創(chuàng)建,而是由Spring框架來負(fù)責(zé):創(chuàng)建、分配和管理,從而降低了程序中的耦合性。而AOP可以用來做一些日志的打印和輸出,用于提示程序執(zhí)行過程中的一些具體信息等。

注:Spring是一個開源框架,Spring是于2003 年興起的一個輕量級的Java 開發(fā)框架,由Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》。Spring是為了解決企業(yè)級應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的,使用Spring可以讓簡單的JavaBean實現(xiàn)之前只有EJB才能完成的事情。但是Spring不僅僅局限于服務(wù)器端開發(fā),任何Java應(yīng)用都能在簡單性、可測試性和松耦合性等方面從Spring中獲益。Spring是如何簡化Java開發(fā)的:為了降低Java開發(fā)的復(fù)雜性,Spring采用了以下4種關(guān)鍵策略:1、基于POJO的輕量級和最小侵入性編程;2、通過依賴注入(DI)和面向接口實現(xiàn)松耦合;3、基于切面(AOP)和慣例進(jìn)行聲明式編程;4、通過切面和模版減少樣式代碼;

SpringMVC的出現(xiàn)

最后struts和Spring的整合,由于每一個bean都要在Spring中注冊,每一個URL都要在struts配置文件中配置。當(dāng)bean很多和URL對應(yīng)的請求很多的時候,配置文件無疑會是很龐大的,這個就會使得配置起來很麻煩的費力。那么還有沒有更好的辦法使得能夠結(jié)合Spring的功能和struts的功能,但是又可以使配置文件不會批量的增加?因而SpringMVC出現(xiàn)了

SpringMVC通過“基于注解”的方式代替了struts,并且通過Controller類來代替和實現(xiàn)了Action的功能。由于是基于注解的,所以很多的配置信息放在了Controller類中配置,從而降低了.xml文件的配置復(fù)雜度。

java—三大框架

Spring Boot 出現(xiàn)之前,我們常說的三大框架是SpringMVC Spring Hibernate(SSH), SpringMVC Spring Mybatis(SSM)。

java常用的框架介紹

https://www.cnblogs.com/byqh/p/5595384.html

maven

Maven是Java平臺下的一款項目構(gòu)建和依賴管理的自動化管理工具,將我們的源代碼、配置文件變成可執(zhí)行的war包或者jar包。

maven的優(yōu)點

? 1.在平時我們開發(fā)項目時,一般都是一個項目就是一個工程。我們劃分模塊時,都是使用package來進(jìn)行劃分。但是,當(dāng)項目很大時,有很多子模塊時,即使是package來進(jìn)行劃分,也是讓人眼花繚亂,所以項目非常大時,可借助Maven將一個項目拆分成多個工程,最好是一個模塊對應(yīng)一個工程,利于分工協(xié)作。而且模塊之間還是可以發(fā)送消息的。

? 2.同一項目的jar包 復(fù)制和粘貼到WEB/INF/lib下。問題:同樣的jar包重復(fù)出現(xiàn)在不同的工程中,一方面浪費空間,同時也讓工程臃腫。但是借助Maven,可將jar包僅僅保存在“倉庫”中,有需要該文件時,就引用該文件接口,不需要復(fù)制文件過來占用空間。

? 3.如果jar包都到各個官網(wǎng)網(wǎng)站下載,會浪費很多時間,而且可能不全,但是借助Maven可以以規(guī)范的方式下載jar包,因為所有的知名框架或第三方工具的jar包已經(jīng)按照統(tǒng)一的規(guī)范存放到了Maven的中央倉庫中。

? 4.問題:一個jar包依賴的其他jar包可能沒導(dǎo)入到項目而導(dǎo)致項目跑不起來,但是Maven會自動將你要加入到項目中的jar包導(dǎo)入,不僅導(dǎo)入,而且還會將該jar包所依賴的jar包都自動導(dǎo)入進(jìn)來。

SpringBoot

  • 簡化Spring應(yīng)用開發(fā)的一個框架
  • 整個Spring技術(shù)棧等的一個大整合
  • 將J2EE開發(fā)的一站式解決方案
  • 特點:

  • 創(chuàng)建獨立的Spring應(yīng)用程序
  • 內(nèi)嵌Tomcat、Jetty或者Undertow(無需單獨部署war文件)
  • 開箱即用,提供各種默認(rèn)配置來簡化項目配置
  • 沒有冗余的代碼生成也不需要XML配置
  • 盡可能的自動化配置Spring以及第三方庫
  • 提供生產(chǎn)監(jiān)控功能,例如metrics(指標(biāo))、health checks(運行狀況檢查)和externalized configuration(外部配置)

什么是SpringBoot?

在使用傳統(tǒng)的Spring去做Java EE(Java Enterprise Edition)開發(fā)中,大量的 XML 文件存在于項目之中,導(dǎo)致JavaEE項目變得慢慢笨重起來,,繁瑣的配置和整合第三方框架的配置,導(dǎo)致了開發(fā)和部署效率的降低。

Spring Boot 并不是用來替代 Spring 的解決方案,而是和 Spring 框架緊密結(jié)合用于提升 Spring 開發(fā)者體驗的工具。同時它集成了大量常用的第三方庫配置,Spring Boot應(yīng)用中這些第三方庫幾乎可以是零配置的開箱即用(out-of-the-box),大部分的 Spring Boot 應(yīng)用都只需要非常少量的配置代碼(基于 Java 的配置),開發(fā)者能夠更加專注于業(yè)務(wù)邏輯。

為什么學(xué)習(xí)SpringBoot

1.從官方來看

2.從Spring的優(yōu)點來看

https://blog.csdn.net/qq_32595453/article/details/81141643

①良好的基因?

因為SpringBoot是伴隨著Spring 4.0而生的,boot是引導(dǎo)的意思,也就是它的作用其實就是在于幫助開發(fā)者快速的搭建Spring框架,因此SpringBoot繼承了Spring優(yōu)秀的基因,在Spring中開發(fā)更為方便快捷。

②簡化編碼

比如我們要創(chuàng)建一個 web 項目,使用 Spring 的朋友都知道,在使用 Spring 的時候,需要在 pom 文件中添加多個依賴,而 Spring Boot 則會幫助開發(fā)著快速啟動一個 web 容器,在 Spring Boot 中,我們只需要在 pom 文件中添加如下一個 starter-web 依賴即可。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency>

③簡化配置

Spring 雖然使Java EE輕量級框架,但由于其繁瑣的配置,一度被人認(rèn)為是“配置地獄”。各種XML、Annotation配置會讓人眼花繚亂,而且配置多的話,如果出錯了也很難找出原因。Spring Boot更多的是采用 Java Config 的方式,對 Spring 進(jìn)行配置。

④簡化部署

在使用 Spring 時,項目部署時需要我們在服務(wù)器上部署 tomcat,然后把項目打成 war 包扔到 tomcat里,在使用 Spring Boot 后,我們不需要在服務(wù)器上去部署 tomcat,因為 Spring Boot 內(nèi)嵌了 tomcat,我們只需要將項目打成 jar 包,使用?java -jar xxx.jar一鍵式啟動項目。

另外,也降低對運行環(huán)境的基本要求,環(huán)境變量中有JDK即可。

⑤簡化監(jiān)控

我們可以引入 spring-boot-start-actuator 依賴,直接使用 REST 方式來獲取進(jìn)程的運行期性能參數(shù),從而達(dá)到監(jiān)控的目的,比較方便。但是 Spring Boot 只是個微框架,沒有提供相應(yīng)的服務(wù)發(fā)現(xiàn)與注冊的配套功能,沒有外圍監(jiān)控集成方案,沒有外圍安全管理方案,所以在微服務(wù)架構(gòu)中,還需要 Spring Cloud 來配合一起使用。

從未來發(fā)展趨勢看

微服務(wù)是未來發(fā)展的趨勢,項目會從傳統(tǒng)架構(gòu)慢慢轉(zhuǎn)向微服務(wù)架構(gòu),因為微服務(wù)可以使不同的團(tuán)隊專注于更小范圍的工作職責(zé)、使用獨立的技術(shù)、更安全更頻繁地部署。而 繼承了 Spring 的優(yōu)良特性,與 Spring 一脈相承,而且 支持各種REST API 的實現(xiàn)方式。Spring Boot 也是官方大力推薦的技術(shù),可以看出,Spring Boot 是未來發(fā)展的一個大趨勢。

?

JavaWeb

在Sun的Java Servlet規(guī)范中,對Java Web應(yīng)用作了這樣定義:“Java Web應(yīng)用由一組Servlet、HTML頁、類、以及其它可以被綁定的資源構(gòu)成。它可以在各種供應(yīng)商提供的實現(xiàn)Servlet規(guī)范的 Servlet容器 中運行。”
Java Web應(yīng)用中可以包含Servlet、JSP、實用類、靜態(tài)文檔如HTML、圖片等描述Web應(yīng)用的信息(web.xml)?https://www.cnblogs.com/albertrui/p/8427661.html

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?JavaWeb前景

Java開發(fā)的市場現(xiàn)狀

今天的“Java”作為所有編程語言中最熱門技術(shù),可以說它無處不在,目前全球有著數(shù)十億的設(shè)備正在運行著java,很多服務(wù)器程序都是用java編寫,用以處理每天超過數(shù)以千萬的數(shù)據(jù)。

無論是手機(jī)軟件、手機(jī)Java游戲還是電腦軟件,你的每一次購物到每一筆支付成功,都離不開Java,越來越多的企業(yè)也正采用Java語言開發(fā)網(wǎng)站,而在所有程序員中,Java開發(fā)工程師就占據(jù)20%的比例。

從國內(nèi)排名靠前網(wǎng)站的主要開發(fā)語言,也可以看出Java在各大開發(fā)語言中的地位。

從圖表中不難看出,大部分企業(yè)都用Java作為語言架構(gòu)

這也不難理解,為什么Java現(xiàn)在這么火爆,吸引越來越多的人學(xué)習(xí),根本原因,還是因為企業(yè)對Java的認(rèn)可和應(yīng)用。

Java應(yīng)用領(lǐng)域

網(wǎng)站:主要適用Java EE開發(fā)(java的企業(yè)級開發(fā)),阿里巴巴、淘寶、支付寶、一號店、網(wǎng)易、搜狐、大眾點評網(wǎng)、驢媽媽、人人網(wǎng)、去哪兒、網(wǎng)銀、電商、YY PC端、等等、、、

大型企業(yè)級應(yīng)用;主要食用JAVAEE,比如企業(yè)管理系統(tǒng)

移動互聯(lián)網(wǎng):AndroidAPP 開發(fā)應(yīng)用

最典型應(yīng)用: (1)有關(guān)通信及網(wǎng)絡(luò)的企業(yè):移動、聯(lián)通、電信、網(wǎng)通主要的信息化都是JAVA (2)有關(guān)金融行業(yè)的大型企業(yè),所有的銀行、證券公司,比如工商銀行、建設(shè)銀行(3)大型管理系統(tǒng),如:供應(yīng)鏈、客戶管理系統(tǒng)、、、 (4)電子政務(wù),主要使用JAVA EE,相關(guān)的政府部門絕大多數(shù)的信息化系統(tǒng)JAVA開發(fā)的 (5)游戲,很多手機(jī)游戲都是用java開發(fā)的 (6)嵌入式設(shè)備消費類電子產(chǎn)品,主要用JAVA ME,無線手持設(shè)備、通信終端、醫(yī)療設(shè)備、信息家電(如數(shù)字電視、機(jī)頂盒、電冰箱)、汽車電子設(shè)備等是比較熱門的java應(yīng)用領(lǐng)域,這方面的應(yīng)用例子有中國聯(lián)通CDMA 1X網(wǎng)絡(luò)中基于java技術(shù)的無線

人才需求量對比

Java市場人才需求量:

......

https://blog.csdn.net/weixin_38465623/article/details/80775799

?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SpringBoot的web項目搭建

回到題目,如何以最快速度搭建springboot后臺項目并連通數(shù)據(jù)庫實現(xiàn)控制層與服務(wù)層與dao層的select查詢呢?

接下來會以圖文操作流程來一步步演示:

使用IntelliJ IDEA軟件工具(付費版Ultimate),如下圖所示

打開軟件,如下圖所示

創(chuàng)建新項目后,如下圖所示,于左側(cè)欄選擇Spring Initializr,再選擇jdk15,沒有先Download JDK,提前配好java環(huán)境變量哦

選擇下一步,如下圖所示輸入好maven的GroupID和ArtifactID,選擇Maven Project,language選擇java,packaging打包方式選擇jar,java版本選擇15,package寫com.project就好,desciption描述一下項目用途等等做下備注

輸入完之后,點擊下一步,下圖所示,于左側(cè)欄選擇web,然后我們將spring web勾上

下圖所示,于左側(cè)欄選擇Template Engines,然后我們將Thymeleaf勾上,然后點擊下一步

接著完成項目創(chuàng)建,下圖所示

下圖所示,進(jìn)入到了IntelliJ IDEA里,左側(cè)是剛剛我們創(chuàng)建的名稱為web的javaweb項目,右側(cè)是maven,中間是代碼區(qū)域,記得進(jìn)去時允許maven自動下載包

接著我展開web項目文件夾看到如下文件列表

此時我們展開src文件夾,雙擊test文件夾

直到打開到類,我們雙擊WebApplicationTests類,打開了類后我們看到測試的程序入口代碼,我們想要試試可不可以運行可以這樣做

鼠標(biāo)懸停在下圖所示這里,出現(xiàn)run test提示,然后我們單擊鼠標(biāo)左鍵,便可運行程序測試,可是contextLoads方法里面沒有代碼,我們總要寫些什么,一般就寫System.out.println("hello world"),然后我們跑起來

我們看到控制臺輸出了"hello world",說明測試程序跑了起來

同樣的,我們的預(yù)期目標(biāo)是運行javaweb項目,然后在瀏覽器端我們輸入一個地址訪問到一個網(wǎng)站,當(dāng)然這個網(wǎng)站是任意內(nèi)容,是由后臺傳來html,css,js,圖片等資源,我們可以在這個網(wǎng)頁中上傳數(shù)據(jù)到后臺服務(wù)器還可以獲取后臺的數(shù)據(jù),比如如果要獲取后臺服務(wù)器的數(shù)據(jù),那么服務(wù)器的數(shù)據(jù)其實來自于數(shù)據(jù)庫,也就是說服務(wù)器先從數(shù)據(jù)庫取出數(shù)據(jù)再將數(shù)據(jù)轉(zhuǎn)回來到前端,我們的網(wǎng)頁接收到之后便可以呈現(xiàn)出來。

這個網(wǎng)頁可以是任意網(wǎng)站,里面包含任意的內(nèi)容,這個服務(wù)器可以是我們的個人PC也可以是租的服務(wù)器,我們可以定義任何的數(shù)據(jù)(比如表單、圖片)上傳到服務(wù)器,也可以用向服務(wù)器發(fā)起任意允許的請求,甚至我們還可以實現(xiàn)內(nèi)網(wǎng)穿透,即不只限于局域網(wǎng),讓在互聯(lián)網(wǎng)上沖浪的任何人都可以輸入地址查找并進(jìn)入到我們的網(wǎng)站,是的,任何一個人只要連上了互聯(lián)網(wǎng)都可以訪問得到這個網(wǎng)站,也就是說到山區(qū)手機(jī)連個信號打開瀏覽器輸入個url地址便可以訪問得到我們的網(wǎng)站。

那我們要怎么實現(xiàn)呢,我說過了,這個是以最快的速度搭建的javaweb項目,非常的精簡有效率...

第一步,我們先找到web項目的主程序入口main函數(shù)

第二步,實現(xiàn)網(wǎng)頁訪問

提問我們?nèi)绾卧陔娔X瀏覽器上輸入一段url地址便可訪問到一個網(wǎng)站呢?這個網(wǎng)站是放到web項目之中的,那放到哪里呢?如何服務(wù)器跑起來的后臺程序接收到瀏覽器的請求之后,將這個網(wǎng)站首頁資源返回去到游客的瀏覽器端再由瀏覽器處理呈現(xiàn)出來,便可看到網(wǎng)站,具體網(wǎng)站寫了什么,自己可以隨意寫,首頁要掌握html的知識和語言編寫,css樣式和java腳本語言,當(dāng)然這里指的就是靜態(tài)頁面html5的。

文章一開始就提到了Servlet,為什么側(cè)重這個呢,因為瀏覽器發(fā)起的后臺請求,程序要接收到,首先交由Servlet處理,就類似個訪問入口的關(guān)卡一樣,并且是基于這個技術(shù)實現(xiàn)的,記得這篇文章之中有這句話:"servlet的本質(zhì)沒有變化,從web框架的發(fā)展來看,web框架只是簡化了開發(fā)servlet的工作,但還是遵循servlet規(guī)范的發(fā)展而發(fā)展的"。

那么在這個項目里面怎么實現(xiàn)Servlet呢,有javaweb編程技術(shù)和經(jīng)驗的會想到SpringMVC的@controller注解來快速實現(xiàn)(相關(guān)知識:https://www.iteye.com/blog/elim-1753271)

也就是瀏覽器的訪問會進(jìn)入到@controller所注解的類,再有相應(yīng)的方法來執(zhí)行返回網(wǎng)頁資源,然后我們就可以看到頁面了。

那么要怎么寫代碼呢?跟著

上圖所示,我們新建個java類,然后我們可以給class這樣起名,叫做controller.ComController,然后回車鍵enter確定

我們看到了ComController類,這個類屬于在javaweb中被稱為的控制層,接下來我們?yōu)g覽器的請求先進(jìn)過這個控制層,我們在ComController類上面加一個注解@Controller

如下圖,在輸入@Controller的一部分@Contro之后我們看到工具給的提示,默認(rèn)導(dǎo)入第一行的包我們按回車鍵

下圖,我們看到注解導(dǎo)入了進(jìn)來,ComController類上有了@Controller注解,接下來我們?yōu)榭刂破髦付ㄌ幚淼腢RL請求,我們先定義一個方法visitTheWebsite,再于visitTheWebsite方法上加一個注解@RequestMapping

之后我們看到下圖所示,這時我們需要定義一個瀏覽器請求的地址,這里我們寫個根路徑“/”就行

下圖,寫好之后我們就可以通過url請求進(jìn)入到方法體之中了,我們可以嘗試一下可不可以進(jìn)去,所以我們在方法里面寫個System.out.println("歡迎訪問網(wǎng)站")

下圖,寫好之后我們就來嘗試一下瀏覽器請求,看看控制臺有沒有輸出"歡迎訪問網(wǎng)站"

然后要怎么嘗試呢,首先我們先將java程序跑起來才行,怎么跑起來呢,找到入口函數(shù),即main函數(shù),如下圖我們在左側(cè)欄找到WebApplication類雙擊進(jìn)入代碼區(qū),點擊綠色按鈕運行

然后控制臺滑下去我們看到Tomcat started on port(s): 8080 (http) with context path ''的提示(下圖),表明Tomcat啟動部署并運行了javaweb項目程序,并且我們還知道port訪問端口為8080 ,然后我們可以打開瀏覽器嘗試可不可以訪問進(jìn)入到visitTheWebsite方法里面

打開瀏覽器(下圖),在瀏覽器地址欄我們輸入localhost:8080,按回車鍵,我們會看到Whitelabel Error Page的提示,回頭看看,我們是不是要訪問一個網(wǎng)站,但是我們只是指定了請求地址和執(zhí)行的方法,我們并沒有指定任何一個網(wǎng)站頁面資源。可是回到剛才的,這個瀏覽器的請求有沒有進(jìn)入到控制層ComController類下面的visitTheWebsite并執(zhí)行相應(yīng)的代碼呢,如果有說明請求進(jìn)入到了后臺程序,我們便可以自己寫相關(guān)的代碼功能去做事情啦!

所以我們驗證一下,看看IntelliJ IDEA的控制臺(下圖),我們會看到報錯信息,沒事,我們在控制臺用鼠標(biāo)滾輪滑上去

直到劃到這里,“歡迎訪問網(wǎng)站",所以說瀏覽器的請求已經(jīng)到了后臺程序的方法體里面了,因為程序是接著執(zhí)行的,想必就是因為return "";這里報的錯了

接下來大家可以猜到這里的return "",其實雙引號里面寫的是返回的網(wǎng)頁頁面的路徑,路徑有默認(rèn)起始的文件夾,也就是網(wǎng)頁資源存放的文件夾的路徑地址,那么能不能猜到網(wǎng)頁資源應(yīng)當(dāng)放在哪里呢,默認(rèn)文件夾是哪個?是的,沒錯我們看到下方有個resources的文件夾,resources顧名思義就是資源的意思,我們在templates文件夾下創(chuàng)建一個html文件,即我們的網(wǎng)頁資源。

起個名字叫”home“(下圖),按回車鍵

接下來我們進(jìn)入到html頁面代碼區(qū)了,熟悉前端的小伙伴可以任意寫自己的網(wǎng)站內(nèi)容,比如我們可以在body標(biāo)簽下寫上<h1>歡迎來到網(wǎng)站首頁</h1>,我們還可以在head標(biāo)簽里面引入我們常用的jquery資源

下圖這是我們寫好的網(wǎng)站,感興趣的小伙伴可以自由嘗試往里面寫自己想寫的代碼

接下來我們回到控制層的ComController類,我們將return "";改為return "home";(下圖)

然后我們停止并重新運行主程序

下圖我們看到程序已經(jīng)程序跑起來了,然后我在瀏覽器端嘗試請求一下,同樣輸入localhost:8080

猜猜這次我們看到什么了,是的,恭喜網(wǎng)站成功訪問了,如果是第一次玩應(yīng)該很欣喜啦!

我們打開瀏覽器的控制臺(F12),來到Console這里(下圖)

我們可以在控制臺輸入一個命令檢查一下剛才的jquery有沒有導(dǎo)入進(jìn)去,我們寫console.log($),然后回車,會看到(下圖)

沒錯,輸出的function函數(shù)就是jquery的$函數(shù),我們可以點擊這個函數(shù)瞧瞧,進(jìn)入到Sources欄,我們可以看到j(luò)query的源碼,其實這里面是存放前臺的文件資源目錄的地方(就是后臺傳給前臺的資源存放處),可以查看網(wǎng)站的資源,比如我們可以尋找一下該網(wǎng)站的html文件在哪里

我們找到了網(wǎng)頁的html文件,當(dāng)然如果網(wǎng)站有眾多資源比如圖片音樂字體html文件css文件js文件等等都可以在這里找(下圖)

這樣我就以簡潔明了和簡短的代碼帶大家以最快的速度構(gòu)建了一個javaweb的項目,實現(xiàn)了后臺網(wǎng)站資源傳輸?shù)角岸藶g覽器并被解析給游客瀏覽到網(wǎng)頁內(nèi)容的功能,至此我們成功搭建了一個web服務(wù)器,用的是個人PC。

但這個是只有局域網(wǎng)才可以看到。

好了,接下來大家還想聽什么呢,是的,我們還沒有操作到數(shù)據(jù)庫呢。其實剛才這個相當(dāng)于是個靜態(tài)網(wǎng)站,里面的內(nèi)容都是事先預(yù)定的,比如我已經(jīng)往里面寫了我想要的文章或者展示圖片等。

然后講講數(shù)據(jù)庫的操作吧,當(dāng)然這個也是最最快速的啦

我們?nèi)サ揭粋€網(wǎng)站

https://hutool.cn/docs/#/

百度會查到hutool的介紹(

Hutool是一個小而全的Java工具類庫,通過靜態(tài)方法封裝,降低相關(guān)API的學(xué)習(xí)成本,提高工作效率,使Java擁有函數(shù)式語言般的優(yōu)雅,讓Java語言也可以“甜甜的”。

Hutool中的工具方法來自每個用戶的精雕細(xì)琢,它涵蓋了Java開發(fā)底層代碼中的方方面面,它既是大型項目開發(fā)中解決小問題的利器,也是小型項目中的效率擔(dān)當(dāng);

Hutool是項目中“util”包友好的替代,它節(jié)省了開發(fā)人員對項目中公用類和公用工具方法的封裝時間,使開發(fā)專注于業(yè)務(wù),同時可以最大限度的避免封裝不完善帶來的bug。

在hutool的文檔里面我們找到入門和安裝下面的文檔并選中它(下圖),提示我們應(yīng)該粘貼一段配置到pom.xml文件里面,我們復(fù)制這一段配置

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.5.9</version> </dependency>

回到IntelliJ IDEA工具,找到pom.xml文件,在某處插入剛才的一段配置信息(下圖)

插入好配置之后如下圖所示,但記得點擊第二步驟的maven更新導(dǎo)入Hutool包,導(dǎo)入好后我們就可以使用Hutool給我的許許多多的功能了,比如可以嘗試一下控制臺打印封裝-Console

hutool的使用嘗試,我們可以看到文檔的說明,然后在test程序里面測試看看

test測試環(huán)境下,我們在contextLoads方法里面寫Conso之后出現(xiàn)提示選擇第二個,導(dǎo)入hutool的cn.hutool.core.lang.Console包

然后我們可以嘗試輸出看看(下圖),一樣的,運行之后看控制臺

測試之后我們發(fā)現(xiàn)可以使用,如下圖所示

然后演示怎么操作數(shù)據(jù)庫

在hutool的文檔里面我們找到數(shù)據(jù)庫簡單操作-Db(下圖)

先在resources目錄下添加db.setting文件(下圖)

點擊確定后,會看到創(chuàng)建了該文件,然后我們粘貼這段配置進(jìn)去

## db.setting文件url = jdbc:mysql://localhost:3306/test user = root pass = 123456## 可選配置 # 是否在日志中顯示執(zhí)行的SQL showSql = true # 是否格式化顯示的SQL formatSql = false # 是否顯示SQL參數(shù) showParams = true # 打印SQL的日志等級,默認(rèn)debug,可以是info、warn、error sqlLevel = debug

配置的信息寫對上,比如url = jdbc:mysql://localhost:3306/數(shù)據(jù)庫的名稱,user = 用戶名,pass = 密碼(下圖)

打開測試下數(shù)據(jù)庫連接

由上兩圖可知,正確的數(shù)據(jù)庫配置是

## db.setting文件url = jdbc:mysql://localhost:3306/all_user user = root pass = 123456## 可選配置 # 是否在日志中顯示執(zhí)行的SQL showSql = true # 是否格式化顯示的SQL formatSql = false # 是否顯示SQL參數(shù) showParams = true # 打印SQL的日志等級,默認(rèn)debug,可以是info、warn、error sqlLevel = debug

再嘗試操作數(shù)據(jù)庫之前我們還要引入MySQL JDBC驅(qū)動jar(下圖)

如下圖所示,配置好mysql jdbc驅(qū)動,并且maven成功更新該驅(qū)動之后,我們就可以嘗試對數(shù)據(jù)庫進(jìn)行操作了

那么操作數(shù)據(jù)庫得代碼怎么寫呢,文檔滾輪往下滑動,找到查詢?nèi)孔侄?#xff08;下圖)

//user為表名 Db.use().findAll("user");

那么這句代碼寫在哪里呢?在這之前我先新建service層和dao層(下圖)

建好之后,我們在服務(wù)層加上@Service注解,在dao層加上@Repository注解,如下兩圖所示

然后我先把dao層操作數(shù)據(jù)庫的代碼寫了,代碼是

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;} }

然后我再把服務(wù)層的代碼寫了,代碼是

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("歡迎訪問網(wǎng)站");return "home";}@RequestMapping("/getUser")@ResponseBodyMap getUser() throws SQLException {return userService.getUserService();} }

?

寫好之后,我們現(xiàn)在可以用瀏覽器請求了,我們重新啟動程序。啟動成功(下圖)

然后我打開瀏覽器請求localhost:8080,會進(jìn)到剛才的網(wǎng)站(下圖)

這時如果我們要操作數(shù)據(jù)庫就要訪問控制層的另一個接口(下圖)

@RequestMapping("/getUser")@ResponseBodyMap getUser() throws SQLException {return userService.getUserService();}

代碼中"/getUser"代表訪問的路徑后綴,所以我們在localhost:8080后面加上"/getUser"變?yōu)閘ocalhost:8080/getUser,注意這里要加上@ResponseBody表明是返回數(shù)據(jù)而不是返回網(wǎng)頁,不然指定的是網(wǎng)站地址。服務(wù)層的UserService類已經(jīng)注入進(jìn)來了,使用userService對象的getUserService方法調(diào)用服務(wù)層的這段代碼,我們可以看到UserDao也注入進(jìn)來了,userDao.getUser()調(diào)用dao層操作數(shù)據(jù)庫的代碼(下圖)

@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;} }

調(diào)用dao層操作數(shù)據(jù)庫的代碼,返回user表的List<Entity>集合,Entity已經(jīng)封裝好,是個對象,可以直接返回前端網(wǎng)頁(下圖)

public List<Entity> getUser() throws SQLException {//user為表名List<Entity> list = Db.use().findAll("user");return list;}

所最后控制層的getUser方法返回的是服務(wù)層的map對象userService.getUserService()(下圖)

@RequestMapping("/getUser")@ResponseBodyMap getUser() throws SQLException {return userService.getUserService();}

分析完控制層、服務(wù)層、dao層這些代碼后,我們可以嘗試看看有沒有請求到數(shù)據(jù)并傳回json格式的數(shù)據(jù)到前端網(wǎng)頁

在瀏覽器輸入http://localhost:8080/getUser(下圖),看到數(shù)據(jù)庫的user表數(shù)據(jù)已經(jīng)查出來了

對照下數(shù)據(jù)庫(下圖)

如果用ajax請求返回的數(shù)據(jù)進(jìn)到回調(diào)函數(shù)即可正常處理。

至此,我講了如果極快速的搭建一個javaweb后臺項目,使用個人PC作為服務(wù)器,成功訪問網(wǎng)站資源、連通并操作數(shù)據(jù)庫還有前面的Servlet、java、springboot等等的介紹

PS:從早上寫到晚上10點了,終于完成了,如果大家有什么寶貴的建議請留言!謝謝!

再說一下,文章中提到的不只限于局域網(wǎng),讓在互聯(lián)網(wǎng)上沖浪的任何人都可以輸入地址查找并進(jìn)入到我們的網(wǎng)站,是的,任何一個人只要連上了互聯(lián)網(wǎng)都可以訪問得到這個網(wǎng)站,也就是說到山區(qū)手機(jī)連個信號打開瀏覽器輸入個url地址便可以訪問得到我們的網(wǎng)站。這個確實可以做到,不過這里不寫,這里已經(jīng)完成了如何搭建一個java服務(wù)器后臺程序和網(wǎng)站的教程還有操作數(shù)據(jù)庫,估計可以算是比較有價值的了,這些是工作之余抽空摸索的,平時不做java開發(fā),好像也難有機(jī)會,先到這里了,希望能夠幫助到大家,互相學(xué)習(xí),祝各位工作順利,心想事成!!

項目源碼下載,云盤提取碼0sqw

總結(jié)

以上是生活随笔為你收集整理的实现以最快速度搭建springboot后台web项目并连通数据库实现控制层与服务层与dao层的select查询...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。