• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • springMVC框架簡介

    1.SpringMVC概述
          ? Spring現層提供的基于MVC設計理念秀的Web框架,是目前最主流MVC框架之一
          ? Spring3.0后全面超越Struts2,成秀的MVC框架
          ? Spring MVC一套MVC注解POJO為處求的控制器,而無須實現任何接口。
          ? 支持RESTURL
          ? 采用了松散合可插拔結構,比其他MVC框架更具展性和活性

    2.HelloWorld 

    (1)

          – 加入jar
           – web.xml中配置DispatcherServlet
           – 加入Spring MVC的配置文件
           – 求的理器,并標識為處理器
           – 視圖
     (2)jar
           – commons-logging-1.1.3.jar
           – spring-aop-4.0.0.RELEASE.jar
           – spring-beans-4.0.0.RELEASE.jar
           – spring-context-4.0.0.RELEASE.jar
           – spring-core-4.0.0.RELEASE.jar
           – spring-expression-4.0.0.RELEASE.jar
           – spring-web-4.0.0.RELEASE.jar
           – spring-webmvc-4.0.0.RELEASE.jar

     (3)在web.xml中配置DispatcherServlet
          DispatcherServlet/WEB-INF/<servletName-servlet>.xmlSpring配置文件,啟動WEBSpring容器。可以通contextConfigLocation初始化參數自定配置文件的位置和名稱
        <!-- 配置 DispatcherServlet -->  
            <servlet>  
                <servlet-name>helloworld</servlet-name>  
                <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
                <!-- 配置DispatcherServlet初始化參數:配置springmvc配置文件的位置和名稱 -->  
                <!--   
                    實際上也可以不通過 contextConfigLocation 來配置 SpringMVC 的配置文件, 而使用默認的.  
                    默認的配置文件為: /WEB-INF/<servlet-name>-servlet.xml  
                    這樣配置文件就不是放在src下了,而是放在WEB-INF下,此時名字叫做helloworld-servlet.xml  
                -->  
                <init-param>  
                    <param-name>contextConfigLocation</param-name>  
                    <param-value>classpath:springmvc.xml</param-value>  
                </init-param>  
                <load-on-startup>1</load-on-startup>  
            </servlet>  
          
            <servlet-mapping>  
                <servlet-name>helloworld</servlet-name>  
                <url-pattern>/</url-pattern>  
            </servlet-mapping>  
    (4)創建Spring MVC配置文件
           –配置自動掃描的包
           –配置視圖解析器視圖名稱解析器:將視圖邏輯名解析: /WEB-INF/pages/<viewName>.jsp
        <!-- 配置自動掃描的包 -->  
            <context:component-scan base-package="com.starfish.springmvc"></context:component-scan>  
          
            <!-- 配置視圖解析器: 如何把 handler 方法返回值解析為實際的物理視圖 -->  
            <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
                <property name="prefix" value="/WEB-INF/views/"></property>  
                <property name="suffix" value=".jsp"></property>  
            </bean>  

    (5)創建請求處理器類

        @Controller  
        public class HelloWorld {  
            /** 
             * 1. 使用 @RequestMapping  注解來映射請求的 URL(這里的請求就是:href="helloWorld") 
             * 2. 返回值會通過視圖解析器解析為實際的物理視圖, 對于 InternalResourceViewResolver 視圖解析器, 會做如下的解析: 
             * 通過 prefix + returnVal + 后綴 這樣的方式得到實際的物理視圖, 然會做轉發操作 
             *  
             * /WEB-INF/views/success.jsp 
             */  
            @RequestMapping("/helloWorld")  
            public String helloWorld(){  
                System.out.println("springMVC HelloWorld!");  
                return "success";  
            }  
        }  

    3.使用@RequestMapping映射請求

          ? Spring MVC 使用@RequestMapping注解為控制器指定可以處理哪些URL 請求

         ? 在控制器的類定義及方法定義處都可標注@RequestMapping

            – 類定義處:提供初步的請求映射信息。相對于WEB 應用的根目錄

             – 方法處:提供進一步的細分映射信息。相對于類定義處的URL。若類定義處未標注@RequestMapping,則方法處標記的URL 相對于WEB 應用的根目錄

         ? DispatcherServlet截獲請求后,就通過控制器上@RequestMapping提供的映射信息確定請求所對應的處理方法。

    (1)使用@RequestMapping映射請求示例

            
     (2)映射請求參數、請求方法或請求頭
         ? 標準的HTTP請求報頭
             

         ? @RequestMapping除了可以使用請求URL映射請求外,還可以使用請求方法、請求參數及請求頭映射請求

         ? @RequestMappingvaluemethodparamsheads 分別表示請求URL請求方法請求參數及請求頭的映射條件,他們之間是的關系,聯合使用多個條件可讓請求映射更加精確化

         ? paramsheaders支持簡單的表達式:

            – param1: 表示請求必須包含名為param1 的請求參數

             – !param1: 表示請求不能包含名為param1 的請求參數

             – param1 != value1: 表示請求包含名為param1 的請求參數,但其值不能為value1

             {“param1=value1”, “param2”}: 請求必須包含名為param1 param2 的兩個請求參數,且param1 參數的值必須為value1

        @Controller  
        @RequestMapping("springmvc")  
        public class SpringMVCTest {  
            private static final String SUCCESS = "success";  
        //了解:不常用, 可以使用params和header來更加精確的映射請求,他兩支持簡單的表達式  
            @RequestMapping(value="testParamsAndHeader",params={"username","age!=24"},headers={"Accept-Language=zh-CN,zh;q=0.8"})  
            public String testParamsAndHeader(){  
                System.out.println("testParamsAndHeader...");  
                return SUCCESS;  
            }}  
    4. 映射求參數&求參數
     
     (1)

    請求處理方法簽名


         ? SpringMVC通過分析處理方法的簽名,將HTTP請求信息綁定到處理方法的相應人參中
         ? Spring MVC 對控制器處理方法簽名的限制是很寬松的,幾乎可以按喜歡的任何方式對方法進行簽名。
         ? 必要時可以對方法及方法入參標注相應的注解(@PathVariable@RequestParam@RequestHeader)、Spring MVC 框架會將HTTP 請求的信息綁定到相應的方法入參中,并根據方法的返回值類型做出相應的后續處理
        ————————————————jsp————————————————————————————————————  
        <a href="springmvc/testRequestParam?userName=starfish&age=22">Test RequestParam</a>  
        ————————————————action——————————————————————————————————  
           @Controller  
        @RequestMapping("springmvc")  
        public class SpringMVCTest {  
          
            private static final String SUCCESS = "success";  
          
            @RequestMapping("/testRequestParam")  
            public String testRequestParam(@RequestParam(value="userName") String userName,  
                    @RequestParam(value="age",required=false,defaultValue="18") int age){  
                System.out.println("testRequestParam--> userName :"+ userName + ", age:"+ age);  
                return SUCCESS;  
            }  
    (2)使用@RequestParam綁定請求參數值
          ? 在處理方法入參處使用@RequestParam可以把請求參數傳遞給請求方法
               – value:參數名
                – required:是否必須。默認為true, 表示請求參數中必須包含對應的參數,若不存在,將拋出異常
     @Controller  
        @RequestMapping("springmvc")  
        public class SpringMVCTest {  
          
            private static final String SUCCESS = "success";  
          
            @RequestMapping("/testRequestParam")  
            public String testRequestParam(@RequestParam(value="userName") String userName,  
                    @RequestParam(value="age",required=false,defaultValue="18") int age){       //integer age可以不用寫默認值  
                System.out.println("testRequestParam--> userName :"+ userName + ", age:"+ age);  
                return SUCCESS;  
            }  
        ——————————————————  
        jsp:  
        <a href="springmvc/testRequestParam?userName=starfish&age=22">Test RequestParam</a>  
    5.處理模型數據

     (1)Spring MVC 提供了以下幾種途徑輸出模型數據

              – ModelAndView: 處理方法返回值類型為ModelAndView, 方法體即可通過該對象添加模型數據

              – Map Model: 入參為org.springframework.ui.Modelorg.springframework.ui.ModelMapjava.uti.Map時,處理方法返回時,Map 中的數據會自動添加到模型中。

             – @SessionAttributes: 將模型中的某個屬性暫存到HttpSession中,以便多個請求之間可以共享這個屬性

               – @ModelAttribute: 方法入參標注該注解后, 入參的對象就會放到數據模型中

     
     (2)ModelAndView

         ? 控制器處理方法的返回值如果為ModelAndView, 則其既包含視圖信息,也包含模型數據信息

         ? 添加模型數據:

            – MoelAndView addObject(String attributeName, Object attributeValue)

            – ModelAndView addAllObject(Map<String, ?> modelMap)

         ? 設置視圖:

             – void setView(View view)

             – void setViewName(String viewName)j

        ————————————action————————————————  
            /** 
             * 目標方法的返回值可以是 ModelAndView 類型。  
             * 其中可以包含視圖和模型信息 
             * SpringMVC 會把 ModelAndView 的 model 中數據放入到 request 域對象中.  
             * @return 
             */  
            @RequestMapping("/testModelAndView")  
            public ModelAndView testModelAndView(){  
                String viewName = SUCCESS;  
                ModelAndView modelAndView = new ModelAndView(viewName);  
          
                //添加模型數據到 ModelAndView 中.  
                modelAndView.addObject("time", new Date());  
          
                return modelAndView;  
            }  
        ——————————jsp——————————————————  
        <a href="springmvc/testModelAndView">Test ModelAndView</a>  
                    success page:     time: ${requestScope.time }  
    (3)Map及Model
         ?  Spring MVC 在內部使用了一個org.springframework.ui.Model接口存儲模型數據
         ?  具體步驟:
             Spring MVC 在調用方法前會創建一個隱含的模型對象作為模型數據的存儲容器。
            – 如果方法的入參Map Model Spring MVC 會將隱含模型的引用傳遞給這些入參。在方法體內,開發者可以通過這個入參對象訪問到模型中的所有數據,也可以向模型中添加新的屬性數據
        ————————————action————————————————  
           /** 
             * 目標方法可以添加 Map 類型(實際上也可以是 Model 類型或 ModelMap 類型)的參數.  
             * @param map 
             * @return 
             */  
            @RequestMapping("/testMap")  
            public String testMap(Map<String, Object> map){  
                System.out.println(map.getClass().getName());   
                map.put("names", Arrays.asList("Tom", "Jerry", "Mike"));  
                return SUCCESS;  
            }  
        ——————————jsp——————————————————  
        <a href="springmvc/testMap">Test testMap  
        </a>                       success page:       
        names: ${requestScope.name }  
    版權聲明:本文為qq_38294614原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_38294614/article/details/79954092

    智能推薦

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    猜你喜歡

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    styled-components —— React 中的 CSS 最佳實踐

    https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...

    基于TCP/IP的網絡聊天室用Java來實現

    基于TCP/IP的網絡聊天室實現 開發工具:eclipse 開發環境:jdk1.8 發送端 接收端 工具類 運行截圖...

    19.vue中封裝echarts組件

    19.vue中封裝echarts組件 1.效果圖 2.echarts組件 3.使用組件 按照組件格式整理好數據格式 傳入組件 home.vue 4.接口返回數據格式...

    精品国产乱码久久久久久蜜桃不卡