4.spring boot

1.spring boot

1.1、创建spring boot项目

4.spring boot_第1张图片

 4.spring boot_第2张图片

 项目练习: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.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}$")
    @NotBlank
    private 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版本—>选择依赖—>完成

相关界面

4.spring boot_第3张图片

4.spring boot_第4张图片 

相关案例

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";
    }
}

 

你可能感兴趣的:(#,4.web前端,mybatis,java,spring,spring,boot,intellij-idea)