首先了解MVC是什麼
- mvc是模型(module)、視圖(view)、控制器(controller)的簡寫,是一種軟件設計規範
是將業務邏輯、數據、顯示分離開來組織代碼 - mvc主要是作用是降低了視圖與業務邏輯之間的雙向耦合
- mvc不是一種設計模式,mvc是一種架構模式
module(模型):數據模型,提供要展示的數據,包含數據和行爲
view(視圖):負責進行模型的展示,一般就是用戶看到的界面
controller(控制器):接收用戶的請求,委託給模型進行處理,處理完成以後把返回的數據模型返回給視圖,由視圖負責展示,控制器承擔一個調度員你的責任
spring mvc的特點
- 輕量級,簡單易學
- 高效、基於請求響應的mvc框架
- 與Spring兼容性好,無縫結合
- 約定優於配置
- 功能強大:RESTful、數據驗證、格式化、本地化、主題等
- 簡潔靈活
SpringMVC是圍繞DispatcherServlet【調度servlet】來設計的
dispatcherservlet的作用就是將請求分發給不同的處理器
重點理解SpringMVC的執行流程
1.用戶提交請求給頁面(提交給dispatcherservlet)
實際上完成的操作是提交了要訪問那個控制器
url分爲三部分
服務器域名
部署在服務器上的web站點
控制器
2.HandlerMapping爲處理器映射。dispatcherservlet調用HandlerMapping尋找要使用哪個handler
3.HandlerExcution表示具體的Handler,其主要作用是根據url尋找對應的控制器
4.HandlerExcution將解析後的信息傳遞給dispatcherservlet,如解析控制器映射
<!--處理器映射器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--BeanNameUrlHandlerMapping:創建一個bean去尋找對應的解析器-->
<bean id="/hello" class="com.superman.controller.HelloController"/>
5.HandAdapter表示處理器適配器,按照特定的規則去尋找handle
6.handler去執行具體的controller
<!--處理器適配器-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--BeanNameUrlHandlerMapping:創建一個bean去尋找對應的解析器-->
<beclass="com.superman.controller.HelloControan id="/hello" ller"/>
7.controller將具體的執行信息返回給handleradapter,如moduleandeview
public class HelloController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
ModelAndView mv = new ModelAndView();
//業務代碼
String result="hello spring";
mv.addObject("msg",result);
//視圖跳轉
mv.setViewName("test");
return mv;
}
}
8.handleradapter將視圖邏輯名或模型傳遞給dispatcherservlet
9.dispatcherservlet調用視圖解析器(viewresolver)來解析handleradapte傳遞的邏輯視圖名
10.視圖解析器將解析的邏輯視圖名傳給dispatcherservlet,然後dispatcherservlet去調用這個view
<!--視圖解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<!--配置前綴-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--配置後綴-->
<property name="suffix" value=".jsp"/>
</bean>
如果遇到代碼沒有問題出現404錯誤,需要檢察環境,檢查打包過程中是否有lib文件,沒有的話需要手動創建並且導入必要的依賴