SpringMVC學習筆記---依賴配置和簡單案例實現

靠譜楊 發表於 2021-11-27
Spring

初識SpringMVC

實現步驟:

  1. 新建一個web專案
  2. 匯入相關jar包
  3. 編寫web.xml,註冊DispatcherServlet
  4. 編寫springmvc配置檔案
  5. 接下來就是去建立對應的控制類 , controller
  6. 最後完善前端檢視和controller之間的對應
  7. 測試執行除錯

使用springMVC必須配置的三大件:

處理器對映器、處理器介面卡、檢視解析器

通常,我們只需要手動配置檢視解析器,而處理器對映器處理器介面卡只需要開啟註解驅動即可,而省去了大段的xml配置

註解實現SpringMVC

常見註解

@Component	元件
@Service	服務
@Controller	控制
@Respository	dao層

控制器

package com.kuang.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
//@Controller註解的類會自動新增到Spring上下文中
@Controller
@RequestMapping("/test2")
public class ControllerTest2{
	//對映訪問路徑
	@RequestMapping("/t2")
	public String index(Model model){
		//Spring MVC會自動例項化一個Model物件用於向檢視中傳值
		model.addAttribute("msg", "ControllerTest2");
		//返回檢視位置
		return "test";
	}
}
  • @Controller是為了讓Spring IOC容器初始化時自動掃描到;
  • @RequestMapping是為了對映請求路徑,這裡因為類與方法上都有對映所以訪問時應該是/test2/t2;

標準maven依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.reliable</groupId>
    <artifactId>SpringMVC2</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>springmvc-04-controller</module>
    </modules>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.9.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>
</project>

一、配置pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>SpringMVC2</artifactId>
        <groupId>com.reliable</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>springmvc-04-controller</artifactId>
    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
        </dependency>
    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>
</project>

二、配置web.xml

<?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">
    <!--1.註冊servlet-->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--通過初始化引數指定SpringMVC配置檔案的位置,進行關聯-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <!-- 啟動順序,數字越小,啟動越早 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--所有請求都會被springmvc攔截 -->
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

三、配置springmvc-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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!-- 自動掃描包,讓指定包下的註解生效,由IOC容器統一管理 -->
    <context:component-scan base-package="com.kuang.controller"/>
    <!-- 讓Spring MVC不處理靜態資源:html 等-->
    <mvc:default-servlet-handler/>
    <!--
    支援mvc註解驅動
        在spring中一般採用@RequestMapping註解來完成對映關係
        要想使@RequestMapping註解生效
        必須向上下文中註冊DefaultAnnotationHandlerMapping
        和一個AnnotationMethodHandlerAdapter例項
        這兩個例項分別在類級別和方法級別處理。
        而annotation-driven配置幫助我們自動完成上述兩個例項的注入。
		<mvc:annotation-driven /> 完成了對映和適配(支援用註解完成)
     -->
    <mvc:annotation-driven />
    <!-- 檢視解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          id="internalResourceViewResolver">
        <!-- 字首 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <!-- 字尾 -->
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

RestFul 風格

概念
Restful就是一個資源定位及資源操作的風格。不是標準也不是協議,只是一種風格。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。

功能
資源:網際網路所有的事物都可以被抽象為資源
資源操作:使用POST、DELETE、PUT、GET,使用不同方法對資源進行操作。
分別對應 新增、 刪除、修改、查詢。

RestFulController(@PathVariable)

package com.kuang.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class RestFulController {
	//對映訪問路徑
	@RequestMapping("/commit/{p1}/{p2}")
	public String index(@PathVariable int p1, @PathVariable int p2, Model model){
		int result = p1+p2;
		//Spring MVC會自動例項化一個Model物件用於向檢視中傳值
		model.addAttribute("msg", "結果:"+result);
		//返回檢視位置
		return "test";
	}

	//對映訪問路徑,必須是Get請求
	@RequestMapping(value = "/hello",method = {RequestMethod.GET})
	public String index2(Model model){
		model.addAttribute("msg", "hello!");
		return "test";
	}
}

SpringMVC學習筆記---依賴配置和簡單案例實現


使用method屬性指定請求型別

用於約束請求的型別,可以收窄請求範圍。指定請求謂詞的型別如GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE等。

	//對映訪問路徑,必須是Get請求
	@RequestMapping(value = "/hello",method = {RequestMethod.GET})
	public String index2(Model model){
		model.addAttribute("msg", "hello!");
		return "test";
	}

除了新增method,還可以使用註解

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping

	//對映訪問路徑,必須是Get請求
	@GetMapping(value = "/hello")
	public String index2(Model model){
		model.addAttribute("msg", "hello!");
		return "test";
	}