cgb2107-day16

Posted cgblpx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
            )
         */
   

以上是关于cgb2107-day16的主要内容,如果未能解决你的问题,请参考以下文章

cgb2107-day07

cgb2107-day18

cgb2107-day10

cgb2107-day03

cgb2107-day14

cgb2107-day12