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

Maven + Spring MVC 從零搭建:依賴配置、Web 初始化與常見坑點解決

     編輯:Java 綜合教學

Maven 構建 Spring MVC 專案完整指南:從 pom.xml 到 Controller 運行

記錄初次接觸 Spring MVC + Maven 的完整搭建過程,包括項目結構、核心依賴、web.xml、Spring 配置、Controller 編寫,以及兩個經典啟動報錯的解決方案(缺少 Maven 依賴部署、JSTL 缺包)。

1. 項目結構

springMvc
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── cn.taofu.TestController
│   │   ├── resources
│   │   └── webapp
│   │       ├── WEB-INF
│   │       │   ├── web.xml
│   │       │   ├── spring-servlet.xml
│   │       │   └── jsps
│   │       │       └── index.jsp
│   │       └── index.html
│   └── test
└── target

2. pom.xml 核心依賴(Spring 3.2.4)

<dependencies>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>3.2.4.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>3.2.4.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>3.2.4.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>3.2.4.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>3.2.4.RELEASE</version>
  </dependency>
  <!-- 查找坐標利器:https://mvnrepository.com/ -->
</dependencies>

3. web.xml 配置 DispatcherServlet

<web-app version="2.5" ...>
  <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/spring-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern> <!-- 攔截所有請求 -->
  </servlet-mapping>
</web-app>

4. spring-servlet.xml 掃描包與視圖解析器

<beans ...>
  <context:annotation-config/>
  <context:component-scan base-package="cn.taofu">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
  </context:component-scan>

  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsps/"/>
    <property name="suffix" value=".jsp"/>
  </bean>
</beans>

5. 測試 Controller

@Controller
@RequestMapping("/test")
public class TestController {
    @RequestMapping("/mvc")
    public String getMode() {
        System.out.println("hello springmvc");
        return "index"; // 對應 /WEB-INF/jsps/index.jsp
    }
}

6. 訪問驗證

啟動 Tomcat,瀏覽器訪問 https://localhost:8080/springMvc/test/mvc 應跳轉到 index.jsp 並控制台打印日志。

7. 兩大經典坑點與解決

坑點一:ClassNotFoundException: DispatcherServlet

java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

原因:Maven 依賴未部署到 WEB-INF/lib。
解決(Eclipse/MyEclipse):
Project Properties → Deployment Assembly → Add → Java Build Path Entries → Maven Dependencies → Finish,然後清理重新部署。

坑點二:NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

原因:缺少 JSTL API 與實現包。
解決:pom.xml 添加:

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
</dependency>
<dependency>
  <groupId>taglibs</groupId>
  <artifactId>standard</artifactId>
  <version>1.1.2</version>
</dependency>

或手動放入 jstl-1.2.jar、standard-1.1.2.jar 到 WEB-INF/lib。

8. 後續擴展方向

  • 整合 MyBatis/Hibernate(添加 spring-orm、mybatis-spring、數據源配置)。
  • 配置事務管理(@EnableTransactionManagement、DataSourceTransactionManager)。
  • RESTful API 支持(@RestController、Jackson JSON 序列化)。
  • 攔截器、異常統一處理、國際化、文件上傳(MultipartResolver)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved