springboot搭建web項(xiàng)目完整流程,以及遇到的一些坑坑洼洼總結(jié)

2024-03-25    分類(lèi): 網(wǎng)站建設(shè)

一、spring boot簡(jiǎn)介

spring boot是最近非常流行的,在spring的框架上改進(jìn)的框架。該框架的目的是為了提高開(kāi)發(fā)人員的速度,降低配置的難度等等,極大了簡(jiǎn)化了開(kāi)發(fā)流程。具體的詳細(xì)的說(shuō)明請(qǐng)參考官方文檔。在日常工作中,由于需要搭建一套環(huán)境或者框架的機(jī)會(huì)非常的少,大部分都是在原有的基礎(chǔ)上開(kāi)發(fā),所以當(dāng)讓你搭建一個(gè)簡(jiǎn)單的框架,就會(huì)出現(xiàn)各種各樣的困難,比如說(shuō),我在搭建的一個(gè)服務(wù)器的時(shí)候,準(zhǔn)備了一個(gè)小的demo,原以為非常的簡(jiǎn)單,結(jié)果遇到了各種各樣的問(wèn)題,而發(fā)現(xiàn)網(wǎng)上的博客都是零零散散的講一些點(diǎn),很難有一個(gè)完整的流程,包括可能會(huì)遇到的問(wèn)題。這里對(duì)搭建一個(gè)簡(jiǎn)單的項(xiàng)目流程做一個(gè)詳細(xì)的總結(jié),方便日后參考,同時(shí)這一篇博客也是為了下一篇博客tengine反向代理服務(wù)器搭建做一點(diǎn)前置的基礎(chǔ)準(zhǔn)備。

二、spring boot搭建web項(xiàng)目

好了廢話(huà),不多說(shuō),下面正式開(kāi)始單間一個(gè)web項(xiàng)目,使用的工具是eclipse來(lái)進(jìn)行搭建,創(chuàng)建一個(gè)maven工程。下面開(kāi)啟貼圖模式,這前面的過(guò)程都是非常的簡(jiǎn)單,網(wǎng)上也有大量的參考資料,這里為了保證一個(gè)完整性,開(kāi)始貼圖。

首先就是很簡(jiǎn)單,右擊-->new-->project 選擇maven project

然后選擇一個(gè)默認(rèn)的配置即可,一般包含的文件都會(huì)在里面。

這里填寫(xiě)好group id其實(shí)就是包名,后面也可以更改的,還有artifiact id就是工程名稱(chēng),然后單擊完成,就創(chuàng)建一個(gè)簡(jiǎn)單的maven工程。

具體的工程目錄如下所示

按照上面的流程建好了工程之后,可以查看到具體的工程目錄如下,這里作為一個(gè)web項(xiàng)目還缺少如下相關(guān)目錄用來(lái)存放web文件和配置文件。

src/main/resources //這個(gè)文件夾中存放的是配置文件例如application.properties 配置文件

src/main/webapp //這個(gè)文件夾中存放的是前端的文件html,jsp、css

這些文件夾手動(dòng)添加即可,添加完成之后,具體得到的如下圖所示:

要想把這個(gè)項(xiàng)目跑起來(lái),需要做一下幾個(gè)步驟:

1. 首先需要配置一下pom.xml文件,引入spring-boot的相關(guān)依賴(lài)文件 ,這個(gè)是最基本的包,里面包含了運(yùn)行的相關(guān)組件,例如tomcat,以及其他的jar包

org.springframework.boot

spring-boot-starter-parent

1.5.10.RELEASE

org.springframework.boot

spring-boot-starter-web

這樣就能啟動(dòng)一個(gè)spring-boot的web項(xiàng)目,其中內(nèi)嵌了相關(guān)的tomcat服務(wù)器,接下里是至關(guān)重要的,因?yàn)槿绻灰胂旅娴膉ar包,在調(diào)整jsp的頁(yè)面的時(shí)候直接看到的是變成了下載的模式,筆者也是在這個(gè)地方郁悶了半天,百度上找了好多的例子,大部分都沒(méi)講到這個(gè)方面,故而在這里重點(diǎn)說(shuō)明一下

javax.servlet

jstl

org.apache.tomcat.embed

tomcat-embed-jasper

provided

引入了這個(gè)jar之后呢,才能對(duì)jsp進(jìn)行解析,編譯,到這里之后,相關(guān)的依賴(lài)基本上都算引入完成。接下來(lái)要做的是配置application.properties配置文件,這里面也是有一堆坑在這里。默認(rèn)的情況下,這個(gè)配置文件是不需要配置的,服務(wù)器也可以啟動(dòng)起來(lái)。但是很多同學(xué)在搭建玩項(xiàng)目之后,進(jìn)行的跳轉(zhuǎn)的時(shí)候,不是報(bào)找不到頁(yè)面,就是解析錯(cuò)誤。因?yàn)樵谶@個(gè)配置文件中需要指定一下需要跳轉(zhuǎn)的jsp頁(yè)面的路徑,即,具體在哪個(gè)文件夾下面,添加如下配置:

默認(rèn)的位置是src/main/webapp 這里可以更換,比如/page/ 那么目錄就變成了src/main/webapp/pages

spring.mvc.view.prefix=/

spring.mvc.view.suffix=.jsp

這里面還有一個(gè)坑,在新版本的spring boot中是按上面的配置,但是在老的版本中是如下的用法,名稱(chēng)不一樣,這里需要注意一下,否則對(duì)于新學(xué)者來(lái)說(shuō),又要懵逼半天了...

spring.view.prefix=/

spring.view.suffix=.jsp

然后需要?jiǎng)?chuàng)建jsp的頁(yè)面了,在添加的源碼包src/main/webapp的下面添加jsp文件,注意,webapp是默認(rèn)的路徑,如果想繼續(xù)分類(lèi),則可以在該文件夾下面進(jìn)行添加,比如說(shuō)添加一個(gè)pages文件夾,jsp文件都放在這里面,那么spring.mvc.view.prefix=/pages/ 否則會(huì)找不到對(duì)應(yīng)的文件。大體的目錄結(jié)構(gòu)如下所示:

|----src/main/webapp

|------index.jsp

|------pages

|----page.index

對(duì)于jsp頁(yè)面中,就寫(xiě)入一點(diǎn)簡(jiǎn)單的測(cè)試語(yǔ)句就行了

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

Insert title here

hello world!!!

name=${name } welcome!

好了,上面的步驟都完成之后,這里,只要編寫(xiě)簡(jiǎn)單的Controller即可,這里面提供了兩個(gè)跳轉(zhuǎn)路徑一個(gè)是/home,一個(gè)是/home/page,一個(gè)是攜帶返回值,一個(gè)沒(méi)有返回相應(yīng)結(jié)果。

@Controller

public class HomeController {

@RequestMapping(value="/home")

public String home(){

System.out.println("redirect to home page!");

return "index";

}

@RequestMapping(value="/home/page")

@ResponseBody

System.out.println("go to the home page!");

mode.addObject("name", "zhangsan");

return mode;

}

}

然后在App類(lèi)中,添加如下代碼:

@SpringBootApplication

public class App

{

public static void main( String[] args )

{

SpringApplication.run(App.class);

}

}

寫(xiě)好上面的Controller之后,在App類(lèi)上面右擊,選擇Run Application執(zhí)行main函數(shù),看到控制臺(tái)輸出如下,說(shuō)明spring boot啟動(dòng)成功

. ____ _ __ _ _

/\\ / ____ __ _ _(_)_ __ __ _ \ \ \ \

( ( )\___ | _ | _| | _ \/ _` | \ \ \ \

\\/ ___)| |_)| | | | | || (_| | ) ) ) )

|____| .__|_| |_|_| |_\__, | / / / /

=========|_|==============|___/=/_/_/_/

:: Spring Boot :: (v1.5.10.RELEASE)

2018-03-01 17:32:42.069 INFO 64878 --- [ main] com.spring.example.App : Starting App on fhldeMacBook-Air.local with PID 64878 (/Users/fhl/Documents/workspace1/spring-boot-example/target/classes started by fhl in /Users/fhl/Documents/workspace1/spring-boot-example)

2018-03-01 17:32:42.074 INFO 64878 --- [ main] com.spring.example.App : No active profile set, falling back to default profiles: default

2018-03-01 17:32:42.175 INFO 64878 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@1d8299fd: startup date [Thu Mar 01 17:32:42 CST 2018]; root of context hierarchy

2018-03-01 17:32:45.865 INFO 64878 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)

2018-03-01 17:32:45.892 INFO 64878 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]

2018-03-01 17:32:45.895 INFO 64878 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.27

2018-03-01 17:32:46.530 INFO 64878 --- [ost-startStop-1] org.apache.jasper.servlet.TldScanner : At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

2018-03-01 17:32:46.542 INFO 64878 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext

2018-03-01 17:32:46.543 INFO 64878 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 4371 ms

2018-03-01 17:32:46.809 INFO 64878 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: dispatcherServlet to [/]

2018-03-01 17:32:46.818 INFO 64878 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: characterEncodingFilter to: [/*]

2018-03-01 17:32:46.819 INFO 64878 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: hiddenHttpMethodFilter to: [/*]

2018-03-01 17:32:46.819 INFO 64878 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: httpPutFormContentFilter to: [/*]

2018-03-01 17:32:46.819 INFO 64878 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: requestContextFilter to: [/*]

2018-03-01 17:32:47.838 INFO 64878 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@1d8299fd: startup date [Thu Mar 01 17:32:42 CST 2018]; root of context hierarchy

2018-03-01 17:32:48.136 INFO 64878 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/home]}" onto public java.lang.String com.spring.example.controller.HomeController.home()

2018-03-01 17:32:48.150 INFO 64878 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity

名稱(chēng)欄目:springboot搭建web項(xiàng)目完整流程,以及遇到的一些坑坑洼洼總結(jié)
當(dāng)前鏈接:http://muchs.cn/news29/321729.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、云服務(wù)器網(wǎng)站導(dǎo)航、關(guān)鍵詞優(yōu)化、網(wǎng)站排名服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化