cgb2106-day14

Posted cgblpx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cgb2106-day14相关的知识,希望对你有一定的参考价值。

一,SpringMVC解析restful的请求参数

–1,概述

简化了get方式参数的写法
普通的get传递的参数 http://localhost:8080/car/get?id=100&name=张三
restful传递的参数 http://localhost:8080/car/get2/100/张三

–2,测试

创建RunApp启动类

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

创建CarController类

package cn.tedu.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
//@Controller
//@ResponseBody
@RestController
@RequestMapping("car")
public class CarController {
    //注意1:: 参数列表里的参数类型,最好使用引用类型,
    //如果浏览器没有传值过来就用默认值,但使用基本类型会抛异常的
    //解析普通的get传递的参数
    //http://localhost:8080/car/get?id=100&name=张三
    @RequestMapping("get")
//   public String get(int id,String name){
    public String get(Integer id,String name){
            return id+name ;
    }

    //解析restful传递的参数:简化了get方式参数的写法
    //http://localhost:8080/car/get2/100/张三
    @RequestMapping("get2/{id}/{name}")
 //{x}--通过{}获取访问路径中携带的参数,并且交给变量x保存
 //@PathVariable -- 获取{}中间变量的值
    public String get2(@PathVariable Integer id,
                       @PathVariable String name){
        return id+name;
    }
    //http://localhost:8080/car/get3/100/张三/red/9.9
    @RequestMapping("get3/{a}/{b}/{c}/{d}")
    public String get3(@PathVariable Integer a,
                       @PathVariable String b,
                       @PathVariable String c,
                       @PathVariable double d){
        return a+b+c+d ;
    }


}


创建前端网页文件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		
<a href="http://localhost:8080/car/get?id=100&name=张三">解析get的参数 </a>

<a href="http://localhost:8080/car/get2/100/张三">解析restful风格的参数</a>
<a href="http://localhost:8080/car/get3/100/张三/red/9.9">练习解析restful风格的参数</a>
		
	</body>
</html>


测试


二,SpringMVC解析post的请求参数

–0,项目结构

–1,准备form表单

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		
		<style>
			body{
				font-size: 17px;/* 字号 */
				background-color: lightgray;
			}
			/* 输入框 */
			.a{
				width: 320px; /* 宽度*/
				height: 50px; /*  高度   */
				font-size: 20px; /* 字号 */
			}
			/* 保存按钮 */
			input[type="submit"]{
				/* 背景色  字的颜色  边框颜色  宽度 高度 */
				background-color: #0000FF;
				border-color: #0000FF;
				color: white;
			width: 100px;
			height: 50px; 
				font-size: 20px; /* 字号 */
			}
			/* 取消按钮 */
			input[type="button"]{
				/* 背景色  字的颜色  边框颜色  宽度 高度 */
				background-color: #FF69B4;
				border-color: #FF69B4;
				color: white;
				width: 100px; 
				height: 50px; 
				font-size: 20px; /* 字号 */
			}
		</style>
	</head>
	<body>
<a href="http://localhost:8080/car/get?id=100&name=张三">解析get的参数 </a>
<a href="http://localhost:8080/car/get2/100/张三">解析restful风格的参数</a>
<a href="http://localhost:8080/car/get3/100/张三/red/9.9">练习解析restful风格的参数</a>
		<!--  利用表单,向服务器发送数据,
			默认是get提交,通过method属性修改提交方式 
			action属性,指定提交的位置
		-->
		<form method="post" action="http://localhost:8080/stu/add">
			<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"/><input type="radio" name="sex" value="0"/></td>
				</tr>
				<tr>
					<td>
						爱好:(多选)
						<input type="checkbox" name="hobby" value="ppq"/>乒乓球
						<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,准备Student类

package cn.tedu.pojo;

import org.springframework.format.annotation.DateTimeFormat;

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

//是Model层,用来封装数据,就是一个pojo(封装的属性+get/set)
public class Student {
    //属性(成员变量):变量类型      变量名
                //提交数据的类型  页面上name属性的值
    private String name ;
    private Integer age ;//避免了一些异常
    private Integer sex ;
    private String[] hobby ;
    private Integer edu ;

    //浏览器上提交的日期默认是String类型,2012/8/12,报错400
    //@DateTimeFormat把String的日期转成Date日期
    //pattern属性规定了日期的格式y表示年M表示月d表示日
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date intime;

    //get set tostring
    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 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{" +
                "name='" + name + '\\'' +
                ", age=" + age +
                ", sex=" + sex +
                ", hobby=" + Arrays.toString(hobby) +
                ", edu=" + edu +
                ", intime=" + intime +
                '}';
    }
}


–3,准备StudentController类

package cn.tedu.controller;
import cn.tedu.pojo.Student;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//是C层,控制层,用来接受请求和给出响应
@RestController
@RequestMapping("stu")
public class StudentController {
    @RequestMapping("add")
    public Object add(Student s){
        //TODO 实现入库insert


        return s;
    }

}

–4,利用jdbc把接受到的参数入库

操作cgb2106的库, 创建tb_student表(参考Student类)

CREATE TABLE tb_student(
 id INT PRIMARY KEY AUTO_INCREMENT,
 NAME VARCHAR(50),
 age INT,
 sex INT,
 hobby VARCHAR(100),
 edu INT,
 intime DATE
)

修改pom.xml文件,添加jdbc的jar包的坐标

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cgb2106boot03</artifactId>
        <groupId>cn.tedu</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>day14</artifactId>


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

    </dependencies>

</project>

写jdbc的代码

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;

//是C层,控制层,用来接受请求和给出响应
@RestController
cgb2106-day09

cgb2106-day17

cgb2106-day18

cgb2106-day05

cgb2106-day12

cgb2106-day03