springMVC詳細介紹

springMVC簡介

springMVC又 叫Spring web mvc。是Spring框架中的一部分,是Spring3.0後發佈的。

SpringMVC框架的優點

1、基於MVC架構模式:MVC架構模式

2、容易理解上手快,使用簡單:可以開發一個註解的SpringMVC項目,SpringMVC也是輕量級的框架,jar包很小,不依賴特定的接口和類。

3、作為Spring的一部分,能夠使用Spring框架的IOC容器和Aop編程。方便整合Strtus、MyBatis、Hibernate、JPA等其他框架。

4、SpringMVC強化註解的使用,在控制器,Service、Dao都可以使用註解,方便靈活。使用@Controller創建對象容器,@Service創建業務對象,@AutoWired或者@Resource在控制器類中註入Service,Service類中註入Dao。

第一個SpringMVC程序

所謂SpringMVC註解式開發是指,在代碼中通過對類與方法的註解,便可以完成處理器在springMVC容器的註冊。註冊是開發的重點

步驟

第一步:創建maven-web項目

第二步:在pom.xml中添加依賴和插件

加入servlet、jsp、springmvc依賴

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <!--加入servlet依賴-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version> <scope>provided</scope>
    </dependency>
    <!-- jsp依賴 -->
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2.1-b03</version>
        <scope>provided</scope>
    </dependency>
    <!--加入springMVC依賴-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.5.RELEASE</version>
    </dependency>
</dependencies>

加入插件

<resources>
    <resource>
        <directory>src/main/java</directory><!--所在的目錄-->
        <includes><!--包括目錄下的.properties,.xml 文件都會掃描到-->
            <include>**/*.properties</include>
            <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
    </resource>
</resources>
<plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
</plugins>

第三步註冊中央調度器

中央調度器為一個Servlet,名稱為DispatcherServlet中央調度器的全限定性類名在導入的 Jar 文件 spring-webmvc-5.2.5.RELEASE.jar 的第一個包 org.springframework.web.servlet下可找到

<load-on-startup/>標簽:

在<servlet/>中添加<load-on-startup/>的作用是,標記是否在Web服務器(這裡是Tomcat)啟動時會創建這個 Servlet 實例,即是否在 Web 服務器啟動時調用執行該 Servlet 的 init()方法,而不是在真正訪問時才創建。它的值必須是一個整數。

當值大於等於 0 時,表示容器在啟動時就加載並初始化這個 servlet,數值越小,該 Servlet的優先級就越高,其被創建的也就越早;

當值小於 0 或者沒有指定時,則表示該 Servlet 在真正被使用時才會去創建。

當值相同時,容器會自己選擇創建順序。

<url-pattern/>標簽:

可以寫為 / ,建議寫為*.do 的形式

配置文件的位置和名稱

註冊完畢後,可直接在服務器上發佈運行。此時,訪問瀏覽器頁面,控制臺均會拋出FileNotFoundException 異常。即默認要從項目根下的 WEB-INF 目錄下找名稱為 Servlet 名稱-servlet.xml 的配置文件。這裡的“Servlet 名稱”指的是註冊中央調度器<servlet-name/>標簽中指定的 Servlet 的 name 值。本例配置文件名為 springmvc-servlet.xml。

而一般情況下,配置文件是放在類路徑下的,即resources目錄下,所以在註冊中央調度器,需要為sprigMVC配置文件路徑

<!--配置springMVC核心容器對象DispatcherServlet-->
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationcontext-servlet.xml</param-value>
    </init-param>
    <!--在Tomcat啟動後,創建servlet對象
    load-on-startup:表示Tomcat啟動後創建對象的順序,它的值是整數,數值越小,Tomcat創建對象的事件越早,大於等於0
    -->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <!--可以寫為 / ,建議寫為*.do 的形式-->
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

第四步:創建springMVC配置文件

聲明組件掃描器

配置視圖解析器

SpringMVC 框架為瞭避免對於請求資源路徑與擴展名上的冗餘,在視圖解析器InternalResouceViewResolver 中引入瞭請求的前輟與後輟。而 ModelAndView 中隻需給出要跳轉頁面的文件名即可,對於具體的文件路徑與文件擴展名,視圖解析器會自動完成拼接。

<?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.xsd">
    <!--開啟註解掃描-->
    <context:component-scan base-package="school.xauat"></context:component-scan>
    <!--配置視圖解析器-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

第五步:創建Controller類

使用@Controller註解

使用@RequestMapping註解

@RequestMapping:(可以加載在類上面,也可以加載在方法上,若類和方法上都加的有,先訪問類,再訪問方法)

  • 設置請求映射,把請求和控制層中的方法設置映射關系
  • 當請求路徑和@RequestMapping的value屬性值一樣時,則該註解所標註的方法即為處理請求的方法

method:用來設置請求方式,隻有客戶端發送請求的方式和method的值一致,才能處理請求

請求方式:GET 查詢 POST 添加 PUT 修改 DELETE 刪除

params:用來設置客戶端傳到服務器的數據,支持表達式

  • username:必須包含username參數
  • !username:不能包含username參數
  • username = admin :username必須等於admin
  • username != admin :username必須不等於admin

headers:用來設置請求頭信息,所發送的請求的請求頭信息一定要和headers屬性中所設置的一致

@Controller()
public class TestServlet {
    @RequestMapping(value = "/some.do")
    public ModelAndView doSome(){
        //表示本次請求的處理結果
        //Model:數據,請求處理完成後,要顯示給用戶
        //View:視圖,比如jsp等
        ModelAndView mv = new ModelAndView();
        //添加數據,底層執行request.setRequestContext();
        mv.addObject("msg","歡迎使用SpringMVC做web項目");
        mv.addObject("fun","執行doSome方法");
        //指定視圖,指定視圖的完整路徑
        //框架對視圖執行forward操作
        mv.setViewName("show");
        return mv;
    }
}

第六步:創建主頁面和定義目標頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<a href="some.do">發起some.do的請求</a>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
SpringMVC的第一個項目
<h3>msg數據:${msg}</h3><br/>
<h3>fun數據:${fun}</h3>
</body>
</html>

使用SpringMVC框架web請求處理順序

總結

本篇文章就到這裡瞭,希望可以幫助到你,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: