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

Spring MVC 入門實戰(一):從零搭建 HelloWorld 專案完整教程

     編輯:Java 綜合教學

Spring MVC 入門實戰(一):從零搭建 HelloWorld 專案完整教程

本文以最簡單的方式帶你快速跑通 Spring MVC 流程,掌握核心配置與請求流轉。

一、建立 Web 專案

  • Eclipse 新建 Dynamic Web Project,專案名:springMVC1。
  • Tomcat 埠號設為 9090。

二、引入核心 JAR 包

將 Spring MVC 及其依賴(spring-webmvc、spring-core、spring-context、spring-beans、spring-expression、commons-logging 等)放入 WEB-INF/lib。

JAR 包列表

三、配置 web.xml —— 註冊核心 DispatcherServlet

<web-app ... version="2.5">
    <display-name>springMVC1</display-name>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <!-- 核心前端控制器 -->
    <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*:config/spring-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>

四、編寫控制器 HelloWorldController

路徑:src/com/tgb/web/controller/HelloWorldController.java

package com.tgb.web.controller;

import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class HelloWorldController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        System.out.println("------這是控制方法-----");
        Map<String, Object> map = new HashMap<>();
        map.put("hello1", "hello1");
        map.put("hello2", "hello2");
        map.put("hello3", "hello3");
        String hello = "你好啊";
        String url = "/welcome"; // 邏輯視圖名
        return new ModelAndView(url, "map", map); // (視圖名, 模型鍵, 模型值)
    }
}

說明: 實作 Controller 介面為早期風格,後續會講解註解式開發(@Controller + @RequestMapping)。ModelAndView 封裝視圖名與模型數據。

五、編寫視圖 welcome.jsp

路徑:WEB-INF/jsp/welcome.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>首頁</title></head>
<body>
    這是我的第一個 JSP 頁面!!!!!!!++++++++++
    <br/>
    <h3>傳遞的數據</h3>
    ${hello} <!-- 此處取不到,Controller 未放入 hello -->
    ${map.hello2}
    <div>
        <c:forEach items="${map}" var="m">
            ${m.key} ====== ${m.value} <br/>
        </c:forEach>
    </div>
</body>
</html>

六、編寫 Spring MVC 配置文件 spring-servlet.xml

路徑:src/config/spring-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="https://www.springframework.org/schema/beans"
       xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="https://www.springframework.org/schema/beans
       https://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <!-- 1. 映射 URL 到 Controller Bean -->
    <bean name="/test1/helloworld" class="com.tgb.web.controller.HelloWorldController" />

    <!-- 2. 視圖解析器:前綴 + 後綴 = 完整路徑 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

七、部署驗證

  1. 專案部署至 Tomcat。
  2. 瀏覽器訪問:https://localhost:9090/springMVC1/test1/helloworld
  3. 控制台輸出「------這是控制方法-----」,頁面顯示 Map 遍歷數據,代表成功!

運行結果截圖

核心流程回顧

  1. 請求 /test1/helloworld → DispatcherServlet 攔截。
  2. SimpleUrlHandlerMapping (隱式) 匹配 Bean Name /test1/helloworld 找到 Controller。
  3. Controller 返回 ModelAndView("/welcome", map)。
  4. InternalResourceViewResolver 拼接路徑 /WEB-INF/jsp/welcome.jsp。
  5. JSP 渲染模型數據輸出 HTML。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved