目錄
- 1,SpringMVC簡介
- 2、SpringMVC概述
歡迎大家回到《Java教程之Spring30天快速入門》,本教程所有示例均基于Maven實現,如果您對Maven還很陌生,請移步本人的博文《如何在windows11下安裝Maven并配置以及 IDEA配置Maven環境》,本文的上一篇為《Spring事務角色與 Spring事務屬性、事務傳播行為》
1,SpringMVC簡介
從這一節開始,我們開始學 習SpringMVC,看到SpringMVC這個名字我們會發現其中包含Spring,那么SpringMVC和Spring之間的會有關系么?答案是肯定有,SpringMVC隸屬于Spring,是Spring技術中的一部分。那么SpringMVC到底是用來做什么的呢?
- 回想web階段,我們學習過Servlet,而SpringMVC與Servlet技術功能等同,均屬于web層或者說表現層開發技術。
那么既然已經有了Servlet為什么還需要花時間再學習一個SpringMVC技術?要回答這個問題,我們
就需要搞清楚SpringMVC與Servlet相比,有什么優勢:
框架我們都知道是用來簡化開發的,所以SpringMVC與Servlet相比,開發起來更簡單快捷,用更少的代碼完成表現層代碼的開發,那么問題又來了,到底有多簡單呢?我們通過一個例子來體驗一把吧。
將資料中的項目導入到IDEA中,打開后格式如下
- UserSaveServlet:使用Servlet開發的用戶新增模塊
@WebServlet("/user/save")
public class UserSaveServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//1.接收請求參數String name = req.getParameter("name");System.out.println("servlet save name ==> " + name);//2.生產響應resp.setContentType("text/json;charset=utf-8");PrintWriter pw = resp.getWriter();pw.write("{'module':'servlet save'}");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {this.doGet(req,resp);}
}
- UserUpdateServlet:使用Servlet開發的用戶修改模塊
@WebServlet("/user/update")
public class UserUpdateServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//1.接收請求參數String name = req.getParameter("name");System.out.println("servlet update name ==> " + name);//2.生產響應resp.setContentType("text/json;charset=utf-8");PrintWriter pw = resp.getWriter();pw.write("{'module':'servlet update'}");
}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {this.doGet(req,resp);}
}
- UserDeleteServlet:使用Servlet開發的用戶刪除模塊
@WebServlet("/user/delete")
public class UserDeleteServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//1.接收請求參數String name = req.getParameter("name");System.out.println("servlet delete name ==> " + name);//2.生產響應resp.setContentType("text/json;charset=utf-8");PrintWriter pw = resp.getWriter();pw.write("{'module':'servlet delete'}");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {this.doGet(req,resp);}
}
- UserSelectServlet:使用Servlet開發的用戶查詢模塊
@WebServlet("/user/select")
public class UserSelectServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//1.接收請求參數String name = req.getParameter("name");System.out.println("servlet select name ==> " + name);//2.生產響應resp.setContentType("text/json;charset=utf-8");PrintWriter pw = resp.getWriter();pw.write("{'module':'servlet select'}");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {this.doGet(req,resp);}
}
啟動項目,測試結果如下:
上面就是通過Servlet的方式來實現的用戶模塊的增刪改查功能。那么如果使用SpringMVC來開發相
同的功能,做出來是什么樣子的呢?
打開項目springmvc包下的UserController類,內容如下:
@Controller
public class UserController {@RequestMapping("/save")@ResponseBodypublic String save(String name){System.out.println("springmvc save name ==> " + name);return "{'module':'springmvc save'}";}@RequestMapping("/delete")@ResponseBodypublic String delete(String name){System.out.println("springmvc delete name ==> " + name);return "{'module':'springmvc delete'}";}@RequestMapping("/update")@ResponseBodypublic String update(String name){System.out.println("springmvc update name ==> " + name);return "{'module':'springmvc update'}";}@RequestMapping("/select")@ResponseBodypublic String select(String name){System.out.println("springmvc select name ==> " + name);return "{'module':'springmvc select'}";}
}
啟動項目,測試結果如下:
通過兩種技術對相同功能的實現,我們會發現打印輸出的結果是一樣的,但是對比編寫的代碼會發現
SpringMVC這種開發方式更簡單、更高效
。
所以接下來我們就需要來學習下SpringMVC這門技術,主要學習那些內容呢?
學習之前大家需要記住一件事是,SpringMVC是用來替換Servlet的,所以Servlet能實現的,
SpringMVC就能實現,主要學習的內容包含如下模塊:
- SpringMVC簡介
- 請求與響應
- REST風格
- SSM整合(注解版)
- 攔截器
SpringMVC簡介:主要是來認識下到底什么是SpringMVC。
請求與相應:SpringMVC是替換Servlet處于Web的框架,所以其主要的作用就是用來接收前端發過來的請求和數據然后經過處理并將處理的結果響應給前端,所以如何處理請求和響應是SpringMVC中非常重要的一塊內容。
REST風格:是一種軟件架構風格,可以降低開發的復雜性,提高系統的可伸縮性,在以后開發中非常重要和常用。
SSM整合:是把咱們所學習的SpringMVC+Spring+Mybatis整合在一起來完成業務開發,是對我們所學習這三個框架的一個綜合應用。
攔截器:是SpringMVC中的一個小知識點。
對于SpringMVC的學習,最終要達成的目標:
掌握基于SpringMVC獲取請求參數和響應json數據操作
熟練應用基于REST風格的請求路徑設置與參數傳遞
- 能夠根據實際業務建立前后端開發通信協議并進行實現
基于SSM整合技術開發任意業務模塊功能
下面我們就進入SpringMVC這一章內容的學習,在這一章中,我們主要學習如下內容:
- SpringMVC概述
- 入門案例
- 入門案例工作流程分析
- Controller加載控制
- PostMan
本章的核心內容為:入門案例和入門案例工作流程分析。
2、SpringMVC概述
我們要學習的SpringMVC究竟是一門什么技術呢?
當前WEB程序的工作流程:
三層架構
- web程序通過瀏覽器訪問前端頁面,發送異步請求到后端服務器
- 后臺服務器采用三層架構進行功能開發
- 表現層負責接收請求和數據然后將數據轉交給業務層
- 業務層負責調用數據層完成數據庫表的增刪改查,并將結果返給表現層
- 表現層將數據轉換成json格式返回給前端
- 前端頁面將數據進行解析最終展示給用戶。
表現層與數據層的技術選型:
- 數據層采用Mybatis框架
- 表現層采用SpringMVC框架,SpringMVC主要負責的內容有:
- controller如何接收請求和數據
- 如何將請求和數據轉發給業務層
- 如何將響應數據轉換成json發回到前端
介紹了這么多,最后我們來對SpringMVC一個概述:
- SpringMVC是一種基于Java實現MVC模型的輕量級Web框架
- 優點
- 使用簡單、開發便捷(相比于Servlet)
- 靈活性強
這里所說的優點,就需要我們再使用的過程中慢慢體會。從下一節開始,我們將正式開始SpringMVC的學習。