下載地址:?https://download.csdn.net/download/2401_83418369/90675207
一、搭建環境?
創建新項目
在pom.xml文件中導入依賴?(一定要刷新Maven)排除內嵌的Tomcat,引入自己指定的Tomcat
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.study</groupId><artifactId>hsp-SpringBoot</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 導入springboot父工程--><parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.5.3</version></parent><!-- 導入web項目場景啟動器:會自動導入和web開發相關的所有依賴--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
<!-- 排除內嵌的Tomcat--><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency><!-- 引入指定的Tomcat--><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><version>8.5.75</version></dependency></dependencies></project>
實現任務階段1-創建Tomcat,并啟動
創建HspSpringApplication類作為啟動springboot的程序?
package com.study.hspSpringboot;import org.apache.catalina.startup.Tomcat;/*** 該類相當于是一個springboot啟動程序*/
public class HspSpringApplication {//這里會創建Tomcat關聯Spring容器public static void run(){try {//創建TomcatTomcat tomcat = new Tomcat();//設置端口tomcat.setPort(9090);//啟動tomcat.start();//等待請求接入System.out.println("======等待連接======");tomcat.getServer().await();} catch (Exception e) {throw new RuntimeException(e);}}
}
創建HspMainApp作為主程序?
package com.study.hspSpringboot;public class HspMainApp {public static void main(String[] args) {HspSpringApplication.run();}
}
當啟動springboot程序時,通過netstat -anb命令查詢得到?
創建一個Bean,一個控制器和一個配置類?
Bean對象?
hspConfig類?
package com.study.hspSpringboot.Config;import com.study.hspSpringboot.bean.Monster;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;/*** @Configuration表示這個類是一個配置類,* @ComponentScan("com.study.hspSpringboot")表示要springboot要掃描的路徑*/
@Configuration
@ComponentScan("com.study.hspSpringboot")
public class hspConfig {@Beanpublic Monster monster(){return new Monster();}
}
HiController類?
package com.study.hspSpringboot.Controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @RestController這個注解表示一個Controller控制器,* 也包含@ResponseBody注解的作用(將響應的對象轉成json格式的字符串)**/
@RestController
public class HiController {@RequestMapping("/hi")public String hi(){return "hi";}
}
實現任務階段2-創建Spring容器?并關聯Tomcat
創建HspWebApplicationInitializer 類充當容器對象
package com.study.hspSpringboot;import com.study.hspSpringboot.Config.hspConfig;
import org.springframework.boot.web.servlet.ServletContextInitializer;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;/*** 該類是一個Spring容器,完成Bean的創建和依賴注入,前端控制器的分發*/
public class HspWebApplicationInitializer implements WebApplicationInitializer {@Overridepublic void onStartup(ServletContext servletContext) throws ServletException {//創建容器對象AnnotationConfigWebApplicationContext annotationConfigWebApplicationContext =new AnnotationConfigWebApplicationContext();//將配置類進行注冊到容器(這樣才能使配置類的@ComponentScan注解生效,這樣才能掃描其它的注解注入到容器)annotationConfigWebApplicationContext.register(hspConfig.class);//刷新容器(初始化容器,創建Bean對象,注入依賴)annotationConfigWebApplicationContext.refresh();//創建前端控制器,持有容器DispatcherServlet dispatcherServlet =new DispatcherServlet(annotationConfigWebApplicationContext);//將servlet交給servletContext管理(類似web.xml文件中配置servlet)ServletRegistration.Dynamic app =servletContext.addServlet("app", dispatcherServlet);//當Tomcat啟動的時候加載app.setLoadOnStartup(1);//添加映射//注意:不要將映射路徑寫成/*,這種路徑會將靜態資源也進行攔截,// 但是不能正常的匹配映射servlet對象就會報錯app.addMapping("/");}
}
?HspSpringApplication 類中添加工程路徑聯系該項目
package com.study.hspSpringboot;import org.apache.catalina.startup.Tomcat;/*** 該類相當于是一個springboot啟動程序*/
public class HspSpringApplication {//這里會創建Tomcat關聯Spring容器public static void run(){try {//創建TomcatTomcat tomcat = new Tomcat();//將Tomcat關聯該springboot項目//hsp_springboot是工程路徑//C:\Users\DELL\IdeaProjects\hsp-SpringBoot項目路徑//當Tomcat啟動時通過瀏覽器訪問該工程路徑就可以訪問該項目tomcat.addWebapp("/hsp_springboot","C:\\Users\\DELL\\IdeaProjects\\hsp-SpringBoot");//設置端口tomcat.setPort(9090);//啟動tomcat.start();//等待請求接入System.out.println("======等待連接======");tomcat.getServer().await();} catch (Exception e) {throw new RuntimeException(e);}}
}
運行該springboot程序?
解決:在pom.xml文件中引入依賴 (刷新)
<dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-jasper</artifactId><version>8.5.75</version></dependency>
通過瀏覽器發送請求得到?