1. 程式人生 > >SpringmvcDay01(配置springmvc適配對映,初始化)

SpringmvcDay01(配置springmvc適配對映,初始化)

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(不需要自己編寫) 作用:進行檢視解析,根據邏輯檢視名解析成真正的檢視(view5、檢視 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頁面的地址錯誤

這裡寫圖片描述