cgb2107-day16

发布时间:2022-07-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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());
        //执行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 @H_406_480@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,测试

启动服务器后 ,打开浏览器测试

cgb2107-day16

cgb2107-day16

–4,总结

cgb2107-day16

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

–0,项目结构

cgb2107-day16

–1,准备表单

cgb2107-day16

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>@H_590_777@
			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,测试

cgb2107-day16

–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 "保存成功!" ;
    }

}

总结

cgb2107-day16

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

cgb2107-day16

三,Spring框架

–1,概述

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

–2,IOC的使用

cgb2107-day16

创建类

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>

创建测试类–预习 !!

脚本宝典总结

以上是脚本宝典为你收集整理的cgb2107-day16全部内容,希望文章能够帮你解决cgb2107-day16所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。