Java EE期末总结(第五章)

目录

[一、Spring MVC工作原理](#一、Spring MVC工作原理)

[二、Spring MVC框架依赖](#二、Spring MVC框架依赖)

[三、Spring MVC项目配置](#三、Spring MVC项目配置)

[四、Spring MVC框架配置](#四、Spring MVC框架配置)

1、注解驱动配置

2、组件扫描包配置

[3、视图解析器配置( spring - mvc.xml )](#3、视图解析器配置( spring - mvc.xml ))

4、静态资源映射配置

[五、Spring MVC示例](#五、Spring MVC示例)

文件结构

代码实现

1、pom.xml

2、web.xml

3、spring-mvc-config.xml

4、HelloController.java

5、hello.jsp

[六、Spring MVC控制器](#六、Spring MVC控制器)

1、控制器定义

2、请求映射注解

3、控制器方法的返回值

4、数据绑定与参数接收


一、Spring MVC工作原理

如图所示,所有传入的请求都被作为前台控制器的 DispatcherServlet 拦截。

DispatcherServlet 从 XML 文件中获得一个处理程序映射的条目,并将请求转发给控制器。

控制器返回一个 ModelAndView 的对象。

DispatcherServlet 检查 XML 文件中的视图解析器条目并调用指定的视图组件。

二、Spring MVC框架依赖

pom.xml

javascript 复制代码
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>版本号</version>
</dependency>

三、Spring MVC项目配置

web.xml

javascript 复制代码
<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/springmvc</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>

四、Spring MVC框架配置

1、注解驱动配置

javascript 复制代码
<mvc:annotation-driven/>

2、组件扫描包配置

javascript 复制代码
<context:component-scan base-package="com.example.controllers"/>

标签扫描包含控制器等组件的包,让 Spring 能自动发现和注册这些组件。

3、视图解析器配置(spring - mvc.xml

javascript 复制代码
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"/>
    <property name="suffix" value=".jsp"/>
</bean>

这表示逻辑视图名对应的 JSP 文件在/WEB-INF/views/ 目录下,且以.jsp 为后缀。

4、静态资源映射配置

javascript 复制代码
<mvc:resources location="/resources/" mapping="/resources/**"/>

表示将/resources/ 目录下的静态资源映射到/resources/** 路径供访问。

五、Spring MVC示例

文件结构

bash 复制代码
spring-mvc-simple-example
├── src
│   └── main
│       ├── java
│       │   └── com
│       │       └── example
│       │           └── controller
│       │               └── HelloController.java
│       ├── resources
│       │   └── spring-mvc-config.xml
│       └── webapp
│           └── WEB-INF
│               ├── web.xml
│               └── views
│                   └── hello.jsp
└── pom.xml

代码实现

1、pom.xml
javascript 复制代码
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>spring-mvc-simple-example</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
        <!-- Spring Web MVC -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.28</version>
        </dependency>
        <!-- Servlet API -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
2、web.xml
javascript 复制代码
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                             http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID"
         version="3.0">

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-mvc-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>
3、spring-mvc-config.xml
javascript 复制代码
<beans xmlns="http://www.springframework.org/schema/beans"
       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">

    <!-- 开启组件扫描 -->
    <context:component-scan base-package="com.example.controller"/>

    <!-- 开启注解驱动 -->
    <mvc:annotation-driven/>

    <!-- 视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>
4、HelloController.java
java 复制代码
package com.example.controller;

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

@Controller
public class HelloController {

    @RequestMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello, Spring MVC!";
    }
}
5、hello.jsp
javascript 复制代码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>Hello Spring MVC</title>
</head>
<body>
    <h1>Hello, Spring MVC!</h1>
</body>
</html>

六、Spring MVC控制器

1、控制器定义

在 Spring MVC 中,通过在 Java 类上添加@Controller注解来标识该类为一个控制器。

java 复制代码
package com.example.controller;

import org.springframework.stereotype.Controller;

@Controller
public class UserController {
    // 控制器方法将在这里定义
}

2、请求映射注解

/list方法处理/users/list的请求,/detail/{id}方法处理类似/users/detail/1这样带有路径参数的请求,@PathVariable注解用于将路径中的参数值绑定到方法的参数上。

java 复制代码
@Controller
@RequestMapping("/users")
public class UserController {

    @RequestMapping("/list")
    public String listUsers() {
        // 处理获取用户列表的业务逻辑
        return "userList"; // 返回逻辑视图名
    }

    @RequestMapping("/detail/{id}")
    public String userDetail(@PathVariable("id") int userId) {
        // 根据userId获取用户详情的业务逻辑
        return "userDetail";
    }
}

3、控制器方法的返回值

4、数据绑定与参数接收

相关推荐
ππ记录9 分钟前
java面试题带答案2025最新整理
java·开发语言
PHASELESS41110 分钟前
Java栈与队列深度解析:结构、实现与应用指南
java·开发语言·算法
Huazie1 小时前
flea-cache使用之Redis哨兵模式接入
java·redis·开源
啊阿狸不会拉杆1 小时前
数据结构-限定性线性表 - 栈与队列
java·c语言·数据结构·c++·python·算法
追梦No11 小时前
Flink回撤流详解 代码实例
java·服务器·flink
你们补药再卷啦1 小时前
newbee商城购物车模块mapper.xml
java·数据库·sql
开开心心就好1 小时前
功能丰富的PDF处理免费软件推荐
java·windows·python·pdf·电脑·生活·软件需求
异常君2 小时前
Java 锁进化论:synchronized 的底层原理与锁优化技术详解
java·后端
顾林海2 小时前
深度解析TreeMap工作原理
android·java·面试
JAVA学习通2 小时前
MySQL联合查询||多表查询
java·数据库·mysql