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即可解決問題