cgb2107-day16

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

–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());
        //执行SQL
        p.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 tostring
    public String getName() {
        return name;
    }

    @Override
    public 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 1
        p.setObject(4, Arrays.toString(s.getHobby())  );
        p.setObject(5,s.getEdu());
        p.setObject(6,s.getIntime());
        //执行SQL
        p.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自动完成ioc
        class属性用来描述类的全路径, id属性用来作为bean的唯一标识
    -->
    <bean class="cn.tedu.spring.Hello" id="hello"></bean>

</beans>
创建测试类–预习 !!
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值