0
点赞
收藏
分享

微信扫一扫

【软件开发架构平台】CH5 Spring MVC进阶

芝婵 2022-04-28 阅读 52

Spring MVC控制器使用

获取请求参数

模型驱动:Controller对象构造时Spring MVC会自动构建一个Model对象(Map类型),用于存放请求相关的值,比如原来在request.setAttribute()中的值。请求从WEb容器到底Controller会经过一系列的过滤器,实现如类型转换的功能。

具体提供以下几种方式获取请求相关参数的值:

  • 直接属性取值@RequestParam
  • 对象取值
  • 获取请求URL中的值@PathVariable,获取请求头中的值@RequestHeader等

传递数据完成响应

ModelMap、Model、ModelAndView

  • Spring MVC中用来存放数据的有ModelMap、Model、ModelAndView三个对象,其中ModelMap、Model由拦截器自动创建,在Controller的功能方法之前运行
  • 也可以使用@ModelAttribute注解自定义取值及赋值方法
  • ModelAndView对象是在Model的基础上添加了视图对象,需自行创建
  • 赋值和取值能力ModelMap < Model < ModelAndView

使用容器对象

Spring MVC使用容器对象

  • 在Spring MVC的Controller中使用容器对象(Request、Session等),可以分为耦合方式和非耦合方式
  • 耦合方式即通过接口在Controller中直接获取容器对象
  • 非耦合方式即通过Spring MVC提供的接口进行注入

Thymeleaf模板引擎

Spring MVC视图层解决方案

  • Spring MVC支持多种View层解决方案
  • 传统的JSP、FreeMarker等在组件化和去耦合上有明显缺点,目前Spring MVC流行使用Thymeleaf进行视图渲染
  • Thymeleaf主要特点:数据和HTML的分离
<p th:text="${message}">Hello World!</p>
@PostMapping("/login")
public String login(Account account,Model model){
	if(service.login(account)=null{
		return "success";
	}
	else{
		model.addAttribute("message","用户名或密码错误");
		return "login";
	}
}

Spring MVC拦截器

Spring MVC拦截器类似于Servlet技术中的过滤器,用于对请求进行前置和后置的过滤,实现系统的plug-in功能,达到业务功能部分和非业务功能部分解耦的目的

Spring MVC拦截器实现机制是基于Spring AOP实现的,和servlet中的过滤器及其他Web表现出框架的过滤/拦截器实现机制不同

——动态代理方法即可

  • 通过HandlerInterceptor实现接口拦截器
    • preHandle:请求到达前置处理方法
    • postHandle:请求处理后置处理方法
    • afterCompletion:响应处理后置处理

SpringBoot简介

SpringBoot是为了简化Spring框架的使用,推出的一个组件(工具)

主要功能

  • Spring Boot Starter:将常用的依赖进行分组整合,合并到一个依赖中
  • 自动配置:条件化支撑特性,自动化推测和配置bean
  • 命令行接口(CLI):结合Groovy的特点,简化Spring应用开发
  • Actuator:提供Spring框架的管理功能

主要特点

  • 极低的学习成本
  • 开发可独立运行的Web应用
  • “约定优于配置”,极大提高了开发效率
  • 简单的组建依赖,自动发现与自动装配
  • 提供运行时的应用监控
  • 提供与分布式架构、云计算和大数据组件的良好集成

SpringBoot应用的入口类:

  • 必须有@SpringBootApplication注解
  • 通过应用SpringApplication.run()方法启动
package org.csu.mypetstore;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("org.csu.mypetstore.persistence")
public class MypetstoreApplication {

    public static void main(String[] args) {
        SpringApplication.run(MypetstoreApplication.class, args);
    }

}

启动流程:

加载配置文件(application.properties)——自动装配——加载组件(@Repository|@Controller|@Entity . . . )——应用初始化

常用的application.properties

#tomcat服务器使用的端口
server.port=80

#Spring JDBC数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/mypetstore
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=密码

#mybatis配置
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
mybatis.type-aliases-package=org.csu.mypetstore.domain
mybatis.configuration.lazy-loading-enabled=false

#项目运行时在控制台输出sql语句等信息
logging.level.org.csu.mypetstore.persistence=debug
举报

相关推荐

0 条评论