cgb2108-day17
Posted cgblpx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cgb2108-day17相关的知识,希望对你有一定的参考价值。
文章目录
一,Restful解析参数的练习
–1,创建类
package cn.tedu.mvc;
import com.sun.org.apache.xpath.internal.operations.Or;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//MVC的C层Controller控制器,用来接受请求 给出响应
//总结:浏览器提交数据方式
//get:把数据用?进行拼接,多个数据之间用&连接(?id=10&price=100)
//java程序解析请求参数:在方法的参数列表中,依次解析(或者封装成java对象)
//restful:可以简化get提交数据(/10/100)
//java程序解析请求参数:使用{变量}来解析地址栏里的数据
//+使用@PathVariable获取变量的值
@RestController
@RequestMapping("order")
public class OrderController {
//http://localhost:8080/order/get?id=10&price=100&name=phone
@RequestMapping("get")
// public String get(Integer id,Double price,String name){
public Order get(Order o){
return o;
}
//http://localhost:8080/order/find
@RequestMapping("find/{id}")
public Integer find(@PathVariable Integer id){
return id;
}
//http://localhost:8080/order/save/10/100/phone
@RequestMapping("save/{id}/{price}/{name}")
// public String save(@PathVariable Integer id,
// @PathVariable Double price,
// @PathVariable String name){
//注意:restful解析参数时,标准是两步: {变量}+@PathVariable获取变量的值
//但是,参数列表如果是一个java对象,就不许加@PathVariable否则500异常!!
public String save(Order o){
//jdbc入库
return o+"" ;
}
}
–2,创建Order类
package cn.tedu.mvc;
public class Order {
private Integer id;
private Double price;
private String name;
//get set toString
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Order{" +
"id=" + id +
", price=" + price +
", name='" + name + '\\'' +
'}';
}
}
–3,创建前端网页
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>浏览器向 服务器发起请求</title>
</head>
<body>
<a href="http://localhost:8080/order/get?id=10&price=100&name=phone">练习1</a>
<a href="http://localhost:8080/order/find/2">练习2</a>
<a href="http://localhost:8080/order/save/10/100/phone">练习3</a>
<!--
<button @click="fun()">点我提交数据</button>
优化:
点击按钮,发起axios请求,访问后端java程序,
java程序解析请求参数拿着参数,入库.
-->
</body>
</html>
二,SpringMVC框架解析post提交的数据
–1,创建网页,提供表单
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试 表单提交数据</title>
<style>
/* 设置输入框的宽度高度 */
.a{
width:300px;
height: 30px;
}
/* 设置保存按钮 */
#btn1{
background-color: #0000FF;/* 背景色 */
border-color: #0000FF;/* 边框色 */
color: white;/* 文字颜色 */
width: 60px;/* 宽度高度 */
height: 30px;/* 宽度高度 */
}
/* 设置取消按钮 */
#btn2{
background-color: hotpink;/* 背景色 */
border-color: hotpink;/* 边框色 */
color: white;/* 文字颜色 */
width: 60px;/* 宽度高度 */
height: 30px;/* 宽度高度 */
}
</style>
</head>
<body>
<!--提交数据的要求:用form标签+有submit按钮+有name属性-->
<form method="post" action="http://localhost:8080/student/save">
<h1>学生信息管理系统MIS</h1>
<table>
<tr>
<td>姓名:</td>
</tr>
<tr>
<td>
<input class="a" type="text" placeholder="姓名..." name="user" />
</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="0">小学</option>
<option value="1">初中</option>
<option value="2">高中</option>
<option value="3">本科</option>
<option value="4">博士</option>
</select>
</td>
</tr>
<tr>
<td>入学日期:</td>
</tr>
<tr>
<td>
<input type="date" name="intime"/>
</td>
</tr>
<tr>
<td>
<button type="submit" id="btn1">保存</button>
<button type="reset" id="btn2">取消</button>
</td>
</tr>
</table>
</form>
</body>
</html>
–2,创建Maven Module
–3,创建启动类
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);
}
}
–4,创建StudentController解析请求参数
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 {
//http://localhost:8080/student/save
@RequestMapping("save")
public String save(Student s){
return "访问成功!"+s;
}
}
–5,创建Student类
package cn.tedu.pojo;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Arrays;
import java.util.Date;
//提供的属性用来: 封装 浏览器发来的数据
//要求:
// 1,变量名 必须和 网页中name属性的值 一样
// 2,变量类型 必须和 浏览器提交的数据类型 一样
public class Student {
//?user=jack&age=20&sex=1
private String user;
private Integer age;
private Integer sex;
private String[] hobby;
//用来保存,浏览器提交来的多个爱好ppq ps cg
private Integer edu;
//问题:原因是浏览器上选的日期是String类型:2021/10/17
//无法把String类型的日期变成 java.util.Date类型,报错400!!!!
// @DateTimeFormat用来转换日期的格式.y表示年M表示月d表示日
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date intime;
//get set toString
@Override
public String toString() {
return "Student{" +
"user='" + user + '\\'' +
", age=" + age +
", sex=" + sex +
", hobby=" + Arrays.toString(hobby) +
", edu=" + edu +
", intime=" + intime +
'}';
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
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;
}
}
–6,总结
三,扩展把数据入库
–0,添加jdbc的jar包
修改pom.xml文件,添加jar包的坐标.
1, 整个工程的pom.xml文件: 作用在每个Module里 --作用范围大
2, Module的pom.xml文件: 只作用在当前的Module里 --作用范围小
找到dependencies标签,添加以下代码:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
–1,改造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;
@RestController
@RequestMapping("student")
public class StudentController {
//http://localhost:8080/student/save
@RequestMapping("save")
public String save(Student s) throws Exception {
//TODO JDBC入库
//1,注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2,获取连接(url user pwd)
String url= "jdbc:mysql://localhost:3306/cgb2108?characterEncoding=utf8";//指定要连接哪个数据库
String user= "root" ; //使用的用户名
String pwd= 以上是关于cgb2108-day17的主要内容,如果未能解决你的问题,请参考以下文章