创建Spring MVC工程:从零开始搭建Spring Web MVC项目

创建Spring MVC工程:从零开始搭建Spring Web MVC项目

一、Spring MVC简介

Spring MVC(Model-View-Controller)是Spring框架中用于构建Web应用程序的模块,它遵循经典的MVC设计模式,将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个部分。Spring MVC的核心是DispatcherServlet,它负责接收所有HTTP请求并将其分发到相应的控制器。

Spring MVC的启动依赖于web.xml文件中的配置,通过DispatcherServlet将请求映射到控制器,控制器处理请求后将结果返回给视图进行渲染。

二、创建Spring MVC项目

1. 创建Maven项目

首先,我们需要创建一个Maven项目。在IDE中选择File -> New -> Project,选择Maven,并确保勾选Create from archetype,选择maven-archetype-webapp。

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

4.0.0

com.example

springmvc-demo

war

1.0-SNAPSHOT

springmvc-demo Maven Webapp

http://www.example.com

org.springframework

spring-webmvc

5.3.32

2. 配置web.xml

在web.xml中配置DispatcherServlet,确保它能够拦截所有请求。

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee

http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

version="3.1">

dispatcher

org.springframework.web.servlet.DispatcherServlet

1

dispatcher

/

contextConfigLocation

/WEB-INF/spring-mvc-config.xml

org.springframework.web.context.ContextLoaderListener

3. 配置Spring MVC

创建spring-mvc-config.xml文件,配置Spring MVC的组件扫描和视图解析器。

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc.xsd">

三、核心知识点解析

1. DispatcherServlet

DispatcherServlet是Spring MVC的核心组件,负责将请求分发到相应的控制器。通过web.xml中的配置,DispatcherServlet会在应用启动时加载。

2. IOC容器

IOC(Inversion of Control,控制反转)是Spring的核心思想,通过IOC容器管理Bean的生命周期和依赖注入。在spring-mvc-config.xml中,用于扫描控制器类。

3. 视图解析器

视图解析器负责将控制器返回的逻辑视图名称解析为实际的视图文件。InternalResourceViewResolver是常用的视图解析器,通过prefix和suffix配置视图文件的路径和后缀。

四、常见问题(FAQ)

问题 答案

Q1: DispatcherServlet的作用是什么? DispatcherServlet是Spring MVC的核心组件,负责接收HTTP请求并将其分发到相应的控制器。

Q2: 如何配置视图解析器? 在spring-mvc-config.xml中配置InternalResourceViewResolver,通过prefix和suffix指定视图文件的路径和后缀。

Q3: web.xml中的作用是什么? load-on-startup指定DispatcherServlet在应用启动时加载,值为1表示优先加载。

Q4: 如何启用MVC注解? 在spring-mvc-config.xml中配置即可启用MVC注解。

Q5: Spring MVC的控制器类需要哪些注解? 控制器类需要使用@Controller注解,方法需要使用@RequestMapping注解。

五、Spring MVC与Spring Boot的对比

特性 Spring MVC Spring Boot

配置复杂度 需要手动配置web.xml和spring-mvc-config.xml 自动化配置,简化开发

启动方式 依赖web.xml中的DispatcherServlet配置 使用SpringApplication.run启动

依赖管理 手动管理Maven依赖 自动化依赖管理

视图解析 需要配置视图解析器 默认支持Thymeleaf等模板引擎

六、代码示例

1. 控制器示例

package com.example.controller;

import org.springframework.stereotype.Controller;

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

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.servlet.ModelAndView;

@Controller

public class HelloController {

@RequestMapping(value = "/hello", method = RequestMethod.GET)

public ModelAndView hello() {

ModelAndView modelAndView = new ModelAndView();

modelAndView.addObject("message", "Hello, Spring MVC!");

modelAndView.setViewName("hello");

return modelAndView;

}

}

2. 视图文件示例

在/WEB-INF/views/hello.jsp中创建视图文件:

`jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

Hello Spring MVC

${message}

`

3. 数据源配置示例

通过以上步骤,您可以成功创建一个Spring MVC项目并运行一个简单的控制器示例。Spring MVC虽然逐渐被Spring Boot取代,但其核心思想和设计模式仍然值得深入学习。

相关推荐

合作伙伴