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