springboot整合servlet
生活随笔
收集整理的這篇文章主要介紹了
springboot整合servlet
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如何在SpringBoot當中去整合我們的Servlet,SpringBoot在整合Servlet時,提供了兩種整合方式,第一種是通過注解掃描,來完成Servlet組件的注冊,第二種方式呢,通過方法完成Servlet組件的注冊,那我們先來看第一種方式,首先我們要創建一個SpringBoot的項目,項目類型仍然是jar類型,還要田間父工程的信息,然后我們用的還是1.5.12.RELEASE,這樣我們 一個項目就構建好了,我們要將JDK的版本修改為1.8,那么我們這個時候就要用到properties,然后java.version<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version>
</properties>接下來我們要將WEB啟動器的坐標,添加到我們的pom文件當中,這個時候會講jar包添加到我們的項目當中,接下來我們就可以創建我們的Servlet@WebServlet(name="FirstServlet",urlPatterns="/first")
public class FirstServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("FirstServlet............");}
}這個時候我們村重寫Servlet的doGet方法,這樣我們的一個Servlet就填寫完了,我們先回顧一下,我們以往在做Servlet開發時,當我們創建好一個Servlet,我們要在web.xml里對Servlet做配置,首先要在web.xml里面添加一個servlet節點,在servlet節點當中呢,servlet-name,在servlet-name當中呢,這是我們以往要做的一些配置,在這里我們沒有web.xml,我們沒有辦法去做這樣的一個配置,在SpringBoot當中,提供了一個叫WebServlet的Annotation,在這個Annotation當中呢,我們可以去完成對應的Servlet配置,用到了一個name,和urlPatterns,這個name屬性,其實就是我們web.xml配的servlet-name,只是我們這里不再需要對servlet-class做配置,因為你在哪個class上添加了servlet,則表示這個class就是一個servlet,這樣我們一個servlet就配置完了,第二步編寫啟動類,在這里我們編寫一個SpringBoot的啟動類/*** SpringBoot整合Servlet方式一**/
@SpringBootApplication
@ServletComponentScan //在springBoot啟動時會掃描@WebServlet,并將該類實例化
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}
}但是我們現在要讓SpringBoot在啟動的時候,去掃描我們servlet當中,增加的WebServlet注解,怎么辦呢,我們要在這加一個Annotation,叫@ServletComponentScan,這個注解表示什么含義呢,在SpringBoot啟動時,會掃描WebServlet的信息,并將該類實例化,這個就是Annotation的一個作用,那么這里我們要注意的就是,他就會去掃描這個Annotation,那么接下來我們把Servlet啟動一下,如果控制臺輸出這個信息,表示servlet是可運行的,我們打開瀏覽器localhost:8080/first這個servlet已經執行了,這種方式就是通過,掃描注解的方式完成組件的注冊,我們再來看第二種方式,通過方法,通過方法來完成組件的注冊,首先我們還是得編寫一個servlet/***SpringBoot整合Servlet方式二**/
public class SecondServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("SecondServlet..........");}}那么這種方式和第一種方式不同的是什么呢,我們不需要在Servlet的client上,添加WebServlet的Annotation,就是一個普通的Servlet就行了,然后我們去編寫一個啟動類,/*** SpringBoot整合Servlet方式二**/
@SpringBootApplication
public class App2 {public static void main(String[] args) {SpringApplication.run(App2.class, args);}@Beanpublic ServletRegistrationBean getServletRegistrationBean(){ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());bean.addUrlMappings("/second");return bean;}
}那么我們在第二個servlet當中,不需要添加WebServlet Annotation,就意味著在我們的啟動器當中,也不需要@ServletComponentScan這個注解了,那么我們怎么辦呢,這里我們需要添加一個方法,這個方法叫什么名倒無所謂,但是這個方法呢,他的返回值必須是ServletRegistrationBean,這個類型的一個對象,然后我們隨便起個名,getServletRegistrationBean,那么這個對象其實就是來注冊servlet的一個對象,在這個對象的構造方法當中,new我們的servlet,然后我們看一下在我們的servlet當中,把原來的Annotation去掉了,那我們怎么來指定servlet的url,pattern的配置呢,在ServletRegistrationBean下,提供了一個方法,addUrlMappings,然后將這個對象返回,接下來我們還要加一個@Bean的注解,然后我們去執行啟動器,這樣的啟動器在啟動時,通過ServletRegistrationBean去完成servlet的注冊,這樣就方便處理請求了,在這里先去啟動我們的SpringBootlocalhost:8080/second
<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.learn</groupId><artifactId>02-spring-boot-servlet</artifactId><version>0.0.1-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.12.RELEASE</version></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><!-- springBoot的啟動器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
</project>
package com.learn.servlet;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/***SpringBoot整合Servlet方式一**<servlet>* <servlet-name>FirstServlet</servlet-name>* <servlet-class>com.learn.servlet.FirstServlet</servlet-class>*</servlet>**<servlet-mapping>* <servlet-name>FirstServlet</servlet-name>* <url-pattern>/first</url-pattern>*</servlet-mapping>**/
@WebServlet(name="FirstServlet",urlPatterns="/first")
public class FirstServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("FirstServlet............");}
}
package com.learn;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;/*** SpringBoot整合Servlet方式一**/
@SpringBootApplication
@ServletComponentScan //在springBoot啟動時會掃描@WebServlet,并將該類實例化
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}
}
package com.learn.servlet;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/***SpringBoot整合Servlet方式二**/
public class SecondServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("SecondServlet..........");}}
package com.learn;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;import com.learn.servlet.SecondServlet;/*** SpringBoot整合Servlet方式二**/
@SpringBootApplication
public class App2 {public static void main(String[] args) {SpringApplication.run(App2.class, args);}@Beanpublic ServletRegistrationBean getServletRegistrationBean(){ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());bean.addUrlMappings("/second");return bean;}
}
?
總結
以上是生活随笔為你收集整理的springboot整合servlet的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot编写HelloWor
- 下一篇: springboot整合filter