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

SpringMVC 註解式 HelloWorld 實戰:DispatcherServlet、ComponentScan、ViewResolver 零配置啟動

     編輯:Java 綜合教學

SpringMVC 註解式 HelloWorld 實戰

SpringMVC 3+ 全面支援註解驅動開發,徹底擺脫繁瑣 XML 映射配置。本文演示零 XML Controller 映射,核心組件:`DispatcherServlet`、``、``、`InternalResourceViewResolver`。

專案結構

src/
├─ main/
│  ├─ java/
│  │  └─ com/zhy/controllers/HelloWorldController.java
│  ├─ resources/
│  │  └─ springmvc-servlet.xml
│  └─ webapp/
│     ├─ WEB-INF/
│     │  ├─ web.xml
│     │  ├─ views/helloworld.jsp
│     │  └─ springmvc-servlet.xml (或放 resources)
│     └─ index.jsp

web.xml:DispatcherServlet 掛載攔截所有請求

<web-app>
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern> <!-- 攔截所有,包含靜態資源需額外配置 -->
  </servlet-mapping>
</web-app>

springmvc-servlet.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="...spring-mvc-4.2.xsd ...spring-context-4.2.xsd">

  <!-- 1. 掃描 Controller 包 -->
  <context:component-scan base-package="com.zhy.controllers" />

  <!-- 2. 啟用註解驅動 (@RequestMapping, @Autowired, 格式化, 驗證等) -->
  <mvc:annotation-driven />

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

Controller:@Controller + @RequestMapping

package com.zhy.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloWorldController {
    @RequestMapping("/mvc")
    public String hello() {
        System.out.println("call controller");
        return "helloworld"; // 邏輯視圖名
    }
}

視圖解析:`/WEB-INF/views/` + `helloworld` + `.jsp` = `/WEB-INF/views/helloworld.jsp`

JSP 視圖:/WEB-INF/views/helloworld.jsp

<%@ page contentType="text/html;charset=UTF-8" %>
<html><body>
  <h2>Hello World! SpringMVC 註解式開發成功</h2>
  <p>當前時間:${new java.util.Date()} </p>
</body></html>

啟動驗證

  1. 部署到 Tomcat,啟動伺服器。
  2. 瀏覽器訪問:`https://localhost:8080/專案名/mvc`
  3. 控制台輸出 `call controller`,頁面顯示 JSP 內容 → 成功。

進階補充:REST 風格 URL 與靜態資源

<!-- REST 風格:@RequestMapping("/article/details/{id}") + @PathVariable -->
@RequestMapping("/article/details/{id}")
public ModelAndView details(@PathVariable("id") int id) { ... }

<!-- 靜態資源放行:CSS/JS/圖片不經 DispatcherServlet -->
<mvc:resources mapping="/resources/**" location="/resources/" />
<mvc:resources mapping="/static/**" location="/static/" />

常見坑點排查

  1. 404:檢查 `url-pattern`、`@RequestMapping` 路徑、視圖解析器前後綴、JSP 物理路徑。
  2. 靜態資源 404:必須配置 `` 或 ``。
  3. 3. 亂碼:`web.xml` 配置 `CharacterEncodingFilter`,`springmvc-servlet.xml` 確保 `annotation-driven` 啟用 `StringHttpMessageConverter` UTF-8。 4. 掃描不到 Controller:`base-package` 需包含 Controller 所在包及子包。

註解式 SpringMVC 讓 Web 開發回歸純 Java 代碼,結構清晰、重構安全、擴展靈活。

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