"TOC" Spring Boot整合Servlet(兩種方式) 1. 新建一個maven項目 創建完成後的結構圖: 2. 引入pom.xml依賴 第一種方式(通過註解掃描方式完成Servlet組件的註冊): 1. 通過註解掃描方式完成Servlet組件的註冊 1.1. 創建一個Servlet 1. ...
目錄
- Spring Boot整合Servlet(兩種方式)
- Springboot整合Filter (和整合Servlet方式差不多)
- Springboot整合Listener (同上)
- Springboot訪問靜態資源(兩種方式)
Spring Boot整合Servlet(兩種方式)
- 新建一個maven項目
創建完成後的結構圖:
- 引入pom.xml依賴
<!--引入父項目-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
</parent>
<dependencies>
<!--SpringBoot web啟動器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
第一種方式(通過註解掃描方式完成Servlet組件的註冊):
- 通過註解掃描方式完成Servlet組件的註冊
1.1. 創建一個Servlet
1.2. 編寫Servlet代碼:
@WebServlet(name = "firstServlet",urlPatterns = "/firstServlet") //urlPatterns:訪問路徑
public class firstServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("進來了firstServlet");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
1.3. 編寫啟動類
創建springboot啟動類
代碼:
@SpringBootApplication
//在spring boot啟動時會掃描@WebServlet註解,並創建該類的實例
@ServletComponentScan
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
註意:在啟動類上需要加上@ServletComponentScan註解 意思是:在啟動時掃描@WebServlet註解 ,創建Servlet的實例
1.4. 運行啟動類 ,在瀏覽器輸入localhost:8080/firstServlet
控制台輸出信息
第二種方式(通過方法完成Servlet組件的註冊)
- 創建一個Servlet
- 創建springboot啟動類
在main方法下新建一個註冊Servlet組件的方法
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
//添加一個方法,方法名無要求,必須返回ServletRegistrationBean。註冊Servlet對象
@Bean //主鍵等價於<bean>標簽
public ServletRegistrationBean<SecondServlet> getServletRegistrationBean(){
ServletRegistrationBean<SecondServlet> bean=
new ServletRegistrationBean<SecondServlet>(new SecondServlet(),"/SecondServlet");
return bean;
}
}
- 運行啟動類 在瀏覽器輸入 localhost:8080/SecondServlet
- 控制台列印信息
Springboot整合Filter (和整合Servlet方式差不多)
第一種方式(通過註解掃描方式完成Fliter組件的註冊)
- 新建一個Filter類
- 繼承Filter父類 實現介面
代碼如下:
@WebFilter(filterName = "firstFilter", urlPatterns = "/firstFilter")
public class firstFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("----進入FirstFilter-----");
chain.doFilter(request, response);//放行
System.out.println("----離開FirstFilter-----");
}
}
- 創建啟動類
代碼如下:
@SpringBootApplication
//在spring boot啟動時會掃描@WebServlet @WebFilter @WebListener註解,並創建該類的實例
@ServletComponentScan
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
運行啟動類,在瀏覽器輸入 localhost:8080/firstFilter
這裡報404是因為沒有寫放行後的路徑;
控制台列印信息:
第二種方式(通過方法方式完成Filter組件的註冊)
- 創建Filter類 不用寫@WebFilter註解
- 啟動類
代碼如下:
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
//添加一個方法
@Bean
public FilterRegistrationBean<SecondFilter> getFilterRegistrationBean(){
FilterRegistrationBean<SecondFilter> bean=
new FilterRegistrationBean<SecondFilter>(new SecondFilter());
bean.addUrlPatterns("*.do","*.jsp","/SecondFilter"); //以.do , .jsp , SecondFilter結尾路徑的都會進到過濾器
return bean;
}
}
- 運行啟動類 在瀏覽器輸入 localhost:8080/SecondFilter
控制台列印信息:
Springboot整合Listener (同上)
通過註解掃描方式完成Fliter組件的註冊
- 創建Listener類
Listener代碼:
@WebListener()
public class firstListener implements ServletContextListener{
//監聽application對象的創建
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("-----------application對象創建-----------------");
}
}
- 創建啟動類
代碼:
@SpringBootApplication
@ServletComponentScan //在spring boot啟動時會掃描@WebServlet @WebFilter @WebListener註解,並創建該類的實例
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
- 運行啟動類 看控制台列印信息
第二種方式(通過方法完成Listener組件註冊)
代碼一樣 省略代碼 直接上代碼
- 創建Listener類
- 啟動類
代碼:
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
@Bean
public ServletListenerRegistrationBean<firstListener> getServletListenerRegistrationBean(){
ServletListenerRegistrationBean<firstListener> bean=
new ServletListenerRegistrationBean<firstListener>(new firstListener());
return bean;
}
}
- 運行啟動類 看控制台列印信息
Springboot訪問靜態資源(兩種方式)
第一種方式(通過ServletContext的根目錄下尋找靜態資源)
1.在src/main 下創建一個webapp的目錄(目錄名稱必須為webapp)
在webapp下創建不同目錄存放不同的靜態資源,如:images 放圖片 .
2. 運行啟動類訪問 直接訪問資源路徑
第二種方式(從classpath/static的目錄下尋找靜態資源)
在src/main/resources下創建一個static的目錄(目錄名稱必須為static)
在static下創建不同目錄存放不同的靜態資源,如:images 放圖片 .
2. 運行啟動類訪問瀏覽器 直接訪問資源路徑
以上就是本教程的相關內容,感謝觀看,轉載請註明出處