SpringmvcDay01(配置springmvc適配對映,初始化)
阿新 • • 發佈:2018-12-06
springmvc的基礎知識
springmvc框架原理
前端控制器、處理器對映器、處理器介面卡、檢視解析器
springmvc入門程式
目的:對前端控制器、處理器對映器、處理器介面卡、檢視解析器
非註解的處理器對映器、處理器介面卡
註解的處理器對映器、處理器介面卡
springmvc和mybatis整合
springmvc註解開發
常用的註解學習
引數繫結(簡單型別、pojo、集合型別)
自定義引數繫結
springmvc和struts2的區別
1.1、什麼是springmvc框架
springmvc是spring框架的一個模組,springmvc和spring 無需通過中間整合層進行整合
springmvc是一個基於mvc的web框架
1.2、mvc在b/s系統下的應用
mvc是一個設計模式
1.3、springmvc框架
第一步:發起請求到前端控制器(DispatcherServlet)
第二步:前端控制器請求HandlerMapping查詢Handler
可以根據xml配置、註解進行查詢
第三步:處理器對映器HandlerMapping向前端控制器返回Handler
第四步:前端控制器呼叫處理器介面卡去執行Handler
第五步:處理器介面卡去執行Handler
第六步:Handler執行完成給介面卡返回ModelAndView
第七步:處理器介面卡向前端控制器返回ModelAndView
ModelAndView是springmvc框架的一個底層物件,包括Model和View
第八步:前端控制器請求檢視解析器去進行檢視解析
根據邏輯檢視名解析成真正的檢視(jsp)
第九步:檢視解析器向前端控制器返回View
第十步:前端控制器進行檢視渲染
檢視渲染將模型資料(在ModelAndView物件中)填充到request域
第十一步:前端控制器向用戶響應結果
元件
1、前端控制器DispatcherServlet(不需要自己編寫)
作用:接受請求,響應結果,相當於轉發器,中央處理器
有了DispatcherServlet減少了其他元件之間的耦合度
2、處理器對映器HandlerMapping(不需要自己編寫)
作用:根據請求的url查詢Handler
3、處理器介面卡HandlerAdapter
作用:按照特定規則(HandlerAdapter要求的規則)去執行Handler
注意:編寫Handler時按照HandlerAdapter的要求去做,這樣介面卡才可以去正確執行HJandler
4、檢視解析器View resolver(不需要自己編寫)
作用:進行檢視解析,根據邏輯檢視名解析成真正的檢視(view)
5、檢視 view
View是一個介面,實現類支援不同的view型別(jsp、freemarker、pdf...)
2.1、需求
整合springmvc和mybaits
商品列表查詢
2.2環境
資料庫
java環境
jdk1.8
eclipse oxygen
springmvc版本:spring5.0.2
需要spring所有jar(一定要spring-webmvc)
2.3配置前端控制器
<!-- springmvc前端控制器 -->
<servlet>
<!-- contextConfigLocation配置springmvc載入的配置檔案(配置處理對映器、介面卡等等)
如果不配置contextConfigLocation 預設載入的是/WEB-INF/servlet名稱-servlet.xml(springmvc-servlet.xml
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--
第一種:*.action訪問以.action結尾由DispatcherServlet進行解析
第二種:/.所有訪問的地址都由DispatcherServlet解析,對於靜態檔案的解析需要配置不讓DispatcherServlet進行解析
使用此種方法可以實現Restful風格的url
第三種:/*這樣配置不對,使用這種配置,最終要轉發到一個jsp頁面時,仍然會由DispatcherServlet解析jsp,
不能根據jsp頁面找到handler,會報錯
-->
<url-pattern>*.action</url-pattern>
</servlet-mapping>
2.4配置處理器介面卡
在classpath下的springmvc.xml中配置處理器介面卡
檢視SimpleControllerHandlerAdapter原始碼
public class SimpleControllerHandlerAdapter implements HandlerAdapter {
public boolean supports(Object handler) {
return (handler instanceof Controller);
}
此介面卡能執行實現controller介面的Handler
public interface Controller {
/**
* Process the request and return a ModelAndView object which the DispatcherServlet
* will render. A {@code null} return value is not an error: it indicates that
* this object completed request processing itself and that there is therefore no
* ModelAndView to render.
* @param request current HTTP request
* @param response current HTTP response
* @return a ModelAndView to render, or {@code null} if handled directly
* @throws Exception in case of errors
*/
@Nullable
ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception;
}
2.5、開發Handler
需要實現controller介面,才能由org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter介面卡執行
2.6、配置處理器對映器
在classpath下的springmvc.xml中配置處理器對映器
2.7、配置檢視解析器
在springmvc.xml檔案配置如下
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!-- 處理器檢視解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
InternalResourceViewResolver:支援JSP檢視解析
viewClass:JstlView表示JSP模版頁面需要使用JSTL標籤庫,所以classpath中必須包含jstl相關的jar包
prefix和suffix:查詢檢視頁面的字首和字尾,最終檢視地址為
處理器對映器根據url找不到Handler
處理器根據url找到了Handler,轉發的jsp頁面找不到,報下面的錯誤,說明jsp頁面的地址錯誤