cgb2107-第二阶段-day16-springmvc -jdbc-spring

一.SpringMVC框架解析post提交的请求参数

1.项目结构:

在这里插入图片描述

2.准备表单

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>student类的视图</title>
  </head>
  <!-- 表单可以提交数据,默认get方式.
			 method="post"指定提交方式,action=""指定跳转的网址
			 要求:1,必须是form 2,必须有submit按钮 3,必须配置name属性
		 -->
  <body>
    <form action="http://localhost:8080/student/save" method="POST">
      <table>
        <tr>
          <td>学生管理系统</td>
        </tr>
        <tr>
          <td>姓名:</td>
        </tr>
        <tr>
          <td>
            <input
              type="text"
              name="name"
              id="name"
              placeholder="请输入你的名字!"
            />
          </td>
        </tr>
        <tr>
          <td>年龄:</td>
        </tr>
        <tr>
          <td>
            <input type="number" name="age" placeholder="请输入你的年龄!" />
          </td>
        </tr>
        <tr>
          <td>
            性别:

            <input type="radio" name="sex" checked="checked" value="0" /><input type="radio" name="sex" value="1" /></td>
        </tr>
        <tr>
          <td>
            学历:
            <select name="degree">
              <option value="1">本科</option>
              <option value="2">硕士</option>
              <option value="3">博士</option>
            </select>
          </td>
        </tr>
        <tr>
          <td>
            爱好: <input type="checkbox" value="" name="hobby" /><input type="checkbox" value="" name="hobby" /><input type="checkbox" value="" name="hobby" /><input type="checkbox" value="" name="hobby" /></td>
        </tr>
        <tr>
          <td>
            入学日期:
            <input type="date" name="intime" />
          </td>
        </tr>

        <tr>
          <td>
            <input type="submit" value="保存" />
            <input type="reset" value="取消" />
          </td>
        </tr>
      </table>
    </form>
  </body>
</html>

3.准备启动类

package cn.tedu;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @作者: 朱学长
 * @时间: 2021/9/15 0015 星期三 18:51
 */
@SpringBootApplication
public class RunApp {
    public static void main(String[] args) {
        SpringApplication.run(RunApp.class);
    }

}

4.准备Controller类,解析请求数据

package cn.tedu.controller;

import cn.tedu.pojo.Student;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;



/**
 * @作者: 朱学长
 * @时间: 2021/9/15 0015 星期三 18:53
 */
@RestController
@RequestMapping("/student")
public class StudentController {
    @RequestMapping("/save")
    public Student save(Student student) {
        System.out.println(student);

        return student;
    }
   }

五. 创建Student类,用来封装数据

package cn.tedu.pojo;

import org.springframework.format.annotation.DateTimeFormat;

import java.util.Arrays;
import java.util.Date;

/**
 * @作者: 朱学长
 * @时间: 2021/9/15 0015 星期三 19:14
 */
//充当了MVC的M层,model层,用来封装数据
//pojo类里只有属性和set() get()
   //规则:               属性的类型     属性的名字
    //和HTML页面保持一致:参考页面输入的值 参考页面中name属性的值
 //400异常的原因:页面上输入的日期是String类型
    //String->Date: @DateTimeFormat,需要指定日期的格式y是年M是月d是天
public class Student {
    private String name;
    private Integer age;
    private Integer sex;
    private Integer degree;
    private String[] hobby;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date intime;

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                ", degree=" + degree +
                ", hobby=" + Arrays.toString(hobby) +
                ", intime=" + intime +
                '}';
    }

    public String getName() {
        return name;
    }

    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 Integer getDegree() {
        return degree;
    }

    public void setDegree(Integer degree) {
        this.degree = degree;
    }

    public String[] getHobby() {
        return hobby;
    }

    public void setHobby(String[] hobby) {
        this.hobby = hobby;
    }

    public Date getIntime() {
        return intime;
    }

    public void setIntime(Date intime) {
        this.intime = intime;
    }
}

六.测试

在这里插入图片描述

7.拓展: 入库

修改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),
 degree 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;

/**
 * @作者: 朱学长
 * @时间: 2021/9/15 0015 星期三 18:53
 */
@RestController
@RequestMapping("/student")
public class StudentController {
    @RequestMapping("/save")
    public Student save(Student student) {
        System.out.println(student);
        jdbctosql(student);
        return student;
    }

    public void jdbctosql(Student student) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/sb";
            Connection conn = DriverManager.getConnection(url, "root", "123456");

            String sql = "insert into student2 values (null,?,?,?,?,?,?)";
            PreparedStatement ps = conn.prepareStatement(sql);

            ps.setObject(1,student.getName());
            ps.setObject(2,student.getAge());
            ps.setObject(3,student.getSex());
            ps.setObject(4,student.getDegree());
            ps.setObject(5,Arrays.toString(student.getHobby()));
            ps.setObject(6,student.getIntime());

            ps.executeUpdate();
			ps.close();
			conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}

总结:

在这里插入图片描述

8.拓展: 修改Tomcat端口号

在这里插入图片描述

二.Spring框架

-1.概述

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

-2IOC的使用

在这里插入图片描述

创建类

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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值