前言
本文主要介紹如何在SpringBoot 2 中使用 Servlet 的快速搭建教程,閱讀前需要你必須瞭解 Servlet 的基礎使用以及如何搭建 SpringBoot 項目。
快速演示操作
第一步: 編寫 Servlet 類並且在 Servlet 類上聲明 @WebServlet 註解,並通過@WebServlet 註解 urlPatterns 屬性來執行訪問路徑。具體代碼如下:
這裏通過獲取所有用戶信息的 Servlet 來進行演示。
@WebServlet(urlPatterns = "/user")
public class UserServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
@Override
public void init() throws ServletException {
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
User user1 = new User("ljk1",18);
User user2 = new User("ljk1",18);
List<User> userList = new ArrayList<User>();
userList.add(user1);
userList.add(user2);
String userListJson = JsonUtil.toJson(userList);
resp.getWriter().write(userListJson);
return ;
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
public void destroy() {
}
}
第二步:通過 JavaConfig 方式將編寫的 UserServlet 類注入到 Spring 的上下文中。
將我們自定義 Servlet 傳入到 ServletRegistrationBean 的構造中,然後創建 ServletRegistrationBean Bean實例,具體代碼如下:
@Configuration
public class WebApplicationConfig {
@Bean
public ServletRegistrationBean<UserServlet> userServlet(){
return new ServletRegistrationBean<UserServlet>(new UserServlet());
}
}
或者在啓動類上聲明 @ServletComponentScan 註解,具體代碼如下:
@SpringBootApplication
@ServletComponentScan
public class SpringbootexamplesApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootexamplesApplication.class, args);
}
}
JavaConfig 方式 或者聲明@ServletComponentScan 方式選擇一種即可。
用戶代碼:
public class User {
private String name;
private Integer age;
public User(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
//省略 getter and setter 方法
}
用戶集合轉換Json 對象的工具類具體代碼如下:
public class JsonUtil {
private static Gson gson = null;
static {
if (gson == null) {
gson= new GsonBuilder().create();
}
}
public static String toJson(Object object){
return gson.toJson(object);
}
public static <T> T GsonToBean(String json,Class<T> clazz){
return gson.fromJson(json, clazz);
}
}
需要引入 Gson 依賴
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
測試
這裏使用 PostMan 進行演示,訪問 http://localhost:8080/sbe/user 。具體結果如下圖所示:
小結
SpringBoot 中整合 Servlet步驟如下:
- 需要在Servlet 上聲明 @WebServlet
- 在啓動類上聲明@ServletComponentScan註解或者將 Servlet 通過ServletRegistrationBean 進行包裝然後通過 JavaConfig 方式將其注入到Spring上下文中。
代碼示例
我本地環境如下:
- SpringBoot Version: 2.1.0.RELEASE
- Apache Maven Version: 3.6.0
- Java Version: 1.8.0_144
- IDEA:Spring Tools Suite (STS)
整合過程如出現問題可以在我的GitHub 倉庫 springbootexamples 中模塊名爲 spring-boot-2.x-servlet 項目中進行對比查看
GitHub:https://github.com/zhuoqianmingyue/springbootexamples
參考文獻
Springboot 系列(六)web 開發之攔截器和三大組件 By 雪漫士兵