JavaWeb-14-SpringMVC的簡介和Helloword

Table of Contents

一:springMVC簡介

1:是Spring實現web模塊的;簡化web開發的

2:傳統的MVC

3:springMVC下的MVC

 二:springMVC的HelloWorld

1:普通web模式下

1.1:選擇spring模塊

1.2:選擇項目位置 

1.3:系統自動下載jar包 

1.4:加入jar包依賴

1.5:配置tomcat(也可以不配置,一會自己加)

1.6:修改web.XML

 1.7:springMVC的配置

1.8:寫一個controller 

1.9:部署項目

2:使用maven工具

2.1:創建項目

2.2:添加依賴

2.3:添加框架支持

2.4:修改web.XML

 2.5:springMVC的配置

2.6:寫一個controller 

2.7:部署項目

3:總結springmvc的HelloWord

1:導包:

2:寫配置:

 1)web.xml可能要寫什麼

2):框架自身可能要寫什麼(springmvc的前端控制器的配置)

3: 測試

4:helloworld原理和細節

4.1:helloword流程

4.2:一個方法一個請求

5:RequestMapping屬性詳解

5.1:method:限定請求方式、

5.2:params:規定請求參數

5.3:規定請求頭;也和params一樣能寫簡單的表達式

5.4:consumes:只接受內容類型是哪種的請求,規定請求頭中的Content-Type

5.5:produces:告訴瀏覽器返回的內容類型是什麼,給響應頭中加上Content-Type:text/html;charset=utf-8

6:@RequestMapping模糊匹配功能

7:@PathVariable 路徑佔位符


一:springMVC簡介

1:是Spring實現web模塊的;簡化web開發的

 

SpringMVC==Spring的web模塊;

2:傳統的MVC

3:springMVC下的MVC

 二:springMVC的HelloWorld

1:普通web模式下

1.1:選擇spring模塊

1.2:選擇項目位置 

1.3:系統自動下載jar包 

1.4:加入jar包依賴

1.5:配置tomcat(也可以不配置,一會自己加)

1.6:修改web.XML

 1.7:springMVC的配置

在dispatcher-servlet.xml配置spring mvc相關的。如:掃描的基包、頁面訪問位置及後綴。

如果你的取得名字是HelloMVC,那麼與其對應的servlet名字必須是:HelloMVC-servlet.xml。格式是:自定義名稱-servlet.xml

HelloMVC-servlet內容如下:

需要說明的是:先引入context及mvc之後,下面就可以聯想出來了。

1.8:寫一個controller 

1.9:部署項目

 啓動:

注:如果有的報錯:記得修復Artifacts(目的就是將lib下的jar包,加入web-info下)

2:使用maven工具

2.1:創建項目

2.2:添加依賴

我們打開其中的pom.xml,添加我們的依賴。這裏我把我的依賴全部放出來,複製到你的pom.xml的dependencies標籤之間就可以了,pom文件中也會給你一個示例。

我們今天做最簡單的helloworld,只需要導入webmvc即可

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.2.6.RELEASE</version>
  </dependency>


</dependencies>

2.3:添加框架支持


配置完pom.xml之後,我們在idea中要添加一下框架的支持。右擊我們的項目文件夾,選擇add framework support

將下圖中的Spring和Spring下的Spring MVC都勾上,之前配置pom.xml文件時,已經自動下載了spring相關文件,所以這裏就直接用之前下載好的就可以了,OK。(注意:點了Add framework support之後,在下圖中有可能會找不到Spring,解決辦法在下圖的下方
 

如果在Add framework support中找不到Spring,那是因爲項目中可能已經存在Spring相關文件,但不一定是完善的。因此我們要將已經存在的Spring給刪掉,重新添加,方法如下:

點擊File,選擇Project Structure,(快捷鍵ctrl+shift+alt+s)選擇Facets,就會看到有一個Spring啦,右擊它,點刪除就行啦,然後再回到上面第3步重新Add framework support,Spring就會出現啦。

 可以看到新增了兩個xml文件,並且我也調整了一下包結構

 

2.4:修改web.XML

 2.5:springMVC的配置

在dispatcher-servlet.xml配置spring mvc相關的。如:掃描的基包、頁面訪問位置及後綴。

如果你的取得名字是HelloMVC,那麼與其對應的servlet名字必須是:HelloMVC-servlet.xml。格式是:自定義名稱-servlet.xml

HelloMVC-servlet內容如下:

需要說明的是:先引入context及mvc之後,下面就可以聯想出來了。

2.6:寫一個controller 

2.7:部署項目

 啓動:

3:總結springmvc的HelloWord

1:導包:

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

2:寫配置:

 

 1)web.xml可能要寫什麼

          配置springmvc的前端控制器,指定springmvc配置文件位置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>


     <!--contextConfigLocation:spring本身的框架配置-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>


    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--在dispatcher-servlet.xml配置spring mvc相關的。如:掃描的基包、頁面訪問位置及後綴。
            如果你的取得名字是HelloMVC,那麼與其對應的servlet名字必須是:HelloMVC-servlet.xml。
            格式是:自定義名稱-servlet.xml-->
        <!--<init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>-->

        <!-- servlet啓動加載,servlet原本是第一次訪問創建對象;
        load-on-startup:服務器啓動的時候創建對象;值越小優先級越高,越先創建對象;
         -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <!--
            /*和/都是攔截所有請求; /:會攔截所有請求,但是不會攔截*.jsp;能保證jsp訪問正常;
            /*的範圍更大;還會攔截到*.jsp這些請求;一但攔截jsp頁面就不能顯示了;
          -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

去掉註釋就是這樣:

<servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

2):框架自身可能要寫什麼(springmvc的前端控制器的配置)

在dispatcher-servlet.xml配置spring mvc相關的。如:掃描的基包、頁面訪問位置及後綴。

如果你在web.xml中取得名字是HelloMVC,那麼與其對應的servlet名字必須是:HelloMVC-servlet.xml。 格式是:自定義名稱-servlet.xml,這樣就可以在web.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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!--掃描包-->
    <context:component-scan base-package="com.wkl"></context:component-scan>

    <!--指定視圖解析器的前後綴-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"

          id="internalResourceViewResolver">

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

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

    </bean>

</beans>

 

3: 測試

@Controller
public class HelloController {

    @RequestMapping("/hello")
    public String hello(){
        System.out.println("請求了。。。。。");
        return "success";
    }
}

4:helloworld原理和細節

4.1:helloword流程

 

*      1)、客戶端點擊鏈接會發送 http://localhost:8080/hello 請求

 *      2)、來到tomcat服務器;

 *      3)、SpringMVC的前端控制器收到所有請求;

 *      4)、來看請求地址和@RequestMapping標註的哪個匹配,來找到到底使用那個類的哪個方法來處理

 *      5)、前端控制器找到了目標處理器類和目標方法,直接利用返回執行目標方法;

 *      6)、方法執行完成以後會有一個返回值;SpringMVC認爲這個返回值就是要去的頁面地址

 *      7)、拿到方法返回值以後;用視圖解析器進行拼串得到完整的頁面地址;

 *      8)、拿到頁面地址,前端控制器幫我們轉發到頁面;

4.2:一個方法一個請求

 

 
 
 

5:RequestMapping屬性詳解

5.1:method:限定請求方式、

 

HTTP協議中的所有請求方式:

     *          【GET】, HEAD, 【POST】, PUT, PATCH, DELETE, OPTIONS, TRACE

 

      method=RequestMethod.POST:只接受這種類型的請求,默認是什麼都可以;

5.2:params:規定請求參數

 

params 和 headers支持簡單的表達式:           

     *     param1: 表示請求必須包含名爲 param1 的請求參數

     *          eg:params={"username"}:

     *              發送請求的時候必須帶上一個名爲username的參數;沒帶都會404

     *

     *      !param1: 表示請求不能包含名爲 param1 的請求參數

     *          eg:params={"!username"}

     *              發送請求的時候必須不攜帶上一個名爲username的參數;帶了都會404

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

     *          eg:params={"username!=123"}

     *              發送請求的時候;攜帶的username值必須不是123(不帶username或者username不是123)

     *

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

     *          eg:params={"username!=123","pwd","!age"}

     *              請求參數必須滿足以上規則;

     *              請求的username不能是123,必須有pwd的值,不能有age

5.3:規定請求頭;也和params一樣能寫簡單的表達式

 

5.4:consumes:只接受內容類型是哪種的請求,規定請求頭中的Content-Type

 

5.5:produces:告訴瀏覽器返回的內容類型是什麼,給響應頭中加上Content-Type:text/html;charset=utf-8

 

6:@RequestMapping模糊匹配功能

 

7:@PathVariable 路徑佔位符

//路徑上可以有佔位符:  佔位符 語法就是可以在任意路徑的地方寫一個{變量名}
    //   /user/admin    /user/leifengyang
    // 路徑上的佔位符只能佔一層路徑
    @RequestMapping("/user/{id}")
    public String pathVariableTest(@PathVariable("id")String id){
        System.out.println("路徑上的佔位符的值"+id);
        return "success";
    }

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章