1. 程式人生 > 其它 >Spring MVC學習筆記(二)

Spring MVC學習筆記(二)

一、第一個Spring MVC案例

1.建立 Maven 專案並新增相關的jar包

  在 pom.xml 檔案下新增 dependency 依賴

<dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.8.0-M1</version>
            <
scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.8</version> </dependency> <dependency
> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>
javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.3</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies>spring-webmvc
  • spring-webmvc-5.3.8.jar(必備)

  • javax.servlet-api-4.0.1.jar(必備)

  • javax.servlet.jsp-api-2.3.3.jar(必備)

  • jstl-1.2.jar(必備)

  • JUnit jar包:junit-jupiter-api-5.8.0-M1.jar(推薦,用於測試程式碼)

2.建立子專案,並新增web支援

3.配置web資料夾下的web.xml檔案,步驟如下:

  1)註冊 DispatcherServlet

  2)載入Spring MVC的配置檔案:springmvc-servlet.xml

  3)設定建立 Servlet 例項的啟動時機

  4)設定對映 Servlet 的對外訪問路徑

<?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.配置前端控制器DispatcherServlet -->
    <!-- SpringMVC核心 -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <!-- 2.DispatcherServlet繫結Spring的配置檔案  -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>

        <!-- 3.設定啟動級別  -->
        <!-- 啟動順序,數字越小,啟動越早 -->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- 在SpringMVC中 url-pattern -->
    <!-- / : 匹配所有的請求  不匹配jsp頁面 -->
    <!-- /*: 匹配所有的請求  包括匹配jsp頁面 -->
    <!-- 4.設定對映Servlet的訪問路徑 -->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app> 

  其中 servlet 標籤中的 servlet-name 和servlet-mapping 標籤中的 servlet-name 值必須相同,因為通過 servlet 標籤中的 servlet-name 標籤對映到 servlet-class 標籤中的值,最終訪問 servlet-class 標籤中的 class。

4.在 resources 資料夾下建立配置檔案 springmvc-servlet.xml 

  1)配置處理器對映器 HandlerMapping

  2)配置處理器介面卡HandlerAdapter

  3)配置檢視解析器 ViewReslover

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

        <!-- 1.配置處理器對映器HandlerMapping -->
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

        <!-- 2.配置處理器介面卡HandlerAdapter-->
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

        <!-- 3.配置檢視解析器ViewResolver -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!-- 字首  -->
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <!-- 字尾  -->
            <property name="suffix" value=".jsp"/>
        </bean>

</beans>

  檢視解析器中的 property 標籤會自動為/WEB-INF/jsp/下的檔案自動新增 jsp 字尾

5.建立對應的控制類Controller

  在java資料夾下建立存放控制器的包 com.autumn.controller ,建立 HelloController.java 檔案

  編寫我們要操作業務Controller ,實現 Controller 介面,並需要返回一個 ModelAndView

public class HelloController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        ModelAndView modelAndView = new ModelAndView();

        //業務程式碼
        String result = "Welcome Spring MVC";
        modelAndView.addObject("msg" , result);

        //檢視跳轉
        modelAndView.setViewName("test");

        return modelAndView;
    }
}

6.建立前端檢視 , 並且和 HelloController.java 進行繫結

  建立test.jsp檔案

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

${msg}

</body>
</html>

  test.jsp 和 HelloController.java 進行繫結

  在配置檔案 springmvc-servlet.xml 進行註冊和繫結

<!-- BeanNameUrlHandlerMapping -->
        <!-- id為http://localhost:8080/test 中的 test -->
        <bean id="/test" class="com.autumn.controller.HelloController"/>

7.執行

  在Tomcat中進行配置

  執行Tomcat

  跳轉到test頁面

8.可能出現的問題:訪問出現404

  • 檢視控制檯輸出,看是否缺少了jar包
  • 如果jar包存在,顯示無法輸出,就在IDEA的專案釋出中,新增lib依賴
  • 重啟Tomcat 即可解決!
  • 顯示程序被佔用,一般是IDEA佔用對應程序,重啟IDEA即可解決問題