SpringMVC與請求控制器


 

MVC設計模式

  視圖(View)      -對應組件:JSP或者HTML文件

  控制器(controller) -對應組件:Servlet

  模型(Model)   -對應組件:JavaBean

  

 

MVC優點 

  多視圖共享一個模型,大大提高代碼的可重用性

  MVC三個模塊相互獨立,松耦合架構

  控制器提高了應用程序的靈活性和可配置性

  有利於軟件工程化管理

MVC缺點 

  原理復雜

  增加了系統結構和實現的復雜性

  視圖對模型數據的低效訪問

Spring MVC框架實現原理

  1. 發起請求到前端控制器(DispatcherServlet)
  2. 前端控制器請求HanderrMapping查找Handler(可根據xml配置,注解查找)
  3. 處理器映射器HandlerMapping向前端控制器返回Handler
  4. 前端控制器調用處理器適配器執行Handler
  5. 處理器適配器執行Handler
  6. Handler執行完成后給適配器返回ModelAndView
  7. 處理器適配器向前端控制器返回ModelAndView(SpringMVC底層對象,包含model和view)
  8. 前端控制器請求視圖解析器進行解析(根據邏輯視圖名解析真正的視圖名(.jsp))
  9. 視圖解析器向前端控制器返回View
  10. 前端控制器實行視圖渲染(視圖渲染將模型數據填充到request域中)
  11. 響應給客戶端

Spring MVC框架搭建步驟

  下載jar文件並導入工程

    

 

  配置文件->修改web.xml配置文件

<!-- 配置核心控制器 DispatcherServlet -->

  <servlet>

        <servlet-name>springmvc</servlet-name>

        <servlet-class>

        org.springframework.web.servlet.DispatcherServlet

        </servlet-class>

<!-- Springmvc默認加載Springmvc的配置文件,但是需要滿足一下規則

命名規則:servlet-name-servlet.xml==> springmvc-servlet.xml

路徑規則:springmvc-servlet.xml必須放在WEB-INFO下面-->

<!-- 定義讀取的applicationContext-mvc.xml文件 -->

         <init-param>

            <param-name>contextConfigLocation</param-name>  <param-value>classpath:applicationContext-mvc.xml

</param-value>

       </init-param>

       <!-- 啟動服務器即讀取 -->

 <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet-mapping>

        <servlet-name>springmvc</servlet-name>

         <url-pattern>/</url-pattern>

</servlet-mapping>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

創建Spring MVC的配置文件(注:跟配置讀取mvc.xml必須一致)

  

配置注解處理器映射器(mvc.xml文件配置)

<!-- 配置注解的處理器映射器  尋找執行類 Controller -->

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />

配置注解處理器適配器(mvc.xml文件配置)

<!-- 配置注解的處理器適配器 執行Controller -->

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />

開啟指定目錄注解掃描(mvc.xml文件配置)

   <!-- 開啟注解掃描  cn.smbms替換controller所在包路徑-->

<context:component-scan base-package="cn.smbms"/>

配置視圖解析器(mvc.xml文件配置)

 <!-- 配置視圖解析器  /WEB-INF/jsp/index.jsp-->

 <bean id="viewResolver"

class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <!-- 配置前綴-->

        <property name="prefix" value="/WEB-INF/jsp/" />

        <!-- 配置后綴  -->

        <property name="suffix" value=".jsp" />

</bean>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

控制層方法上添加@Controller注解,也可以@Controller("xxx/xxx/")添加路徑前綴

方法上添加@RequestMapping注解 

  RequestMapping(定義訪問名)

    功能:請求映射

    寫法:

      RequestMapping(“index”)  可以匹配任何的擴展名

      RequestMapping(“/index.do”)

      RequestMapping(value=“/index.do”)

      RequestMapping(value=“/index.do” method=RequestMethod.GET)

      RequestMapping(value=“/index.do” method=RequestMethod.POST)

    瀏覽器直接寫url或者a標簽都是GET請求

    一般情況下,如果使用from表單提交都是post請求,還有ajax請求指定post請求

SpringMVC基於注解封裝參數   

  根路徑注解RequestMapper(“”) 是為了隔離不同的Controller里面相同的方法

  SpringMVC沒有成員變量,把需要的參數對象放入方法中,當你請求這個方法時候,這個方法里面對象會自動被創建,需要封裝的參數自動被封裝方法的對象.

  提交表單:

    例:<form action="${pageContext.request.contextPath}/login" > 前面的參數是取得當前的絕對路徑. 需要導入jsp-api包

    基本數據類型

   

    實體類

     

     包裝類

      

    數組

      

    接收集合類型參數

      方法里面不能直接傳遞list集合和map集合類型參數,把list集合定義在包裝類里面.

    List傳遞

      

     

    接收Map類型參數

    

頁面參數的回顯

  Springmvc使用model對象,Model對象相當於application

  application對象中數據可以是el表達式進行獲取

  

URL模板映射

  主要是為請求restfull設計模式

  restfull軟件架構設計模式:請求更簡潔,更方便,更安全搜索引擎收錄.

  普通修改數據

    <a ref="${pageContext.request.contextPath}/index/update.do?id=${user.id}">編輯</a>

    初識Restfull

    <a href="${pageContext.request.contextPath}/index/update/${user.id }.do">編輯</a>

    

    絕對實現Restfull風格

        

    如果在上面DispatcherServlet設置攔截權限為全局,則可絕對實現Restfull風格.

     例:設置全局攔截

      

      則請求默認實現Restfull風格

      

 

RequestParam

  該注解可以給參數設置別名,設置默認值.

  內置屬性:

    value=”屬性別名”  設置參數屬性別名,在頁面使用別名進行傳參.

     defaultValue=”默認值”,設置默認屬性值,當無值傳入時,傳入默認值.

    required=”true(默認)” 請求中一定要有相應的參數,否則報400錯誤.

  

轉發和重定向

  forward:轉發,不改變地址情況下的頁面跳轉

    return “forward: getList”;//相對路徑

    

    return “forward:/index/ getList”;//根路徑可隨便指定已有的路徑

    

  redirect:頁面跳轉,地址同步改變

    return "redirect:getList";//相對路徑跳轉

      

    return "redirect:/index/getList";//絕對路徑重定向

       

<mvc:annotation-driven />   spring3.0.x后默認使用了

<mvc:annotation-driven />默認創建了處理器映射器和處理器適配器,還提供了json數據格式的支持

    

 

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM