SpringMVC之入门(带你体验SpringMVC的乐趣)

目录

前言

一、SpringMVC简介

1. 概念

 2.应用领域

3. 作用(重要性)

4. 使用步骤

5. 工作流程及原理

工作流程

 工作原理

 工作流程图

 二、SpringMVC入门(项目整合)

1. 导入依赖

pom.xml

 2. 编写配置spring-mvc.xml

3. 配置web.xml文件

4. IndexController 代码

5. jsp代码

6. 测试结果

页面结果

输出结果

三、静态资源处理

spring-mvc.xml

导入静态资源

测试


前言

相比我们都了解过自定义MVC框架的一些知识,也体会到自定义MVC自定义框架在一些领域上的编程开发给我们带来的便利与效率。今天我要给大家分享的是和自定义MVC框架相似的架——SpringMVC框架,让我一起来体会SpringMVC框架带我们意想不到的收获吧。

一、SpringMVC简介

1. 概念

Spring MVC是Spring Framework的一个模块,用于快速开发Web应用程序。它是一个基于Java的MVC框架,采用了经典的模型-视图-控制器(Model-View-Controller)设计模式

在Spring MVC中,模型(Model)用于封装业务数据和逻辑,负责处理数据的读写、验证和存取等。视图(View)负责展示数据给用户,通常是通过生成HTML页面或返回JSON/XML数据给客户端进行展示。控制器(Controller)接收用户的请求,根据请求的类型和参数来调用相应的处理逻辑,并最终将处理结果返回给视图进行展示。

Spring MVC提供了一个灵活的、松散耦合的框架,使开发人员可以轻松地构建可维护和可测试的Web应用程序。它支持多种配置方式,可以使用注解或配置文件来定义请求映射、处理方法和视图解析器等。同时,Spring MVC还提供了丰富的功能和工具,例如表单验证、文件上传、RESTful API的支持等,使开发人员能够更加高效地开发Web应用。

总的来说,Spring MVC是一个强大而灵活的Java Web开发框架,它简化了开发过程并提供了许多有用的功能,使开发人员能够快速构建出高质量的Web应用程序。

 2.应用领域

SpringMVC应用领域
领域 说明
企业级Web应用程序

Spring MVC适用于构建企业级的Web应用程序,可以轻松处理复杂的业务逻辑和数据处理。它提供了丰富的功能和工具,使得开发人员能够高效地构建可扩展和可维护的应用。

RESTful API开发 Spring MVC对于构建RESTful风格的API非常适用。它提供了强大的请求映射和参数处理功能,可以方便地处理GET、POST、PUT、DELETE等HTTP请求,并支持内容协商、版本控制和异常处理等需求。
单页应用程序 随着前端技术的发展,越来越多的Web应用采用单页应用(Single Page Application,SPA)的架构。Spring MVC可以作为后端服务提供数据和业务逻辑支持,与前端框架(如Angular、React或Vue.js)进行集成,实现完整的单页应用。
电子商务平台 Spring MVC提供了灵活的数据处理和视图展示功能,适用于构建电子商务平台。开发人员可以使用Spring MVC处理购物车、订单管理、支付集成等功能,并通过模板引擎(如Thymeleaf)生成动态的HTML页面。
社交网络应用 Spring MVC可以用于构建社交网络应用,例如用户注册、登录、账号管理、好友关系、消息通知等功能。Spring MVC提供了用户认证和授权的支持,并可以与第三方登录(如OAuth)进行集成。

3. 作用(重要性)

  1. 架构模式降低了代码的耦合性,提高了应用程序的可维护性和可测试性,从而达到高内聚低耦合。

  2. 灵活性和可扩展性Spring MVC提供了灵活的配置和扩展机制,框架内置了众多的解决方案和插件,可实现各种功能和扩展,如表单验证、文件上传、权限控制等。

  3. 请求处理和路由控制:Spring MVC提供了强大的请求处理和路由控制功能,可以将不同类型的请求映射到相应的处理方法上。

  4. 视图解析和模板引擎:Spring MVC支持多种视图解析技术和模板引擎,如JSP、Thymeleaf、Velocity等,使开发人员能够灵活选择适合项目需求的视图技术。这些视图技术可以将动态数据和静态模板结合起来,生成最终的HTML内容,将结果返回给客户端。

  5. 处理复杂业务逻辑:Spring MVC提供了方便的数据绑定、表单验证和错误处理等功能,使开发人员能够方便地处理复杂的业务逻辑。通过注解和配置文件,可以实现数据的自动绑定、输入验证和错误处理,提高开发效率和代码质量。

4. 使用步骤

  1. 添加依赖:在您的项目中添加Spring MVC框架的依赖项。您可以使用构建工具(如Maven或Gradle)来管理依赖关系。确保您的项目中包含了Spring MVC的相关库和依赖项。

  2. 配置Web.xml:在您的项目的Web.xml文件中配置Spring MVC的DispatcherServlet。DispatcherServlet是Spring MVC的核心组件,负责处理所有的请求和路由控制。您需要配置DispatcherServlet的URL映射和其他相关参数。

  3. 创建控制器:创建一个或多个控制器类来处理请求。控制器类使用注解或配置文件来定义请求映射和处理方法。您可以在控制器方法中编写业务逻辑,并返回相应的视图或数据。

  4. 配置视图解析器:配置视图解析器来解析控制器方法返回的视图名称,并生成最终的HTML页面或其他类型的响应。您可以选择使用JSP、Thymeleaf、Velocity等视图技术,并配置相应的解析器。

  5. 配置其他组件:根据您的需求,配置其他Spring MVC的组件,如数据绑定、表单验证、异常处理等。您可以使用注解或配置文件来定义这些组件的行为和规则。

  6. 运行项目:将您的项目部署到Web服务器上,并启动服务器。您可以使用任何支Java的Web服务器,如Tomcat、Jetty等。一旦服务器启动,您就可以通过浏览器访问您的项目,并测试Spring MVC的功能。

5. 工作流程及原理

工作流程

  1. 客户端发送HTTP请求到前端控制器DispatcherServlet。

  2. DispatcherServlet将请求转发给处理器映射器HandlerMapping,根据配置文件或注解将请求映射到对应的控制器(Controller)。

  3. 处理器映射器返回一个处理器对象给DispatcherServlet。

  4. DispatcherServlet调用处理器适配器执行处理器(Controller)。处理器适配器根据请求方法和参数类型选择合适的方法执行。

  5. 处理器(Controller)执行完后返回一个ModelAndView对象给处理器适配器。

  6. 处理器适配器将ModelAndView对象返回给DispatcherServlet。

  7. DispatcherServlet将ModelAndView对象交给视图解析器ViewResolver。

  8. 视图解析器ViewResolver根据视图名解析出具体的视图对象。

  9. 视图解析器返回视图对象给DispatcherServlet。

  10. DispatcherServlet调用视图对象的渲染方法进行视图渲染。

  11. 渲染完成后将结果返回给客户端。

 工作原理

主要基于设计模式中的责任链模式和策略模式

责任链模式:DispatcherServlet作为前端控制器,通过处理器映射器和处理器适配器的责任链,将请求转发给合适的处理器(Controller)进行处理。

策略模式:处理器映射器和处理器适配器使用策略模式来选择合适的处理器(Controller)方法进行执行。

 工作流程图

SpringMVC之入门(带你体验SpringMVC的乐趣)_第1张图片

 二、SpringMVC入门(项目整合)

1. 导入依赖

pom.xml




  4.0.0

  com.yx
  yx_ssm
  1.0-SNAPSHOT
  war

  yx_ssm Maven Webapp
  
  http://www.example.com

  
    UTF-8
    1.8
    1.8
    3.7.0

    
    
    5.0.2.RELEASE
    
    3.4.5
    
    5.1.44
    
    5.1.2
    
    1.3.1
    
    2.1.1
    2.4.3
    
    2.9.1
    
    4.12
    4.0.0
    1.18.2

    
    1.2
    1.1.2
    
    5.0.2.RELEASE
  


  
    
    
      org.springframework
      spring-context
      ${spring.version}
    
    
      org.springframework
      spring-orm
      ${spring.version}
    
    
      org.springframework
      spring-tx
      ${spring.version}
    
    
      org.springframework
      spring-aspects
      ${spring.version}
    
    
      org.springframework
      spring-web
      ${spring.version}
    
    
      org.springframework
      spring-test
      ${spring.version}
    

    
    
      org.mybatis
      mybatis
      ${mybatis.version}
    
    
    
      mysql
      mysql-connector-java
      ${mysql.version}
    
    
    
      com.github.pagehelper
      pagehelper
      ${pagehelper.version}
    
    
    
      org.mybatis
      mybatis-spring
      ${mybatis.spring.version}
    

    
    
      org.apache.commons
      commons-dbcp2
      ${commons.dbcp2.version}
    
    
      org.apache.commons
      commons-pool2
      ${commons.pool2.version}
    

    
    
    
      org.apache.logging.log4j
      log4j-core
      ${log4j2.version}
    
    
      org.apache.logging.log4j
      log4j-api
      ${log4j2.version}
    
    
    
      org.apache.logging.log4j
      log4j-web
      ${log4j2.version}
    

    
    
      junit
      junit
      ${junit.version}
      test
    
    
      javax.servlet
      javax.servlet-api
      ${servlet.version}
      provided
    

    
      org.projectlombok
      lombok
      ${lombok.version}
      provided
    

    
      junit
      junit
      4.12
      compile
    

    
    
      org.springframework
      spring-webmvc
      ${spring.version}
    
    
      jstl
      jstl
      ${jstl.version}
    
    
      taglibs
      standard
      ${standard.version}
    

  

  
    yx_ssm
    
      
      
        src/main/java
        
          **/*.xml
        
      
      
      
        src/main/resources
        
          jdbc.properties
          *.xml
        
      
    
      
        
          org.apache.maven.plugins
          maven-compiler-plugin
          ${maven.compiler.plugin.version}
          
            ${maven.compiler.source}
            ${maven.compiler.target}
            ${project.build.sourceEncoding}
          
        
        
          org.mybatis.generator
          mybatis-generator-maven-plugin
          1.3.2
          
            
            
              mysql
              mysql-connector-java
              ${mysql.version}
            
          
          
            true
          
        

        
          maven-clean-plugin
          3.1.0
        
        
        
          maven-resources-plugin
          3.0.2
        
        
          maven-compiler-plugin
          3.8.0
        
        
          maven-surefire-plugin
          2.22.1
        
        
          maven-war-plugin
          3.2.2
        
        
          maven-install-plugin
          2.5.2
        
        
          maven-deploy-plugin
          2.8.2
        
      
  

SpringMVC之入门(带你体验SpringMVC的乐趣)_第2张图片

SpringMVC之入门(带你体验SpringMVC的乐趣)_第3张图片

注:

缺少jstl+standard的这两个jar包会报java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config,那是因为org.springframework.web.servlet.view.JstlView在视图解析时需要这二个jar包。

 2. 编写配置spring-mvc.xml



    
    

    
    

    
    
        
        
        
        
    

   

3. 配置web.xml文件



  Archetype Created Web Application
  
  
  
    contextConfigLocation
    classpath:spring-context.xml
  
  
  
    org.springframework.web.context.ContextLoaderListener
  
  

  
  
    encodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    true
    
      encoding
      UTF-8
    
  
  
    encodingFilter
    /*
  

  
  
    SpringMVC
    org.springframework.web.servlet.DispatcherServlet
    
    
      contextConfigLocation
      classpath:spring-mvc.xml
    
    1
    
    true
  
  
    SpringMVC
    /
  

4. IndexController 代码

package com.yx.web;

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

/**
 * @author 君易--鑨
 * @site www.yangxin.com
 * @company 木易
 * @create  2023-09-04 18:58
 *
 * @Controller 替换了自定义MVC中的
 *  extend ActionSupport
 */
@Controller
@RequestMapping("/book")
public class IndexController {
//  首页
    @RequestMapping("/hello")
    public String hello(){
        System.out.println("hello SpringMVC...");
        return "hello";
    }

}

5. jsp代码

<%--
  Created by IntelliJ IDEA.
  User: 86158
  Date: 2023/9/4
  Time: 19:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


你好!君易----鑨


6. 测试结果

页面结果

SpringMVC之入门(带你体验SpringMVC的乐趣)_第4张图片

输出结果

三、静态资源处理

spring-mvc.xml



    
    

    
    

    
    
        
        
        
        
    

    
     

导入静态资源

SpringMVC之入门(带你体验SpringMVC的乐趣)_第5张图片

测试

SpringMVC之入门(带你体验SpringMVC的乐趣)_第6张图片

 本次分享到此结束,感谢各位的支持与鼓励。

你可能感兴趣的:(Mybatis,Spring,SpringMVC,spring,java,intellij,idea,mybatis)