Spring MVC框架:第一章:SpringMVC概述及初步体会SpringMVC使用过程

简介: Spring MVC框架:第一章:SpringMVC概述及初步体会SpringMVC使用过程

第一节 SpringMVC在知识体系中的坐标

在我们学习框架知识以前,JavaSE+JDBC+JavaWeb+SQL这样的技术组合已经可以实现任何业务逻辑了。为什么还要学习SSM这样的框架呢?

很简单,MyBatis是对JDBC的封装,而SpringMVC是对JavaWeb的封装。

其中JavaWeb和SpringMVC提供了表述层(或称表示层)的解决方案,而JDBC和MyBatis是持久化层的解决方案。那Spring到哪去了?Spring中的IOC容器为我们的整个项目管理组件,而我们配置的各种bean、切面类、事务通知等等其实都是在容器中工作的组件,我们开发人员的任务其实就两件事:开发组件、组装组件。

第二节 使用SpringMVC前后代码的对比

使用原生ServletAPI获取请求参数:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String userName = request.getParameter("userName");
    System.out.println("userName="+userName);
}

使用SpringMVC获取请求参数:

@RequestMapping("/user/login")
public String login(@RequestParam("userName") String userName){
    System.out.println("userName="+userName);
    return "result";
}

这仅仅是其中一个例子,使用SpringMVC后确实大大简化了表述层开发。

通过这个HelloWorld,大家初步体会SpringMVC使用过程中的总体流程。

第一步 创建DynamicWebProject项目
第二步 导入jar包

commons-logging-1.1.3.jar
spring-aop-4.0.0.RELEASE.jar
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.RELEASE.jar
spring-core-4.0.0.RELEASE.jar
spring-expression-4.0.0.RELEASE.jar
spring-web-4.0.0.RELEASE.jar
spring-webmvc-4.0.0.RELEASE.jar

第三步 在web.xml中配置SpringMVC的前端控制器:DispatcherServlet

<servlet>
  <servlet-name>DispatcherServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-mvc.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>DispatcherServlet</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

第四步 在src目录下创建Spring配置文件spring-mvc.xml并指定自动扫描的包

<context:component-scan base-package="com.mvc.controllers"/>

注意:Spring配置文件的文件名必须和web.xml中classpath:后一致,否则将无法找到。

第五步 在自动扫描的包下创建类HelloHandler

import org.springframework.stereotype.Controller;
@Controller
public class HelloHandler {
}

第六步 在HelloHandler类中声明一个方法用来处理请求

@RequestMapping("/hello")
public String hello() {
    System.out.println("SpringMVC处理了这个请求!");
    return "/WEB-INF/pages/result.jsp";
}

第九步 访问测试

控制台输出:

SpringMVC处理了这个请求!

看看其它类似的项目,相比对SpringMVC使用过程中的总体流程有所了解了吧

疑问 url-pattern中为什么是“/”而不是“/*”?

SpringMVC在url-pattern的配置中支持两种风格

REST风格:

<url-pattern>/</url-pattern>

扩展名风格:

<url-pattern>*.action</url-pattern>

以“/”开头的路径会被认为是REST风格,而“/*”的写法是不符合REST风格规范的。只有在SpringMVC这里有映射“/”的情况,其他地方一切照旧。

相关文章
|
9天前
|
安全 Java Ruby
我尝试了所有后端框架 — — 这就是为什么只有 Spring Boot 幸存下来
作者回顾后端开发历程,指出多数框架在生产环境中难堪重负。相比之下,Spring Boot凭借内置安全、稳定扩展、完善生态和企业级支持,成为构建高可用系统的首选,真正经受住了时间与规模的考验。
73 2
|
3月前
|
Java Spring
聊聊你对SpringBoot框架的理解 ?
SpringBoot是Spring家族中流行的子项目,旨在简化Spring框架开发的繁琐配置。它主要提供三大功能:starter起步依赖简化依赖管理,自动配置根据条件创建Bean,以及内嵌Web服务器支持Jar包运行,极大提升了开发效率。
137 0
|
3月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
387 0
|
3月前
|
前端开发 Java API
Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
本文解析了Spring Cloud Gateway中出现“Unsupported transfer encoding: chunked”错误的原因,指出该问题源于Feign依赖的HTTP客户端与服务端的`chunked`传输编码不兼容,并提供了具体的解决方案。通过规范Feign客户端接口的返回类型,可有效避免该异常,提升系统兼容性与稳定性。
199 0
|
3月前
|
缓存 安全 Java
Spring 框架核心原理与实践解析
本文详解 Spring 框架核心知识,包括 IOC(容器管理对象)与 DI(容器注入依赖),以及通过注解(如 @Service、@Autowired)声明 Bean 和注入依赖的方式。阐述了 Bean 的线程安全(默认单例可能有安全问题,需业务避免共享状态或设为 prototype)、作用域(@Scope 注解,常用 singleton、prototype 等)及完整生命周期(实例化、依赖注入、初始化、销毁等步骤)。 解析了循环依赖的解决机制(三级缓存)、AOP 的概念(公共逻辑抽为切面)、底层动态代理(JDK 与 Cglib 的区别)及项目应用(如日志记录)。介绍了事务的实现(基于 AOP
120 0
|
3月前
|
SQL Java 数据库连接
Spring、SpringMVC 与 MyBatis 核心知识点解析
我梳理的这些内容,涵盖了 Spring、SpringMVC 和 MyBatis 的核心知识点。 在 Spring 中,我了解到 IOC 是控制反转,把对象控制权交容器;DI 是依赖注入,有三种实现方式。Bean 有五种作用域,单例 bean 的线程安全问题及自动装配方式也清晰了。事务基于数据库和 AOP,有失效场景和七种传播行为。AOP 是面向切面编程,动态代理有 JDK 和 CGLIB 两种。 SpringMVC 的 11 步执行流程我烂熟于心,还有那些常用注解的用法。 MyBatis 里,#{} 和 ${} 的区别很关键,获取主键、处理字段与属性名不匹配的方法也掌握了。多表查询、动态
116 0
|
3月前
|
JSON 前端开发 Java
第05课:Spring Boot中的MVC支持
第05课:Spring Boot中的MVC支持
179 0
|
3月前
|
存储 缓存 NoSQL
Spring Cache缓存框架
Spring Cache是Spring体系下的标准化缓存框架,支持多种缓存(如Redis、EhCache、Caffeine),可独立或组合使用。其优势包括平滑迁移、注解与编程两种使用方式,以及高度解耦和灵活管理。通过动态代理实现缓存操作,适用于不同业务场景。
319 0
|
3月前
|
消息中间件 NoSQL Java
SpringBoot框架常见的starter你都用过哪些 ?
本节介绍常见的Spring Boot Starter,分为官方(如Web、AOP、Redis等)与第三方(如MyBatis、MyBatis Plus)两类,用于快速集成Web开发、数据库、消息队列等功能。
230 0
|
3月前
|
缓存 安全 Java
第五章 Spring框架
第五章 Spring框架