软件设计之SSM(10)
路线图推荐:
【Java学习路线-极速版】【Java架构师技术图谱】
尚硅谷新版SSM框架全套视频教程,Spring6+SpringBoot3最新SSM企业级开发
资料可以去尚硅谷官网免费领取
学习内容:
SpringMVC
- 转发与重定向
- 返回JSON数据
- 返回静态资源处理
- SSM整合问题
- Springboot快速入门
1、转发与重定向
在 Spring MVC 中,Handler 方法返回值来实现快速转发,可以使用 redirect
或者 forward
关键字来实现重定向。
@RequestMapping("/redirect-demo")
public String redirectDemo() {
// 重定向到 /demo 路径
return "redirect:/demo";
}
@RequestMapping("/forward-demo")
public String forwardDemo() {
// 转发到 /demo 路径
return "forward:/demo";
}
//注意: 转发和重定向到项目下资源路径都是相同,都不需要添加项目根路径!填写项目下路径即可!
2、返回JSON数据
前置:
在接收JSON时的配置要保留,即:引入依赖
、添加json数据转化器
在方法上使用 @ResponseBody注解
,用于将方法返回的对象序列化为 JSON 或 XML 格式的数据,并发送给客户端
@RequestMapping(value = "/user/detail", method = RequestMethod.POST)
@ResponseBody
public User getUser(@RequestBody User userParam) {
System.out.println("userParam = " + userParam);
User user = new User();
user.setAge(18);
user.setName("John");
//返回的对象,会使用jackson的序列化工具,转成json返回给前端!
return user;
}
如果类中每个方法上都标记了 @ResponseBody 注解,那么这些注解就可以提取到类
上
类上的 @ResponseBody 注解可以和 @Controller 注解合并为 @RestController 注解
,效果一样
3、返回静态资源处理
对 SpringMVC 来说,必须有对应的 @RequestMapping
才能找到处理请求的方法,静态资源请求没有对应的 @RequestMapping 会返回 404
解决方式是在配置文件中开启静态资源处理
@EnableWebMvc //json数据处理,必须使用此注解,因为他会加入json处理器
@Configuration
@ComponentScan(basePackages = "com.atguigu.controller") //TODO: 进行controller扫描
//WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法! 前期可以实现
public class SpringMvcConfig implements WebMvcConfigurer {
//开启静态资源处理 <mvc:default-servlet-handler/>
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
4、SSM整合问题
SSM整合需要几个容器
两个容器:WEB容器
和ROOT容器
,并且root容器是web容器的父容器
容器名 | 盛放组件 |
---|---|
web容器 | web相关组件(controller,springmvc核心组件) |
root容器 | 业务和持久层相关组件(service,aop,tx,dataSource,mybatis,mapper等) |
子IOC容器可以注入父IOC容器组件:
子容器可以依赖注入来自父容器中的Bean,例如,子容器中的组件如果需要一个在父容器中定义的服务或配置,它可以通过依赖注入的方式获取。
父容器:
@Configuration
public class ParentConfig {
@Bean
public DataSource dataSource() {
return new DataSource(); // 通用的数据源配置
}
}
子容器:
@Configuration
public class ChildConfig {
@Autowired
private DataSource dataSource; // 注入父容器中的DataSource
@Bean
public UserService userService() {
return new UserService(dataSource); // 使用父容器中的DataSource
}
}
配置类与容器关系(Config and Ioc)
配置名 | 对应内容 | 对应容器 |
---|---|---|
WebJavaConfig | controller,springmvc相关 | web容器 |
ServiceJavaConfig | service,aop,tx相关 | root容器 |
MapperJavaConfig | mapper,datasource,mybatis相关 | root容器 |
IoC初始化方式和配置位置
使用配置类形式:
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
//指定root容器对应的配置类
//root容器的配置类
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { ServiceJavaConfig.class,MapperJavaConfig.class };
}
//指定web容器对应的配置类 webioc容器的配置类
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { WebJavaConfig.class };
}
//指定dispatcherServlet处理路径,通常为 /
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
5、Springboot快速入门
Springboot
简化了配置,采用约定优于配置的理念,允许开发者通过默认设置快速启动项目。其次,Spring Boot 集成了自动配置,能够根据项目的依赖自动配置所需的组件,减少了手动配置的麻烦。此外,Spring Boot 提供了内嵌的服务器支持,简化了部署过程,使应用更易于打包和发布。
- 添加父工程坐标
在Spring Boot提供了一个名为spring-boot-starter-parent
的工程,里面已经对各种常用依赖的版本进行了管理,我们的项目需要以这个项目为父工程,这样我们就不用操心依赖的版本问题了。
<!--所有springboot项目都必须继承自 spring-boot-starter-parent-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.5</version>
</parent>
- 添加web启动器
为了让Spring Boot帮我们完成各种自动配置,我们必须引入Spring Boot提供的自动配置依赖,我们称为启动器。因为我们是web项目,这里我们引入web启动器
,在 pom.xml 文件中加入如下依赖:
<dependencies>
<!--web开发的场景启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
- 创建启动类
@SpringBootApplication
是一个特殊的注解,用于标识一个Spring Boot应用程序的入口类。它的主要作用是将三个常用注解组合在一起,简化了配置的过程。
具体而言,@SpringBootApplication注解包含以下三个注解的功能:
-
@Configuration:将该类标识为应用程序的配置类。它允许使用Java代码定义和配置Bean。
-
@EnableAutoConfiguration:启用Spring Boot的自动配置机制。它根据项目的依赖项自动配置Spring应用程序的行为。自动配置根据类路径、注解和配置属性等条件来决定要使用的功能和配置。
-
@ComponentScan:自动扫描并加载应用程序中的组件,如控制器、服务、存储库等。它默认扫描@SpringBootApplication注解所在类的包及其子包中的组件。
使用@SpringBootApplication注解,可以将上述三个注解的功能集中在一个注解上,简化了配置文件的编写和组件的加载和扫描过程。它是Spring Boot应用程序的入口点,标识了应用程序的主类,并告诉Spring Boot在启动时应如何配置和加载应用程序。
package com.atguigu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MainApplication {
//SpringApplication.run() 方法是启动 Spring Boot 应用程序的关键步骤。它创建应用程序上下文、
// 自动配置应用程序、启动应用程序,并处理命令行参数,使应用程序能够运行和提供所需的功能
public static void main(String[] args) {
SpringApplication.run(MainApplication.class,args);
}
}
- 编写处理器Controller