SpringMVC快速入門

1.快速入門

步驟:
1) 建立項目
2) 導(dǎo)入springioc,springweb相關(guān)jar包
3) 在/WEB-INF/下創(chuàng)建web.xml文件:
4) 創(chuàng)建控制器

什么是springMVC, 它和spring有什么關(guān)系?
SpringMVC屬于Spring的后續(xù)產(chǎn)品,用在基于MVC的表現(xiàn)層開發(fā),類似于structs2框架。

注意:servlet是一個單例

我們?nèi)绻?code>web.xml注冊了DispatcherServlet之后, 系統(tǒng)會自動找/WEB-INF/<servlet-name>-servlet.xml,注意目錄和名字。

<!-- 注冊springmvc核心控制器 -->
<servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>*.action</url-pattern>
</servlet-mapping>

導(dǎo)包:

圖片.png

ModelAndView中,邏輯名稱和真實名稱

我們在Action中,

public class HelloAction implements Controller {

    /**
     * 處理請求/業(yè)務(wù)方法
     * @param httpServletRequest
     * @param httpServletResponse
     * @return
     * @throws Exception
     */
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {

        /**
         * ModelAndView表示向視圖封裝的數(shù)據(jù)和路徑
         */
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("message", "this my first springmvc application");
        //modelAndView.setViewName("/jsp/success.jsp");  // 真實路徑
        modelAndView.setViewName("success");  // 邏輯名稱
        return modelAndView;
    }
}

我們在DispatcherServlet-servlet.xml中:

<?xml version="1.0" encoding="UTF-8"?>
<beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:mvc="http://www.springframework.org/schema/mvc"

        xsi:schemaLocation="

        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

      ">


    <!-- 這個Action -->
    <!-- Action處理類:
            class 代表處理類的全路徑
            name  代表請求路徑
     -->
    <bean name="/hello.action" class="com.ypd.springmvc2.controller.HelloAction"></bean>

    <!--
        如果Action中熟悉而的是視圖邏輯名稱,那么視圖解析器就必須配置
        如果是真實名稱,就可選配置
    -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 路徑前綴 -->
        <property name="prefix" value="/jsp/"></property>
        <!-- 路徑后綴 -->
        <property name="suffix" value=".jsp"></property>
        <!-- 前綴+邏輯名+后綴=真實路徑 -->
    </bean>

</beans>

就是說如果使用邏輯名稱:那么我們需要在DispatcherServlet-servlet.xml中配置視圖解析器:

 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 路徑前綴 -->
        <property name="prefix" value="/jsp/"></property>
        <!-- 路徑后綴 -->
        <property name="suffix" value=".jsp"></property>
        <!-- 前綴+邏輯名+后綴=真實路徑 -->
    </bean>

JSP取得絕對根路徑

${pageContext.request.contextPath} 

JSP取得絕對路徑

映射器 Mapping
什么樣的請求交給Action
可以將多個action的映射交給一個<bean>標(biāo)簽為id的Action來處理:

圖片.png

視圖解析器
InternalResourceViewResolver

一個Action中可以寫多個類似的業(yè)務(wù)控制方法:增刪改查

適配器 Adapter
SimpleControllerHanderAdapter 簡單控制器

ParameterizableViewController: 參數(shù)視圖控制器


圖片.png

AbstractCommandController:抽象的CommandController

原則

1) JavaBean中的屬性適合用包裝類型即Integer, Double
2) 普通方法中的參數(shù)類型適合用于基礎(chǔ)類型,即Int, double

SpringMVC 的@InitBinder標(biāo)簽

SpringMVC中,bean定義了Date, double 等類型,如果沒有任何處理的話,日期以及double都無法綁定。

解決的方法就是使用Spring MVC的@InitBinder標(biāo)簽。
一般的做法是:BaseController中增加方法initBinder。
并使用注解@InitBinder標(biāo)注,那么spring mvc在綁定表單之前,都會先注冊這些編輯器,當(dāng)然你如果不嫌麻煩,你也可以單獨的寫在你的每一個controller中。剩下的控制器都繼承該類。
spring自己提供了大量的實現(xiàn)類,諸如CustomDateEditor ,CustomBooleanEditor,CustomNumberEditor等許多,基本上夠用。

   @InitBinder    
   protected void initBinder(WebDataBinder binder) {    
       binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), true));    
       binder.registerCustomEditor(int.class, new CustomNumberEditor(int.class, true));    
       binder.registerCustomEditor(int.class, new IntegerEditor());    
       binder.registerCustomEditor(long.class, new CustomNumberEditor(long.class, true));  
       binder.registerCustomEditor(long.class, new LongEditor());    
       binder.registerCustomEditor(double.class, new DoubleEditor());    
       binder.registerCustomEditor(float.class, new FloatEditor());    
   }   

常用的方法:

// 自定義的轉(zhuǎn)換器
    @InitBinder
    public void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {

        binder.registerCustomEditor(
                Date.class,
                new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)
        );
    }

如果web.xml中配置了url-pattern

圖片.png

在注解的時候,可以寫也可以不寫.action

圖片.png

但是在請求的時候一定要寫:

圖片.png

自定義注解

圖片.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、概述 SpringMVC屬于Spring Framework的后續(xù)產(chǎn)品,已經(jīng)融合到Spring Web Flo...
    凜_冬_將_至閱讀 2,638評論 1 2
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,285評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,688評論 19 139
  • 從三月份找實習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,872評論 11 349
  • 寂靜很久的大學(xué)班級群,今天突然熱鬧了起來。先是一個畢業(yè)很久就消在大家視線中的妹子,在群里邀請同學(xué)們?yōu)槟衬彻珓?wù)部門的...
    張驀驀閱讀 198評論 0 0

友情鏈接更多精彩內(nèi)容