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

Spring MVC 環境搭建全流程:Maven 依賴、web.xml、DispatcherServlet、視圖解析器與註解開發

     編輯:Java 綜合教學

項目背景

從 C# 轉 Java 技術棧,選用 Spring MVC + MyBatis 架構。開發環境:Win 10、IntelliJ IDEA 2016.1.3、Maven 多模塊項目。

一、Maven 依賴配置 (pom.xml)

<properties>
    <spring.version>4.1.1.RELEASE</spring.version>
</properties>

<dependencies>
    <!-- Spring 核心 -->
    <dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>${spring.version}</version></dependency>
    
    <!-- Web 支持 -->
    <dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>
    
    <!-- 驗證 -->
    <dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.1.0.Final</version></dependency>
    <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>5.1.3.Final</version></dependency>
    
    <!-- 日志 -->
    <dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.3</version></dependency>
</dependencies>

二、web.xml 配置核心 Servlet

<web-app xmlns="https://java.sun.com/xml/ns/javaee" version="2.5">
    <servlet>
        <servlet-name>servletDispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>servletDispatcher</servlet-name>
        <url-pattern>/</url-pattern> <!-- 攔截所有請求,REST 風格 -->
    </servlet-mapping>
    
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

關鍵點解析

  • contextConfigLocation:指定 Spring MVC 配置文件位置,classpath: 表示類路徑根目錄(src/main/resources)。
  • load-on-startup>1:容器啟動時實例化 DispatcherServlet,完成上下文初始化,首請求無延遲。
  • url-pattern>/:而非 *.do,支援 RESTful 風格 URL,靜態資源需配置 <mvc:default-servlet-handler/> 或 <mvc:resources/> 放行。

三、Spring MVC 配置文件 (springmvc.xml)

<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. 掃描 Controller 包 -->
    <context:component-scan base-package="com.tellyes.springmvc"/>
    
    <!-- 2. 視圖解析器:邏輯視圖名 → 物理 JSP 路徑 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    
    <!-- 3. 靜態資源處理 (可選) -->
    <mvc:default-servlet-handler/>
    <mvc:resources mapping="/static/**" location="/static/"/>
    
    <!-- 4. 註解驅動 (可選,Spring 3.1+ 默認開啟) -->
    <mvc:annotation-driven/>
</beans>

四、Controller 開發範例

@Controller
public class HelloWorld {
    private static final String SUCCESS = "success";
    
    @RequestMapping("/helloworld")
    public String helloworld() {
        System.out.println("helloworld");
        return SUCCESS; // 邏輯視圖名
    }
}

運行驗證

  1. 啟動 Tomcat,訪問 https://localhost:8080/helloworld
  2. 控制台輸出 "helloworld"
  3. 瀏覽器渲染 /WEB-INF/views/success.jsp

五、常見問題與解決

問題原因解決
404 Not Found視圖解析器前綴/後綴錯誤、JSP 路徑不存在檢查 prefix/suffix、確認 views 目錄結構
靜態資源 (CSS/JS) 404url-pattern:/ 攔截靜態請求配置 <mvc:default-servlet-handler/> 或 <mvc:resources/>
中文亂碼未配置字符編碼過濾器web.xml 添加 CharacterEncodingFilter (UTF-8)
Controller 未被掃描component-scan 包路徑錯誤確認 base-package 包含 Controller 類

六、下一步擴展方向

  • 整合 MyBatis:配置 SqlSessionFactoryBean、MapperScannerConfigurer
  • RESTful API:@RestController、@RequestBody/@ResponseBody、Jackson JSON 序列化
  • 攔截器:HandlerInterceptor 實現登錄檢查、日志記錄
  • 異常統一處理:@ControllerAdvice + @ExceptionHandler
  • 文件上傳:MultipartResolver + @RequestParam("file") MultipartFile

總結

Spring MVC 核心配置三步走:web.xml 註冊 DispatcherServlet → springmvc.xml 配置掃描與視圖解析 → @Controller + @RequestMapping 開發業務。Maven 管理依賴讓版本升級只需改屬性值。掌握 DispatcherServlet 初始化流程、視圖解析機制、靜態資源放行,是 Spring MVC 開發的必備基本功。

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