4.spring boot
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)成为领导者。
-
定义controller 处理请求
@controller
注解在类上
处理请求在方法上加上@RequestMapping
-
如何获取请求参数
@RequestMapping
注解的方法中定义对应的参数 就可以获得 -
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.boot spring-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";}
}
标签:
相关文章
-
无相关信息