目录

Springmvc

目录

Springmvc

Spring MVC 的主要作用是简化开发,提供更清晰的分层结构(如控制器、服务层、数据访问层等),并提供丰富的功能(如数据绑定、验证、视图解析等)依赖于底层的Servlet容器

大致流程:

https://i-blog.csdnimg.cn/direct/d1b0d5b5226e47c6a56a1ecb7fb32011.png

1、创建web项目

https://i-blog.csdnimg.cn/direct/558f6521c4a049c0bd2ef56429fe1e8c.png

2、导入必要的依赖

pom.xml文件

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.example</groupId>
  <artifactId>Demo3</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Demo3 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <!--spring web的坐标-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
<!--      spring-web提供了Spring框架的Web模块功能包括HTTP客户端和服务器端的支持是构建Web应用的基础-->
      <version>6.1.14</version>
    </dependency>
    <!--springmvc的坐标-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
<!--      spring-webmvcSpring MVC框架的核心模块用于构建基于MVC架构的Web应用它提供了请求映射视图解析数据绑定等功能-->
      <version>6.1.14</version>
    </dependency>
    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
<!--      jakarta.servlet-apiJava Servlet API的规范用于开发Servlet和JSP应用它定义了Servlet和JSP的接口和类是Java Web应用开发的基础-->
      <version>6.0.0</version>
    </dependency>
    <dependency>
      <groupId>jakarta.platform</groupId>
      <artifactId>jakarta.jakartaee-web-api</artifactId>
<!--      jakarta.jakartaee-web-apiJakarta EE Web Profile的API规范包含了ServletJSPJSTL等Web相关的API-->
      <version>9.1.0</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse</groupId>
      <artifactId>yasson</artifactId>
<!--      yassonEclipse Yasson是Jakarta JSON Binding的参考实现用于将Java对象与JSON数据进行相互转换在Web应用中常用于处理JSON格式的数据-->
      <version>3.0.3</version> <!-- 使用最新版本 -->
    </dependency>
    <dependency>
      <groupId>jakarta.servlet.jsp.jstl</groupId>
      <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<!--      jakarta.servlet.jsp.jstl-apiJSP标准标签库JSTL的API规范提供了一组标准的标签用于在JSP页面中进行条件判断循环格式化等操作-->
      <version>3.0.1</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.web</groupId>
      <artifactId>jakarta.servlet.jsp.jstl</artifactId>
<!--      jakarta.servlet.jsp.jstlJSTL的实现用于在JSP页面中使用JSTL标签-->
      <version>3.0.1</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
<!--      junitJUnit是Java的单元测试框架用于编写和运行单元测试scope 设置为 test 表示该依赖仅在测试阶段使用-->
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>Demo3</finalName>
  </build>


</project>

pom.xml 是Maven项目的核心配置文件,它定义了项目的基本信息、依赖管理、构建配置等内容。Maven是一个项目管理和构建自动化工具,通过 pom.xml 可以方便地管理项目的依赖、编译、测试、打包等操作

web.xml文件

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         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_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.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>

web.xml 是 Java Web 应用的部署描述文件,在 Java Web 项目里起着关键作用,它主要用于配置 Web 应用的 Servlet、过滤器、监听器等组件

DispatcherServlet:它是 Spring MVC 框架的核心调度器,负责接收所有进入应用的 HTTP 请求,并且根据配置将请求分发给合适的处理器(Controller)。

init-param:通过 contextConfigLocation 参数指定 Spring MVC 的配置文件为 classpath:springmvc.xml

springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<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">

    <mvc:annotation-driven></mvc:annotation-driven>
此标签开启了 Spring MVC 的注解驱动功能让你能够使用 @Controller@RequestMapping 这类注解来定义控制器和请求映射
它会自动注册处理请求映射所需的处理器映射器处理器适配器和其他必要的组件    
    <context:component-scan base-package="org.example"></context:component-scan>
该标签指示 Spring 去扫描 org.example 包及其子包下的所有类
会自动发现并注册带有 @Controller@Service@Repository@Component 等注解的类为 Spring 组件

</beans>

springmvc.xml 文件在项目中起到了关键作用,它开启了 Spring MVC 的注解驱动功能,允许使用注解来定义控制器和请求映射;

测试类:

package org.example;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

// 声明此类为控制器类
@Controller
public class UserinfoHandler {

    @RequestMapping(value = "/userinfo", method={RequestMethod.GET, RequestMethod.POST})
    public String getUserinfo( HttpServletRequest request, HttpServletResponse response, Model model) throws UnsupportedEncodingException {
        // 获取浏览器传来的数据
        request.setCharacterEncoding("UTF-8");
        String userid = request.getParameter("userid");
        System.out.println("浏览器传来的id是:" + userid);
//        System.out.println(response);


        return "forward:/WEB-INF/helloworld.jsp";
    }
}

这个spring的整体结构可以理解为  在web.xml中 注册了中央控制器 DispatherServlet 然后在里面写上管理的文件 如springmvc.xml 之后在springmvc中 注册了 处理器映射器处理器适配器视图解析器 和处理器然后通过context:component-scan 设置了扫描注解的范围 org.example 然后定义一个控制类 使用@Controller注解 定义一个方法 处理请求和返回数据