SpringBoot part4 day03

@Accessors 重写了set() 方法,返回的是一个对象
MybatisPlus更新操作

/**
	 * 需求:将id为58的名字改为火星五号
	 * */
	@Test
	public void update01(){
		User user = new User();
		//根据对象中不为null的属性当作set条件,主键是更新条件
		user.setName("火星五号").setId(58);
		userMapper.updateById(user );

	}
	/**
	 * 要求将火星五号的数据改为 太阳五号 age改为1000
	 * 参数说明:
	 * 	1.实体对象   需要修改的数据采用实体对象进行封装
	 * 	2.修改条件   修改条件采用Wrapper形式进行构建
	 */
	@Test
	public void update02(){
		User user=new User();
		user.setName("太阳五号").setAge(1000);
		UpdateWrapper updateWrapper=new UpdateWrapper();
		updateWrapper.eq("name", "火星五号");
		userMapper.update(user, updateWrapper);



	}

1.SpringBoot 创建web资源

1.1 建maven项目

因为利用软件生成的springBoot项目只能打包jar
SpringBoot part4 day03_第1张图片
SpringBoot part4 day03_第2张图片

1.2项目结构的调整

SpringBoot part4 day03_第3张图片

1.3新建webapp后添加资源

SpringBoot part4 day03_第4张图片

1.4 粘贴jar包文件

		<!--springBoot整合JSP添加依赖  -->
		<!--servlet依赖 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
		</dependency>

		<!--jstl依赖 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
		</dependency>

		<!--使jsp页面生效 -->
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
		</dependency>

1.5添加yml配置文件

spring:
  mvc:         #引入mvn配置
    view:
      prefix: /WEB-INF/     # /默认代表根目录 src/main/webapp
      suffix: .jsp

yml文件

server:
  port: 8090
  servlet:
    context-path: /   #项目根目录发布
spring:
  datasource:
    #driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3307/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root

    #引入mvn配置
  mvc:
    view:
      prefix: /WEB-INF/     # /默认代表根目录 src/main/webapp
      suffix: .jsp
mybatis-plus:
  type-aliases-package: com.jt.pojo
  mapper-locations: classpath:/mybatis/mappers/*.xml
  #开启驼峰映射
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    com.jt.mapper: debug

  
  

controller

package com.jt.controller;

import com.jt.pojo.User;
import com.jt.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@Controller
//@RestController 程序不会执行视图解析器
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 需求: 用户通过http://localhost:8090/findAll请求,
     * 要求:
     * 		1.跳转到userList.jsp页面中
     * 		2.并且在页面中展现user列表数据.
     * 		  页面中的取值 ${userList}
     * 0-5: 优秀
     * 5-10:优秀-
     * 10-20良好
     * 20+  不及格
     */
    @RequestMapping("/findAll")
    public String findAll(Model model) {

        List<User> userList = userService.findAll();
        model.addAttribute("userList", userList);
        return "userList"; //跳转页面
    }
}

动态web资源404报错

说明:idea默认条件下工作目录
SpringBoot part4 day03_第5张图片
修改成本目录工作空间地址:
SpringBoot part4 day03_第6张图片
SpringBoot part4 day03_第7张图片
访问成功页面:
SpringBoot part4 day03_第8张图片

编程代码规范问题:

1.命名不规范

工作目录不能出现中文/空格/特殊字符(!~@%&)
在这里插入图片描述
工作目录不能放在计算机系统盘,系统盘中有一些资源没有操作权限SpringBoot part4 day03_第9张图片
工作空间不能嵌套
SpringBoot part4 day03_第10张图片

2.web访问404错误

1.pom的依赖

<!--springBoot整合JSP添加依赖  -->
		<!--servlet依赖 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
		</dependency>

		<!--jstl依赖 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
		</dependency>

		<!--使jsp页面生效 -->
		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
		</dependency>

2.yml的配置
spring默认是html静态页面,需要配置动态资源访问(yml文件有缩进)

spring:
  mvc:
    view:
      prefix: /WEB-INF/     # /默认代表根目录 src/main/webapp
      suffix: .jsp

3.webapp目录问题

resource/java/webapp是平级目录
SpringBoot part4 day03_第11张图片
4.重新加载
SpringBoot part4 day03_第12张图片
5.clean–compile
SpringBoot part4 day03_第13张图片
6.发布目录的问题
SpringBoot part4 day03_第14张图片

2.AJAX

2.1工作原理说明

Ajax为什么可以异步??工作原理说明
说明:
1).Ajax中间有ajax引擎的参与.ajax引擎实质就是一种代理的思想
2).由于需要实现异步的操作,所以请求必然是多次请求.多次响应.
SpringBoot part4 day03_第15张图片

2.2入门案例

2.2.1导入jquery.js类库
SpringBoot part4 day03_第16张图片
2.2.2ajax函数的编写:

 @RequestMapping("/findAjax")
    @ResponseBody
    public List<User> doFindAjax(){
        return userService.findAll();
        
    }

SpringBoot part4 day03_第17张图片

 $(function(){
     //1.$.get(url地址,传递参数,回调函数,返回值类型)
      //$.get() $.post $.getJSON $.ajax
     //关于参数的写法  2种
     // 1.json 格式{id:1,name:"tomcat"} 2.字符串拼接id=1&name="tomcat"
      $.get("/findAjax",{id:1},function(data){
         console.log(data);
      },"json")
     })

SpringBoot part4 day03_第18张图片
循环遍历方式一:

$.get("/findAjax",{id:1},function(data){
        // console.log(data);
        for(let i=0;i<data.length;i++){
            let user=data[i];
            let id=user.id;
            let name=user.name;
            console.log(id+":"+name)
        }

循环遍历方式二:

         for(let index in data){
          let user=data[index];
          console.log(user);
        }

循环遍历方式三:

 for(let user of data){
        //console.log(user);
                let id=user.id;
                let name=user.name;
                let age=user.age;
                let sex=user.sex;
              let tr=""+id+""+name+""+age+""+sex+"";
              $("#table1").append(tr);
              }

在table上增加标签:
SpringBoot part4 day03_第19张图片
最终ajax.jsp页面

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>您好Springboot</title>
</head>
<script src="../js/jquery-3.4.1.min.js"></script>
<script type="text/javascript">
     $(function(){
     //1.$.get(url地址,传递参数,回调函数,返回值类型)
      //$.get() $.post $.getJSON $.ajax
     //关于参数的写法  2种
     // 1.json 格式{id:1,name:"tomcat"} 2.字符串拼接id=1&name="tomcat"
      $.get("/findAjax",{id:1},function(data){
        // console.log(data);
      for(let user of data){
        //console.log(user);
                let id=user.id;
                let name=user.name;
                let age=user.age;
                let sex=user.sex;
              let tr=""+id+""+name+""+age+""+sex+"";
              $("#table1").append(tr);
              }
       /* for(let index in data){
          let user=data[index];
          console.log(user);
        }
        */


       /*for(let i=0;i



      },"json")
     })

</script


<body>
	<table id="table1" border="1px" width="65%" align="center">
		<tr>
			<td colspan="6" align="center"><h3>学生信息</h3></td>
		</tr>
		<tr>
			<th>编号</th>
			<th>姓名</th>
			<th>年龄</th>
			<th>性别</th>
			<th></th>
		</tr>

	</table>
</body>
</html>

2.2.3 Ajax请求流程
如果需要发起ajax请求,需要发起2个请求
1 用于跳转页面
2 用于请求返回数据
SpringBoot part4 day03_第20张图片
SpringBoot part4 day03_第21张图片

系统底层自动将json串转化为js对象

$.ajax格式

SpringBoot part4 day03_第22张图片

 $.ajax({
      url: "/findAjax",   //url请求地址
      method: "get",     //请求方式
      data: {id:1,name:"tomcat"}, //请求的参数
      success: function(data){
       for(let user of data){
               let id=user.id;
               let name=user.name;
               let age=user.age;
               let sex=user.sex;
               let tr=""+id+""+name+""+age+""+sex+"";
               $("#table1").append(tr);
              }

      },
      error: function(data){
        alert("请求失败");
      },
      cache: true    //默认是true,使用缓存
      async: false ,   //默认true  发送异步请求
     })



3.分布式

3.1分布式说明:

单体项目架构:tomcat服务器只有一个,对外暴露一个端口
传统项目存在的问题
SpringBoot part4 day03_第23张图片

3.2分布式架构

1).可以按照功能模块可以将项目拆分为若干个子项目
2).如果业务功能足够复杂,则需要更加细粒度的拆分方式.
拆分的意义: 使用分布式架构设计,可以有效的降低架构中的耦合性,提高程序的开发速度及运维速度.SpringBoot part4 day03_第24张图片
拆分的意义:使用分布式架构设计,可以有效的降低架构中的耦合性,提高程序的开发速度以及运维速度

3.3分布式存在的问题

问题1;分布式架构种如何保证jar包文件的统一
问题2:分布式架构如何保证工具API的统一
SpringBoot part4 day03_第25张图片

4.构建JT后台项目

4.1 创建jt父级工程

只有pom可以被继承,jar和war是不能被继承的
SpringBoot part4 day03_第26张图片
SpringBoot part4 day03_第27张图片

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.jt</groupId>
    <artifactId>jt</artifactId>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>jt-common</module>
        <module>jt-manager</module>
    </modules>
    <!--pom标识 我是一个聚合工程,在内部可以添加好多项目.形成父子级关系 -->
    <packaging>pom</packaging>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <!--指定jdk版本-->
        <java.version>1.8</java.version>
        <!--跳过测试类打包-->
        <skipTests>true</skipTests>
    </properties>
    <!--依赖  需要的jar包文件-->
    <dependencies>
        <!--添加数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--springBoot整合jdbc-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--springBoot整合mybatis-->
        <!--<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>-->
        <!--MybatisPlus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <!--spring-boot-starter-XXX springboot启动项,
            开箱即用:
              只需要引入特定的jar包简单的配置,既可以使用该功能
                  -->
            <artifactId>spring-boot-starter-web</artifactId>

        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--引入插件lombok 自动的set/get/构造方法插件  -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!--支持热部署 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>


        <!--springBoot整合JSP添加依赖  -->
        <!--servlet依赖 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </dependency>

        <!--jstl依赖 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

        <!--使jsp页面生效 -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

    </dependencies>


</project>

4.2构建jt-common

SpringBoot part4 day03_第28张图片

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>jt</artifactId>
        <groupId>com.jt</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>jt-common</artifactId>


</project>

4.3构建jt-manager
SpringBoot part4 day03_第29张图片
添加jar包文件的依赖

 <!--添加依赖-->
    <dependencies>
        <dependency>
            <groupId>com.jt</groupId>
            <artifactId>jt-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

    </dependencies>

添加build

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

修改打包方式:

<packaging>war</packaging>

pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>jt</artifactId>
        <groupId>com.jt</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>jt-manage</artifactId>
    <!--动态web资源 暂时使用war包-->
    <packaging>war</packaging>

    <!--添加jar包文件依赖-->
    <dependencies>
        <dependency>
            <groupId>com.jt</groupId>
            <artifactId>jt-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

    <!--所有业务系统,必须添加build标签-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

修改发布路径:
SpringBoot part4 day03_第30张图片
项目依赖报错:将common打包install
SpringBoot part4 day03_第31张图片

4.4京淘后台页面相关说明

4.4.1默认的首页如何跳转
说明:当用户通过http://localhost:8091访问时. 默认发起了一个index的请求
SpringBoot part4 day03_第32张图片
页面跳转流程:
SpringMVC中配置了视图解析器

 mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp

页面跳转路径拼接: /WEB-INF/views/index.jsp

restFul风格

SpringBoot part4 day03_第33张图片
SpringBoot part4 day03_第34张图片
SpringBoot part4 day03_第35张图片

你可能感兴趣的:(springboot,java,spring,spring,boot)