素材巴巴 > 程序开发 >

4.spring boot

程序开发 2023-09-15 15:56:40

1.spring boot

1.1、创建spring boot项目

 

 项目练习:RuoYi: 🎉 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用RuoYi: 🎉 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用RuoYi: 🎉 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用

RuoYi: 🎉 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用 - Gitee.com

sping boot定义

1.boot 引导

ssm—sping spring-webmvc mybatis 集成配置困难
自动配置(核心技术就是通过反射注解来配置Java bean)

spring [Java bean(创建对象) 容器] 提供IOC(控制反转)/DI(依赖注入)

IOC(控制反转):
DI(依赖注入):需要啥给你送啥

AOP(面向切面的编程):
OOP(面向对象的编程):

WebMVC(model view controller):

jpa jdbc mybatis

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

  1. 定义controller 处理请求
    @controller 注解在类上
    处理请求在方法上加上@RequestMapping

  2. 如何获取请求参数
    @RequestMapping注解的方法中定义对应的参数 就可以获得

  3. IOC/DI 控制反转/依赖注入

要在控制反转的类上加@Component

要在注入的地方使用@Autowired @Resource 构造方法

1.boot 二次引导
SSM(spring spring-webMVC mybatis)
自动配置(核心技术就是通过反射注解配置Java bean)
spring (Java bean 容器) 提供IOC(控制反转)/DI(依赖注入)
IOC(控制反转):
DI(依赖注入):

AOP(面向切面的编程)
回顾:OOP(面向对象的编程)

WebMVC(model view controller)

jpa jdbc mybatis

了解一下:Guice
上下对等👆👇
spring (Java bean 容器) 提供IOC(控制反转)/DI(依赖注入)
IOC(控制反转):

DI(依赖注入):

今天学习重点:
1.定义controller,处理请求
@Controller 注解在类上
处理请求在方法上加上 @RequestMapping

2.如何获取请求参数
@RequestMapping 注解的方法中定义对应的参数就可以获得

3.IOC/DI
控制反转/依赖注入
要在控制反转的类上加@Component
要在依赖注入的地方加上@Autowired @Resource 构造方法

重定向

redirect:/student/list

表单验证

表单验证分:前端,后端
前端:h5内置了一些验证input(数字 日期 email)复杂验证要通过js。

后端:spring-MVC 借助 hibernate-validator验证实现,注解式验证

引入验证(对Email进行验证):
第一步:引入依赖
spring-boot 启动器—-starter


 org.springframework.bootspring-boot-starter-validation
 
 

第二步:
在验证实体类的验证属性上加上注解

package com.bigdata09.demo2.entity;import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.springframework.format.annotation.DateTimeFormat;import javax.validation.constraints.Email;
 import javax.validation.constraints.NotBlank;
 import java.util.Date;@Data
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
 public class Student {private Integer id;private String name;private String gender;// 将string类型的时间转化为日期类型@DateTimeFormat(pattern = "yyyy-MM-dd")private Date born;@Email(message = "邮箱的正确格式至少有一个@和一个.",regexp = "^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$")@NotBlankprivate String email;private Grade grade = Grade.builder().build();private Integer GradeId;
 }
 

第三步:控制器中注解验证
@Valid
代码案例:

public String saveStudent(@Valid Student student, BindingResult bindingResult, RedirectAttributesModelMap map){     // RedirectAttributesModelMap : 闪存作用域
 
参数验证 @Validated 和 @Valid 的区别:所属框架:@Validated由spring框架提供,@Valid由validation框架提供
 使用位置:@Validated可以用在类型、方法和方法参数上,但是不能用在成员属性上;
 @Valid可以用在方法、构造函数、方法参数和成员属性上
 分组:@Validated提供了一个分组功能,可以在入参验证时,根据不同的分组采用不同的验证机制
 

第四步:获取验证信息
BindingResult 中封装了验证信息
判断是否有验证失败的hasErrors()方法
获取验证失败字段信息getFieldError("实体类字段名")

遇到的业务困难
保存失败时,重定向到edit,如何同时保存用户输入的错误模型,又能解决edit中查到的模型(实体)
重定向的flash作用域数据的使用


get请求和post请求的区别,用法?

数据库学完之后学习内容:
jhipster: JHipster - 现代开发人员的全栈开发平台!

jhipster.pro: http://jhipster.pro/index-cn

gitee上学习jhipster的网址: book/summary.md · seal.jing/jhipster book 上 - Gitee.com

angular: Angular
Angular

与MVN仓库对应的网站:Maven Central Repository Search

文件上传和下载

表单要设置 enctype = "multipart/form-data"

后台: MultipartFile接受

下载文件 响应头中要设置 Content-disposition 它的值有 inline 和 attachment

inline : 浏览器直接打开

attachment: 表示下载保存

spring mvc

创建一个 响应实体 ResponseEntity

ResponseEntity 的泛型 可以使用两种方式 FileSystemResource 和 byte[]

byte[] 适合下文件

ResponseEntity 的创建凡是 一种 new 另一种 builder 方式 例如 ResponseEntity.ok()

自定义响应头部: HttpHeaders

idea 创建spring boot

文件—>新建项目—>Spring Initializr—>设置相关参数—>选择spring boot版本—>选择依赖—>完成

相关界面

 

相关案例

hello案例

复制package com.bigdata09.springbootdemo1.demo;import com.bigdata09.springbootdemo1.entity.Grade;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.RequestMapping;
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.List;@Controller
 public class HelloController {@RequestMapping ("/hello")public String hello(ModelMap map){int rd = (int) (Math.random()*10+1);map.addAttribute("rd",rd); //return "hello";}/* @RequestMapping("/hello2")public String hello2(){return "hello spring boot";}*/
 @RequestMapping("/test")public String test(HttpServletRequest request){Grade grade1 = Grade.builder().id(1).name("grade1").build();Grade grade2 = Grade.builder().id(2).name("grade2").build();ServletContext application = request.getServletContext();List grades = (List) application.getAttribute("grades");if (grades == null) {grades = new ArrayList<>();application.setAttribute("grades",grades);}grades.add(grade1);grades.add(grade2);return "test";}
 }

 


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。