目录
前言
一、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框架带我们意想不到的收获吧。
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应用程序。
领域 | 说明 |
企业级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)进行集成。 |
架构模式:降低了代码的耦合性,提高了应用程序的可维护性和可测试性,从而达到高内聚低耦合。
灵活性和可扩展性:Spring MVC提供了灵活的配置和扩展机制,框架内置了众多的解决方案和插件,可实现各种功能和扩展,如表单验证、文件上传、权限控制等。
请求处理和路由控制:Spring MVC提供了强大的请求处理和路由控制功能,可以将不同类型的请求映射到相应的处理方法上。
视图解析和模板引擎:Spring MVC支持多种视图解析技术和模板引擎,如JSP、Thymeleaf、Velocity等,使开发人员能够灵活选择适合项目需求的视图技术。这些视图技术可以将动态数据和静态模板结合起来,生成最终的HTML内容,将结果返回给客户端。
处理复杂业务逻辑:Spring MVC提供了方便的数据绑定、表单验证和错误处理等功能,使开发人员能够方便地处理复杂的业务逻辑。通过注解和配置文件,可以实现数据的自动绑定、输入验证和错误处理,提高开发效率和代码质量。
添加依赖:在您的项目中添加Spring MVC框架的依赖项。您可以使用构建工具(如Maven或Gradle)来管理依赖关系。确保您的项目中包含了Spring MVC的相关库和依赖项。
配置Web.xml:在您的项目的Web.xml文件中配置Spring MVC的DispatcherServlet。DispatcherServlet是Spring MVC的核心组件,负责处理所有的请求和路由控制。您需要配置DispatcherServlet的URL映射和其他相关参数。
创建控制器:创建一个或多个控制器类来处理请求。控制器类使用注解或配置文件来定义请求映射和处理方法。您可以在控制器方法中编写业务逻辑,并返回相应的视图或数据。
配置视图解析器:配置视图解析器来解析控制器方法返回的视图名称,并生成最终的HTML页面或其他类型的响应。您可以选择使用JSP、Thymeleaf、Velocity等视图技术,并配置相应的解析器。
配置其他组件:根据您的需求,配置其他Spring MVC的组件,如数据绑定、表单验证、异常处理等。您可以使用注解或配置文件来定义这些组件的行为和规则。
运行项目:将您的项目部署到Web服务器上,并启动服务器。您可以使用任何支Java的Web服务器,如Tomcat、Jetty等。一旦服务器启动,您就可以通过浏览器访问您的项目,并测试Spring MVC的功能。
客户端发送HTTP请求到前端控制器DispatcherServlet。
DispatcherServlet将请求转发给处理器映射器HandlerMapping,根据配置文件或注解将请求映射到对应的控制器(Controller)。
处理器映射器返回一个处理器对象给DispatcherServlet。
DispatcherServlet调用处理器适配器执行处理器(Controller)。处理器适配器根据请求方法和参数类型选择合适的方法执行。
处理器(Controller)执行完后返回一个ModelAndView对象给处理器适配器。
处理器适配器将ModelAndView对象返回给DispatcherServlet。
DispatcherServlet将ModelAndView对象交给视图解析器ViewResolver。
视图解析器ViewResolver根据视图名解析出具体的视图对象。
视图解析器返回视图对象给DispatcherServlet。
DispatcherServlet调用视图对象的渲染方法进行视图渲染。
渲染完成后将结果返回给客户端。
主要基于设计模式中的责任链模式和策略模式。
责任链模式:DispatcherServlet作为前端控制器,通过处理器映射器和处理器适配器的责任链,将请求转发给合适的处理器(Controller)进行处理。
策略模式:处理器映射器和处理器适配器使用策略模式来选择合适的处理器(Controller)方法进行执行。
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.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
注:
缺少jstl+standard的这两个jar包会报java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config,那是因为org.springframework.web.servlet.view.JstlView在视图解析时需要这二个jar包。
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
/
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";
}
}
<%--
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
你好!君易----鑨
本次分享到此结束,感谢各位的支持与鼓励。