SpringMVC 处理post请求

本文详细介绍了如何使用SpringMVC处理POST请求,包括前端页面的创建,实体类Student的设计,数据库tb_student的建立,pom.xml中相关依赖的添加,以及控制层StudentController的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 前端页面

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>学生信息管理系统</title>
		<style>
			body{
				font-size: 15px;
			}
			input[type="text"]{
				width: 230px;
				height: 30px;
				margin: 5px 8px;
			}
			input[type="submit"]{
				background-color: lightblue;
				width: 70px;
				height: 40px;
				color: white;
				border: 0px;
				font-size: 20px;
			}
			input[type="button"]{
				background-color: lightcoral;
				width: 70px;
				height: 40px;
				color: white;
				border: 0px;
				font-size: 20px;
			}
		</style>
	</head>
	<body>
		<h1>学生信息管理系统MIS</h1>
		<form method="post" action="http://localhost:8080/stu/add">
			<div>
				<span>姓名:</span>
				<input type="text" placeholder="请输入姓名" name="name"/>
				<br />
				<span>年龄:</span>
				<input type="text" placeholder="请输入年龄" name="age"/>
				<div>
					<span>性别:</span>
					<input type="radio" name="gender" id="" value="1" /><input type="radio" name="gender" id="" value="0" /></div>
				<div>
					<span>爱好:</span>
					<input type="checkbox" name="hobby" id="" value="tabletennis" />乒乓球
					<input type="checkbox" name="hobby" id="" value="climbing" />爬山
					<input type="checkbox" name="hobby" id="" value="singing" />唱歌
				</div>
				<div>
					<span>学历:</span>
					<select name="edu">
						<option value="1">本科</option>
						<option value="2">研究生</option>
						<option value="3">博士生</option>
					</select>
				</div>
				<div>
					<span>入学日期:</span>
					<input type="date" name="intime" id="" value="" />
				</div>
				<div>
					<input type="submit" value="保存"/>
					<input type="button" value="取消"/>
				</div>
			</div>
		</form>
	</body>
</html>

2. 创建实体类Student

package cn.tedu.pojo;

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

/**
 * @Author Sky-haohao
 * @Date 2021/8/12 14:56
 * @Version 1.0
 */
// 是model层,用来封装数据,就是一个pojo(封装的属性+get/set)
public class Student {
    // 属性(成员变量):变量类型     变量名
             // 提交的数据类型     页面上name属性的值
    private Integer id;
    private String name;
    private Integer age;
    private Integer gender;//页面上设置value是0和1,此处应为Integer
    private String[] hobby;//可以选中多个爱好,应为String[]
    private Integer edu;
    //@DateTimeFormat 用来转换日期格式
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private Date intime;

    public Student() {
    }

    public Student(Integer id, String name, Integer age, Integer gender, String[] hobby, Integer edu, Date intime) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.hobby = hobby;
        this.edu = edu;
        this.intime = intime;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    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 getGender() {
        return gender;
    }

    public void setGender(Integer gender) {
        this.gender = gender;
    }

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

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

3. 创建数据库 tb_student

create table tb_student(
    id int primary key auto_increment,
    name varchar(20),
    age int,
    gender int,
    hobby varchar(40),
    edu int,
    intime datetime
)

4. 在pom.xml中添加依赖

<!-- 添加jdbc的jar包依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.23</version>
</dependency>

5. 控制层 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.*;
import java.sql.Date;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @Author Sky-haohao
 * @Date 2021/8/12 11:49
 * @Version 1.0
 */
@RestController
@RequestMapping("stu")
public class StudentController {

    @RequestMapping("add")
    public Student add(Student s) {

        Connection c = null;
        PreparedStatement ps = null;
        /*ResultSet r = null;*/
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/cgb2106?characterEncoding=utf8&serverTimezone=Asia/Shanghai";
            c = DriverManager.getConnection(url, "root", "123456");
            String sql = "insert into tb_student values (null ,?,?,?,?,?,?)";
            ps = c.prepareStatement(sql);

            /*String name = s.getName();
            Integer age = s.getAge();
            Integer gender = s.getGender();
            String[] hobby = s.getHobby();
            Integer edu = s.getEdu();
            //Date intime = (Date) s.getIntime();
            ps.setString(1, name);
            ps.setInt(2, age);
            ps.setInt(3, gender);
            String hobbies = "";
            for (String h : hobby){
                hobbies += h+" ";
            }
            ps.setString(4, hobbies);
            ps.setInt(5, edu);
            ps.setTimestamp(6, new Timestamp(s.getIntime().getTime()));*/
            /* 如果不想自己指定对应的set类型,可以直接用多态的写法,直接写setObject */
            ps.setObject(1, s.getName());
            ps.setObject(2, s.getAge());
            ps.setObject(3, s.getGender());
            ps.setObject(4, Arrays.toString(s.getHobby()));
            ps.setObject(5, s.getEdu());
            ps.setObject(6, s.getIntime());

            int i = ps.executeUpdate();
            System.out.println("受影响的行数"+i);

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                /*r.close();*/
                ps.close();
                c.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return s;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值