首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Spring MVC 入門完整示例:從項目結構、核心配置到控制器與視圖解析全流程

     編輯:Java 綜合教學

項目結構

springmvc-demo
├── src/main/java
│   └── com.sprmvc.po
│       ├── User.java           // 實體類
│       └── HelloWorldController.java
├── src/main/resources
│   └── applicationContext.xml  // Spring MVC 配置
├── src/main/webapp
│   ├── WEB-INF
│   │   └── web.xml             // Servlet 容器部署描述符
│   ├── index.jsp               // 輸入頁
│   └── hello.jsp               // 結果頁
└── pom.xml                     // Maven 依賴

核心依賴

<dependencies>
    <!-- Spring MVC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.x</version>
    </dependency>
    <!-- Servlet API -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>
    <!-- JSP -->
    <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>

web.xml 配置 DispatcherServlet

<web-app xmlns="https://xmlns.jcp.org/xml/ns/javaee" version="4.0">
    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern> <!-- 攔截所有請求 -->
    </servlet-mapping>
</web-app>

applicationContext.xml Spring MVC 核心配置

<beans xmlns="https://www.springframework.org/schema/beans"
       xmlns:context="https://www.springframework.org/schema/context"
       xmlns:mvc="https://www.springframework.org/schema/mvc"
       xsi:schemaLocation="...">

    <!-- 1. 掃描控制器包 -->
    <context:component-scan base-package="com.sprmvc.po" />

    <!-- 2. 視圖解析器:邏輯視圖名 → 物理 JSP 路徑 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/" />      <!-- 前綴 -->
        <property name="suffix" value=".jsp" />    <!-- 後綴 -->
    </bean>

    <!-- 3. 靜態資源處理(可選) -->
    <mvc:default-servlet-handler />
    <mvc:annotation-driven />
</beans>

實體類 User.java

package com.sprmvc.po;
public class User {
    private String userName;
    private String password;
    // getter/setter 省略
}

控制器 HelloWorldController.java

package com.sprmvc.po;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletRequest;

@Controller
public class HelloWorldController {

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String printHelloWorld(HttpServletRequest request, User user) {
        // Spring 自動將請求參數綁定到 user 對象
        request.setAttribute("userName", user.getUserName());
        request.setAttribute("password", user.getPassword());
        return "hello"; // 邏輯視圖名 → /hello.jsp
    }
}

視圖頁面

index.jsp(輸入表單)

<%@ page contentType="text/html;charset=UTF-8" %>
<html><body>
<form method="get" action="hello">
    用戶名:<input type="text" name="userName"><br>
    密碼:<input type="password" name="password"><br>
    <input type="submit" value="提交">
</form>
</body></html>

hello.jsp(結果展示)

<%@ page contentType="text/html;charset=UTF-8" %>
<html><body>
<h1>操作成功</h1>
您的用戶名為:${userName}<br>
您的密碼為:${password}
</body></html>

運行驗證

  1. 部署到 Tomcat(Maven: tomcat7:run 或 IDE 部署)。
  2. 訪問 https://localhost:8080/springmvc-demo/ → 顯示 index.jsp。
  3. 輸入用戶名/密碼提交 → 請求 /hello → Controller 處理 → 視圖解析器定位 /hello.jsp → 顯示結果。

關鍵知識點總結

組件作用關鍵配置
DispatcherServlet前端控制器,統一入口web.xml <url-pattern>/</url-pattern>
@Controller標識控制器 Bean掃描包 context:component-scan
@RequestMappingURL 映射到方法value + method 限定
參數綁定請求參數 → 方法參數/POJO名稱匹配自動賦值
InternalResourceViewResolver邏輯視圖名 → 物理路徑prefix + suffix
Model/RequestAttribute數據傳遞到視圖request.setAttribute / ModelMap

進階延伸

  • REST 風格:@RestController + @RequestBody/@ResponseBody 返回 JSON。
  • 校驗:@Valid + JSR-303 註解 + BindingResult。
  • 異常處理:@ControllerAdvice + @ExceptionHandler。
  • 攔截器:實現 HandlerInterceptor 配置 mvc:interceptors。
  • Spring Boot:自動配置上述所有,零 XML 開箱即用。

掌握上述最小化 Spring MVC 閉環,是進階學習 Spring 生態、微服務架構的紮實基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved