cgb2107-day16

2024-08-22 06:58
文章标签 cgb2107 day16

本文主要是介绍cgb2107-day16,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 一,练习前后端整合,包括入库
      • --1,java代码
      • --2,前端代码
      • --3,测试
      • --4,总结
    • 二,SpringMVC框架解析post提交的请求参数
      • --0,项目结构
      • --1,准备表单
      • --2,准备启动类
      • --3,准备Controller类,解析请求数据
      • --4,创建Student类,用来封装数据
      • --5,测试
      • --6,扩展:入库
        • 修改pom,添加jdbc的jar包
        • 创建数据库表
        • 创建StudentController类,接受请求,包括入库
        • 总结
      • --7,扩展:修改Tomcat端口号
    • 三,Spring框架
      • --1,概述
      • --2,IOC的使用
        • 创建类
        • 创建配置文件,配置类的信息
        • 创建测试类--预习 !!

一,练习前后端整合,包括入库

–1,java代码

package cn.tedu.hello;
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("car")
public class CarController2 {//1,解析浏览器发来的请求参数//http://localhost:8080/car/save3?//id=1&color=red&price=100&pinpai=BMW&type=X7@RequestMapping("save3")public Object save3(Car c) throws Exception {//TODO 把解析到的请求参数 getXxx()入库--jdbc//1,pom里加jdbc的坐标//2,在数据库里创建car表(提供id,color,price,pinpai,type字段)/* CREATE TABLE car(id INT PRIMARY KEY AUTO_INCREMENT,color VARCHAR(20),price DOUBLE,pinpai VARCHAR(10),TYPE VARCHAR(10)) *///注册驱动Class.forName("com.mysql.jdbc.Driver");//获取数据库连接String url="jdbc:mysql://localhost:3306/cgb2107?characterEncoding=utf8";Connection con = DriverManager.getConnection(url,"root","root");//获取传输器 String sql = "insert into car values(null,?,?,?,?)";PreparedStatement p = con.prepareStatement(sql);//给SQL设置参数---参数的顺序一定要和字段的顺序一致p.setObject(1,c.getColor());p.setObject(2,c.getPrice());p.setObject(3,c.getPinpai());p.setObject(4,c.getType());//执行SQLp.executeUpdate();//释放资源p.close(); con.close();//{"id":1,"color":"red","price":100.0,"pinpai":"BMW","type":"X7"}return c;}
}

–2,前端代码

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>前后端整合</title></head><body><a href="http://localhost:8080/user/insert">普通访问</a><a href="http://localhost:8080/user/insert?id=10&name=rose&age=20">普通的get提交方式</a><a href="http://localhost:8080/user/insert2/10/rose/20">restful方式</a><a href="http://localhost:8080/car/save3?id=1&color=red&price=100&pinpai=BMW&type=X7">点我获取汽车数据</a><a href="http://localhost:8080/car/save3?id=1&color=red&price=100&pinpai=BMW&type=X7">点我保存汽车数据</a></body>
</html>

–3,测试

启动服务器后 ,打开浏览器测试
在这里插入图片描述
在这里插入图片描述

–4,总结

在这里插入图片描述

二,SpringMVC框架解析post提交的请求参数

–0,项目结构

在这里插入图片描述

–1,准备表单

在这里插入图片描述

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><style>body{font-size: 17px; /* 字号 */background-color: lightpink; /* 背景色  */}/* 输入框 */.a{width: 300px; /* 宽度*/height: 40px; /*  高度   */font-size: 20px; /* 字号 */}/* 保存按钮 */input[type="submit"]{/* 背景色  字的颜色  边框颜色  宽度 高度 */background-color: #0000FF;border-color: #0000FF;color: white;width: 100px;height: 40px; font-size: 20px; /* 字号 */}/* 取消按钮 */input[type="button"]{/* 背景色  字的颜色  边框颜色  宽度 高度 */background-color: #FF69B4;border-color: #FF69B4;color: white;width: 100px; height: 40px; font-size: 20px; /* 字号 */}</style></head><body><!-- 表单可以提交数据,默认get方式.method="post"指定提交方式,action=""指定跳转的网址要求:1,必须是form 2,必须有submit按钮 3,必须配置name属性--><form method="post" action="http://localhost:8080/student/save"><table><tr><td><h2>学生信息管理系统MIS</h2></td></tr><tr><td>姓名:</td></tr><tr><td><input class="a" type="text" placeholder="请输入姓名" name="name"></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="1">本科</option><option value="2">专科</option><option value="3">博士</option></select></td></tr><tr><td>入学日期:<input type="date" name="intime"/></td></tr><tr><td><input type="submit" value="保存"/><input type="button" value="取消"/></td></tr></table></form>	</body>
</html>

–2,准备启动类

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

–3,准备Controller类,解析请求数据

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(String name,Integer age,String sex,String hobby){public String save(Student s){//Student{name='jack', age=20, sex=0, hobby=[ppq, ps, cg], edu=2, intime=Wed Sep 15 00:00:00 CST 2021}System.out.println(s);return "保存成功!" ;}}

–4,创建Student类,用来封装数据

package cn.tedu.pojo;import java.util.Arrays;
import java.util.Date;//充当了MVC的M层,model层,用来封装数据
//pojo类里只有属性和set() get()
public class Student {//规则:               属性的类型     属性的名字//和HTML页面保持一致:参考页面输入的值 参考页面中name属性的值private String name;//用来封装用户在浏览器输入的用户名private Integer age;//用来封装用户在浏览器输入的年龄private Integer sex;//用来封装用户在浏览器选择的性别private String[] hobby;//用来封装用户在浏览器选择的爱好--多选的结果存入数组private Integer edu;//400异常的原因:页面上输入的日期是String类型//String->Date: @DateTimeFormat,需要指定日期的格式y是年M是月d是天@DateTimeFormat(pattern="yyyy-MM-dd")private Date intime;//用来封装用户在浏览器选择的日期//get set tostringpublic String getName() {return name;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", sex=" + sex +", hobby=" + Arrays.toString(hobby) +", edu=" + edu +", intime=" + intime +'}';}public void setName(String name) {this.name = name;}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;}
}

–5,测试

在这里插入图片描述

–6,扩展:入库

修改pom,添加jdbc的jar包

直接在最外面的pom里加就行了,里面的每个module都可以用

  <!--添加了jdbc的jar包 右键-generate-dependency-搜 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.48</version></dependency>
创建数据库表
CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),age INT,sex INT,hobby VARCHAR(100),edu INT,intime DATE
)
创建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;
import java.util.Arrays;//和浏览器交互,接受请求,给出响应
@RestController
@RequestMapping("student")
public class StudentController {//解析请求参数@RequestMapping("save")
//  public String save(String name,Integer age,String sex,String hobby){public String save(Student s) throws Exception {//TODO  把解析成功的学生数据 入库//1,修改pom添加jar包(直接改了project里的pom.xml)//2,建表student/*CREATE TABLE student(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),age INT,sex INT,hobby VARCHAR(100),edu INT,intime DATE)*///3,写jdbc//注册驱动Class.forName("com.mysql.jdbc.Driver");//获取数据库连接String url="jdbc:mysql://localhost:3306/cgb2107?characterEncoding=utf8";Connection con = DriverManager.getConnection(url,"root","root");//获取传输器--插入的值的个数参考字段的个数,顺序也是参考字段的顺序String sql="insert into student values(null,?,?,?,?,?,?)";PreparedStatement p = con.prepareStatement(sql);//设置SQL的参数p.setObject(1,s.getName());p.setObject(2,s.getAge());p.setObject(3,s.getSex());//注意:数据库里根本没有数组的类型,需要String[]->String,否则Data too long for column 'hobby' at row 1p.setObject(4, Arrays.toString(s.getHobby())  );p.setObject(5,s.getEdu());p.setObject(6,s.getIntime());//执行SQLp.executeUpdate();//释放资源p.close(); con.close();return "保存成功!" ;}}
总结

在这里插入图片描述

–7,扩展:修改Tomcat端口号

在这里插入图片描述

三,Spring框架

–1,概述

Spring框架重点提供的: IOC DI AOP
IOC : 控制翻转, 是指把创建对象的权利交给spring.
DI : 依赖注入, 是指把有依赖关系的对象也同时new出来.
AOP : 面向切面编程, 补充了OOP不足

–2,IOC的使用

在这里插入图片描述

创建类
package cn.tedu.spring;public class Hello {public void hi(){System.out.println("hello springioc~");}
}
创建配置文件,配置类的信息
<?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,配置bean的位置,spring自动完成iocclass属性用来描述类的全路径, id属性用来作为bean的唯一标识--><bean class="cn.tedu.spring.Hello" id="hello"></bean></beans>
创建测试类–预习 !!

这篇关于cgb2107-day16的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095562

相关文章

DAY16:什么是慢查询,导致的原因,优化方法 | undo log、redo log、binlog的用处 | MySQL有哪些锁

目录 什么是慢查询,导致的原因,优化方法 undo log、redo log、binlog的用处  MySQL有哪些锁   什么是慢查询,导致的原因,优化方法 数据库查询的执行时间超过指定的超时时间时,就被称为慢查询。 导致的原因: 查询语句比较复杂:查询涉及多个表,包含复杂的连接和子查询,可能导致执行时间较长。查询数据量大:当查询的数据量庞大时,即使查询本身并不复杂,也可能导致

Lesson_for_java_day16--java中的异常和IO流(File类、字节流、字符流、指定编码格式)

一、异常: --------------------------------java中的异常-------------------------------------------什么是异常:异常是中断了正常指令流的事件。异常的由来:出现问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述,并封装成对象,其实就是java对不正常情况进行描述后的对象体现。异常的分类:(Th

鸿蒙开发入门day16-拖拽事件和手势事件

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,还请三连支持一波哇ヾ(@^∇^@)ノ) 目录 拖拽事件 概述 拖拽流程 ​手势拖拽 ​鼠标拖拽 拖拽背板图 开发步骤 通用拖拽适配 多选拖拽适配 手势事件 gesture(常规手势绑定方法) priorityGesture(带优先级的手势绑定方法) parallelGesture(并行手势绑定

算法day16|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

算法day16|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树 654.最大二叉树617.合并二叉树1.额外申请空间(失败)2.不额外申请空间 700.二叉搜索树中的搜索98.验证二叉搜索树1.遍历后排序2.边遍历遍排序3.指针记录法 654.最大二叉树 这道题很简单,其实就是105、106的变式题。具体代码如下: class Sol

算法day16(补第15天)|用递归方法求解:513.找树左下角的值

@TOC 513.找树左下角的值 递归法(补day15) 难度较大,代码如下: class Solution {public:int result;int maxdepth=INT_MIN;void traversal(TreeNode* root,int depth){if(root->left==nullptr&&root->right==nullptr){if(maxdepth<d

代码随想录四刷day16

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣111. 二叉树的最小深度二、力扣222. 完全二叉树的节点个数三、力扣110. 平衡二叉树四、力扣257. 二叉树的所有路径 前言 本周的主题其实是简单但并不简单,本周所选的题目大多是看一下就会的题目,但是大家看完本周的文章估计也发现了,二叉树的简单题目其实里面都藏了很多细节

Day16_Zookeeper

文章目录 Zookeeperzookeeper和dubbo的关系Raft协议选举算法Zookeeper的选举算法是什么?什么是ZAB协议?四种类型的数据节点 ZnodeZookeeper的持久节点和临时节点有什么区别?zookeeper如何实现分布式锁Zookeeper 下 Server有哪些工作状态?Zookeeper集群中有哪些角色?你熟悉Zookeeper节点ZNode和相关属性吗?Z

LeetCode面试题Day16|LC56 合并区间、LC57 插入区间

题目一: 指路: . - 力扣(LeetCode)56 合并区间 思路与分析: 本题题意清晰易懂,当区间有重叠元素时返回能覆盖这些重叠区间的大区间,否则就返回无重叠区间。那么判断区间是否有重叠只需要按照区间各自的左边界升序排序,如果前一个区间的右边界大于后一个区间的左边界时则说明当前两区间有重叠元素。那么在将答案添加进结果集时,按照区间左边界升序之后,第一个区间的左边界一定是最小的,可以直

cgb2107-day18

文章目录 一,Spring AOP--1,概述--2,使用步骤--3,创建切面--4,测试创建启动类创建HelloController 类测试 二,两个框架的整合--1,需求--2,开发步骤0,项目结构1,RunApp启动类2,application.yml改端口3,Car类,封装数据4,CarService接口,定义抽象方法5,CarServiceImpl实现类,重写抽象方法6,CarC

cgb2107-day17

文章目录 一,IOC的xml方式--了解--1,项目结构--2,创建Hello类--3,创建User类--4,创建配置文件--5,创建测试类 二,IOC的注解方式--重点--0,项目结构--1,创建类--2,配置包扫描--3,测试 三,模拟 DI依赖注入--1,概述--2,测试创建Emp类创建Dept 类创建测试类 四,Spring提供的DI依赖注入--1,创建UserInfo 类--2,