1. SpringBoot
1.1 概述
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。Spring Boot 现在已经成为Java 开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。成为SpringBoot全家桶。 特点:
- 创建独立的Spring应用程序
- 嵌入的Tomcat,无需部署WAR文件
- 简化Maven配置
- 自动配置Spring
- 提供生产就绪型功能,如指标,健康检查和外部配置
1.2 使用
- 创建SpringBoot项目–配置Maven
- 启动服务器,并且访问服务器里的资源
- 添加类
package cn.tedu.cgb2108boot01;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Hello {
@RequestMapping("abc")
public String get(){
return "hello boot~";
}
}
- 打开浏览器测试
http://localhost:8080/abc
2 SpringMVC框架
2.1 概述
是Spring团队的产品,遵循MVC设计模式 MVC设计模式: 最终实现松耦合 M是Model是模型层,用来封装数据 V是View是视图层,用来展示数据 C是Controller是控制层, 接受浏览器发来的请求,并做出数据的响应 SpringMVC框架用来接受请求 + 做出响应
2.2 工作原理
涉及五个组件:
- 前端控制器DispatcherServlet: 接受请求,并且调度
- 处理器映射器HandlerMapping: 根据地址栏的写法,找到能处理这次请求的类和方法
- 处理器适配器HandlerAdapter: 真正开始找到方法,执行方法体处理业务,并返回结果
- 视图解析器ViewResolver: 找到能够展示数据的页面
- 视图渲染View: 把数据展示在页面上
2.3 解析请求参数
准备:
浏览器发送数据给服务器有两种方式? get 和 post get 的数据.在地址栏展示,用?拼接的参数 post的数据,安全不在地址栏展示 开发步骤: 1,导入SpringMVC相关的jar包(被Springboot整合了) 2, 使用注解开发
创建maven module: 右键-new -Module-选择Maven-next-设置module name-finish
准备启动类:
package cn.tedu.mvc;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class RunApp {
public static void main(String[] args) {
SpringApplication.run(RunApp.class);
}
}
准备资源:
package cn.tedu.mvc;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class CarController {
@RequestMapping("get")
public String get(){
return "欢迎~";
}
}
测试: http://localhost:8080/car/get
3 SpringMVC解析get方式的请求参数
3.1 测试
package cn.tedu.mvc;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("car")
public class CarController {
@RequestMapping("get")
public String get(){
return "欢迎~";
}
@RequestMapping("insert")
public void insert(Integer id){
System.out.println(id);
}
@RequestMapping("save")
public String save(int id,String name,double price){
return id+name+price ;
}
@RequestMapping("find")
public Car find(Car a){
return a;
}
}
3.2 总结
4 RestFul数据的解析
4.1 测试
package cn.tedu.mvc;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("student")
public class StudentController {
@RequestMapping("save")
public String save(Integer id,String name,Integer age){
return id+name+age;
}
@RequestMapping("save2/{id}/{name}/{age}")
public String save2(@PathVariable Integer id,
@PathVariable String name,
@PathVariable Integer age){
return id+name+age;
}
}
5 练习
5.1 解析请求参数
制作一个前端HTML网页
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>浏览器向 服务器发起请求</title>
</head>
<body>
<a href="http://localhost:8080/order/get?id=10&price=100&name=phone">练习1</a>
<a href="http://localhost:8080/order/find/2">练习2</a>
<a href="http://localhost:8080/order/save/10/100/phone">练习3</a>
</body>
</html>
SpringMVC框架解析请求参数
package cn.tedu.mvc;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("order")
public class OrderController {
@RequestMapping("get")
public String get(Integer id,Double price,String name){
return id+""+price+name ;
}
@RequestMapping("find/{id}")
public Integer find(@PathVariable Integer id){
return id;
}
@RequestMapping("save/{id}/{price}/{name}")
public String save(@PathVariable Integer id,
@PathVariable Double price,
@PathVariable String name){
return id+price+name ;
}
}
5.2 Restful解析参数的练习
创造类
package cn.tedu.mvc;
import com.sun.org.apache.xpath.internal.operations.Or;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("order")
public class OrderController {
@RequestMapping("get")
public Order get(Order o){
return o;
}
@RequestMapping("find/{id}")
public Integer find(@PathVariable Integer id){
return id;
}
@RequestMapping("save/{id}/{price}/{name}")
public String save(Order o){
return o+"" ;
}
}
创建Order类
package cn.tedu.mvc;
public class Order {
private Integer id;
private Double price;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Order{" +
"id=" + id +
", price=" + price +
", name='" + name + '\'' +
'}';
}
}
创建前端网页
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>浏览器向 服务器发起请求</title>
</head>
<body>
<a href="http://localhost:8080/order/get?id=10&price=100&name=phone">练习1</a>
<a href="http://localhost:8080/order/find/2">练习2</a>
<a href="http://localhost:8080/order/save/10/100/phone">练习3</a>
</body>
</html>
6 SpringMVC框架解析post提交的数据
6.1 创建网页,提供表单
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试 表单提交数据</title>
<style>
.a{
width:300px;
height: 30px;
}
#btn1{
background-color: #0000FF;
border-color: #0000FF;
color: white;
width: 60px;
height: 30px;
}
#btn2{
background-color: hotpink;
border-color: hotpink;
color: white;
width: 60px;
height: 30px;
}
</style>
</head>
<body>
<form method="post" action="http://localhost:8080/student/save">
<h1>学生信息管理系统MIS</h1>
<table>
<tr>
<td>姓名:</td>
</tr>
<tr>
<td>
<input class="a" type="text" placeholder="姓名..." name="user" />
</td>
</tr>
<tr>
<td>年龄:</td>
</tr>
<tr>
<td>
<input class="a" type="number" placeholder="年龄..." name="age" />
</td>
</tr>
<tr>
<td>
性别:(单选框)
<input type="radio" name="sex" value="1" checked="checked"/>男
<input type="radio" name="sex" value="0"/>女
</td>
</tr>
<tr>
<td>
爱好:(多选)
<input type="checkbox" name="hobby" value="ppq" checked="checked"/>乒乓球
<input type="checkbox" name="hobby" value="ps"/>爬山
<input type="checkbox" name="hobby" value="cg"/>唱歌
</td>
</tr>
<tr>
<td>
学历:(下拉框)
<select name="edu">
<option value="0">小学</option>
<option value="1">初中</option>
<option value="2">高中</option>
<option value="3">本科</option>
<option value="4">博士</option>
</select>
</td>
</tr>
<tr>
<td>入学日期:</td>
</tr>
<tr>
<td>
<input type="date" name="intime"/>
</td>
</tr>
<tr>
<td>
<button type="submit" id="btn1">保存</button>
<button type="reset" id="btn2">取消</button>
</td>
</tr>
</table>
</form>
</body>
</html>
6.2 创建Maven Module
6.3 创建启动类
package cn.tedu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class RunApp {
public static void main(String[] args) {
SpringApplication.run(RunApp.class);
}
}
6.4 创建StudentController解析请求参数
package cn.tedu.controller;
import cn.tedu.pojo.Student;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("student")
public class StudentController {
@RequestMapping("save")
public String save(Student s){
return "访问成功!"+s;
}
}
6.5 创建Student类
package cn.tedu.pojo;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Arrays;
import java.util.Date;
public class Student {
private String user;
private Integer age;
private Integer sex;
private String[] hobby;
private Integer edu;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date intime;
@Override
public String toString() {
return "Student{" +
"user='" + user + '\'' +
", age=" + age +
", sex=" + sex +
", hobby=" + Arrays.toString(hobby) +
", edu=" + edu +
", intime=" + intime +
'}';
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
public Integer getEdu() {
return edu;
}
public void setEdu(Integer edu) {
this.edu = edu;
}
public Date getIntime() {
return intime;
}
public void setIntime(Date intime) {
this.intime = intime;
}
}
6.6 总结
7 扩展把数据入库
7.1 添加jdbc的jar包
修改pom.xml文件,添加jar包的坐标.
- 整个工程的pom.xml文件: 作用在每个Module里 --作用范围大
- Module的pom.xml文件: 只作用在当前的Module里 --作用范围小
找到dependencies标签,添加以下代码:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
7.2 改造StudentController类
package cn.tedu.controller;
import cn.tedu.pojo.Student;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
@RestController
@RequestMapping("student")
public class StudentController {
@RequestMapping("save")
public String save(Student s) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
String url= "jdbc:mysql://localhost:3306/cgb2108?characterEncoding=utf8";
String user= "root" ;
String pwd= "root" ;
Connection c = DriverManager.getConnection(url, user, pwd);
String sql = "insert into tb_student values(null,?,?,?,?,?,?)";
PreparedStatement ps = c.prepareStatement(sql);
ps.setString(1,s.getUser());
ps.setInt(2,s.getAge());
ps.setInt(3,s.getSex());
ps.setObject(4, Arrays.toString( s.getHobby() ) );
ps.setObject(5,s.getEdu());
ps.setObject(6,s.getIntime());
ps.executeUpdate();
ps.close();
c.close();
System.out.println("数据入库成功!");
return "访问成功!"+s;
}
}
7.3 创建表
CREATE TABLE tb_student(
id INT PRIMARY KEY AUTO_INCREMENT,
USER VARCHAR(100),
age INT,
sex INT,
hobby VARCHAR(200),
edu INT,
intime DATE
)
7.4 总结
8 Spring框架
8.1 概述
Spring框架可以和其他技术无缝衔接 BeanFactory: bean工厂, spring框架认为所有类都是bean. 从bean工厂可以获取每个bean IOC: 控制反转, 不需要程序员来创建对象了,交给Spring框架来管理对象(从初始化…销毁).程序员可以直接从 Spring框架中获取Bean的对象 DI: 依赖注入,使用Spring框架明确两个对象间的依赖关系 AOP: 面向切面编程,是一种思想,解决了OOP的不足
8.2 IOC的XML方式实现
创建Hello类
package cn.tedu.spring;
public class Hello {
public void show(){
System.out.println("show()被调用成功!");
}
}
创建配置文件,配置类的信息,进行IOC 在resources文件夹位置,右键-new-XML config…-Spring config-输入文件名
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
spring认为万物都是bean,只要你的类,交给spring框架,spring就能IOC
IOC是控制反转:是指Spring框架会帮你创建对象,你来获取对象
id属性是每个bean标签的唯一标识,class属性是用来指定类的全路径
IOC底层Map的数据结构{类,类的对象}
-->
<bean id="hello" class="cn.tedu.spring.Hello"></bean>
</beans>
创建测试类,直接获取对象
package cn.tedu.ioc;
import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test1 {
@Test
public void get(){
ClassPathXmlApplicationContext spring =
new ClassPathXmlApplicationContext(
"spring.xml");
Object o = spring.getBean("hello");
System.out.println(o);
}
}
9 Git
9.1 概述
用来进行代码的版本控制:
- 远程仓库: 是一个网站,用来存你上传的代码,国内用Gitee码云,国外用GitHub
- 本地仓库: 是你自己创建的一个文件夹路径,用来存你即将上传的代码(参考E:\workspace\gitee)
- 上传资源
add: 把即将上传的代码从工作空间到本地索引 commit: 把即将上传的代码从本地索引到本地仓库 push: 把即将上传的代码从本地仓库到远程仓库 - 下载资源
clone/pull: 把代码从远程仓库下载到自己电脑里 - 以后工作中: 每天下班前,需上传资源. 每天上班时,下载资源.
- 使用Git的前提: 安装Git的软件, 在码云上注册账号
9.2 使用步骤
- 创建本地仓库: E:\workspace\gitee,用来存即将上传的代码
- 创建远程仓库: 存你上传的代码.去码云官网创建一个开源的仓库(设置仓库名字)
- 上传前,先保证本地仓库有东西能传别空着
- 正式上传:需要在本地仓库的位置执行Git命令
9.3 执行以下命令
git config --global user.name “cgblpx” git config --global user.email “2250432165@qq.com” mkdir cgb210801 cd cgb210801 git init 在本地仓库中,创建文件1.txt git add . git commit -m “first commit” git remote add origin https://gitee.com/cgblpx/cgb210801.git git push -u origin master 第一次上传的话,输入Gitee注册时的账号和密码就行了
9.4 检查是否成功
9.5 查看上传的数据
打开Gitee网站,多刷新几次,就看到上传的内容了
|