cgb2107-day15

2024-08-22 06:58
文章标签 cgb2107 day15

本文主要是介绍cgb2107-day15,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 一,SpringMVC框架
      • --1,概述
      • --2,入门案例
        • 项目结构
        • 创建启动类
        • 创建CarController类
        • 测试
    • 二,springmvc框架解析请求参数
      • --1,get方式
        • 解析复杂的参数
        • 创建Car类
      • --2,restful方式
        • 在IDEA里创建后端代码UserController 类
        • 在HB里创建前端html代码
        • 测试
      • 练习:
        • 需求
        • 修改前端页面
        • 修改后端代码,创建类
      • --3,post方式
        • 准备表单
        • 准备类,解析请求数据
        • 扩展:入库

一,SpringMVC框架

–1,概述

主要作用: 接受请求 + 做出响应
使用步骤:
1, 导入jar包 (核心: spring-webmvc.jar),被springboot简化了
2, 创建启动类,启动服务器
3, 准备服务器里的资源,可以被浏览器访问

–2,入门案例

项目结构

在这里插入图片描述

创建启动类
package cn.tedu.hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication//springboot提供的,表示自己是一个启动类,用来启动服务器
public class RunApp {public static void main(String[] args) {//SpringApplication是springboot提供的,启动指定类SpringApplication.run(RunApp.class);}
}
创建CarController类
package cn.tedu.hello;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//需求: http://localhost:8080/car/get
@RestController//是springmvc提供的,可以被浏览器访问
@RequestMapping("car")//是springmvc提供的,规定了浏览器访问这个类的方式
public class CarController {//访问方式:http://localhost:8080/car/get@RequestMapping("get")public void get(){System.out.println("浏览器访问成功!");}
}
测试

打开浏览器访问: http://localhost:8080/car/get

二,springmvc框架解析请求参数

–1,get方式

把数据用?拼接在地址栏中,多数据之间用& 连接 :
http://localhost:8080/car/add?id=10

解析复杂的参数
package cn.tedu.hello;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//需求: http://localhost:8080/car/get
/*
总结:
1, SpringMVC可以接受请求,并解析请求参数
只要在方法的参数列表中声明就可以:public void add(int id,String name)
2, 为了避免400或者500的异常,最好把参数列表的参数类型改成引用类型改后:public void add(Integer id,String name)
3, 参数列表可以提供一个对象,框架可以解析参数,并且可以把参数直接给对象的属性赋值public void save2(Car c)*/
@RestController//是springmvc提供的,可以被浏览器访问
@RequestMapping("car")//是springmvc提供的,规定了浏览器访问这个类的方式
public class CarController {@RequestMapping("get")public void get(){System.out.println("浏览器访问成功!");}//springmvc解析get方式的请求参数//练习1: http://localhost:8080/car/add?id=10@RequestMapping("add")public void add(Integer id){//参数列表的写法:1,参数类型必须和请求的参数类型一致 2,参数名称必须和请求的参数名称一致System.out.println("浏览器访问成功add!"+id);}//练习2: http://localhost:8080/car/add2?id=10&name=jack@RequestMapping("add2")public void add(Integer id,String name){System.out.println("浏览器访问成功add!"+id+name);}//练习3: http://localhost:8080/car/save?id=1&color=red&price=100//HandlerMapping:处理器映射器,拿着地址栏的访问方式找到哪个类哪个方法//Map<String,Object> {"/car/save", new CarController().save()}@RequestMapping("save")public void save(Integer id,String color,Double price){//基本类型的参数,访问时必须传参否则400 500异常,//引用类型不传入参数也行,就会用默认值null//优化1:推荐使用引用类型,因为规避了异常的发生!!!System.out.println(id+color+price);}
//练习4:http://localhost:8080/car/save2?id=1&color=red&price=100&pinpai=BMW&type=X7//框架的作用:1,解析了请求参数  2,把解析到的参数调用c.setXxx()设置值@RequestMapping("save2")public void save2(Car c){System.out.println(c);//Car{id=1, color='red', price=100.0, pinpai='BMW', type='X7'}}}
创建Car类
package cn.tedu.hello;
//http://localhost:8080/car/save2?
//         id=1&color=red&price=100&pinpai=BMW&type=X7
//这个类用来存,springmvc框架解析到的请求参数
public class Car {private Integer id;private String color;private Double price;private String pinpai;private String type ;//set get tostring --右键-generatepublic Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}public String getPinpai() {return pinpai;}public void setPinpai(String pinpai) {this.pinpai = pinpai;}public String getType() {return type;}public void setType(String type) {this.type = type;}public String toString() {return "Car{" +"id=" + id +", color='" + color + '\'' +", price=" + price +", pinpai='" + pinpai + '\'' +", type='" + type + '\'' +'}';}
}

–2,restful方式

在IDEA里创建后端代码UserController 类
package cn.tedu.hello;import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;//需求:解析restful风格提交的数据,简化了get提交数据的写法
//普通get方式:http://localhost:8080/user/insert?id=1&name=张三&age=18
//restful方式:http://localhost:8080/user/insert/1/张三/18
@RestController
@RequestMapping("user")
public class UserController {
//解析get数据:http://localhost:8080/user/insert?id=1&name=张三&age=18@RequestMapping("insert")public Object insert(Integer id,String name,Integer age){return id+name+age;}
//解析restful数据:http://localhost:8080/user/insert2/1/张三/18//步骤:1,利用{}获取地址栏中的参数,个数和顺序要和地址栏里的参数匹配//2,利用@PathVariable注解,获取花括号中间的变量的值@RequestMapping("insert2/{id}/{name}/{age}")public void insert2(@PathVariable Integer id,@PathVariable String name,@PathVariable Integer age){System.out.println(id+name+age);}}
在HB里创建前端html代码
<!DOCTYPE html>
<html><head><meta 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></body>
</html>
测试

在这里插入图片描述

练习:

需求

练习:
http://localhost:8080/car/save2?id=1&color=red&price=100&pinpai=BMW&type=X7
1,解析浏览器发来的请求参数
2,给浏览器返回数据

修改前端页面
<!DOCTYPE html>
<html><head><meta 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></body>
</html>
修改后端代码,创建类
package cn.tedu.hello;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@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){//TODO 把解析到的请求参数 getXxx()入库--jdbc//pom里加jdbc的坐标//在数据库里创建car表(提供id,color,price,pinpai,type字段)//注册驱动 获取数据库连接 获取传输器 执行SQL 解析结果集 释放资源//{"id":1,"color":"red","price":100.0,"pinpai":"BMW","type":"X7"}return c;}
}

–3,post方式

准备表单

在这里插入图片描述

准备类,解析请求数据
扩展:入库

这篇关于cgb2107-day15的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095561

相关文章

chapter12-异常(Exception)——(作业)——day15

目录 457-异常课后作业 458-异常课后作业2 457-异常课后作业 package chapter12.exception.homework;/*** @author LuHan* @version 1.0*/public class Homework01 {public static void main(String[] args) {try {if(args.l

【读书笔记-《30天自制操作系统》-14】Day15

本篇内容开始讲解多任务。本篇内容结构很简单,先讲解任务切换的原理,再讲解任务切换的代码实践。但是涉及到的知识不少,理解上也有些难度。 1. 任务切换与多任务原理 1.1 多任务与任务切换 所谓多任务,指的是操作系统同时运行多个任务。但是这种说法实际上是不准确的。如果只有一个CPU,是无法事实上实现同时运行多个任务的。而之所以给用户以多个任务在同时运行的错觉,其实是因为多个任务之间在快速地

Lesson_for_java_day15--java小练习:贪吃蛇游戏(在控制台上操作)

目的:编写一个贪吃蛇游戏,在控制台中操作。 思路: 1、贪吃蛇游戏中,需要蛇对象,食物对象和操作界面对象。 2、蛇对象中,包含蛇身对象(每个点),所以用容器存储蛇对象。 3、同理食物对象也需要容器存储。 4、操作界面由每个具体的点组成,所以需要一个生成点的类。 5、再将这些对象整合到一个控制游戏过程的对象中,实现游戏的过程。 代码: 生成操作界面的点类: package

算法day15|513.找树左下角的值、112. 路径总和、113.路径总和Ⅱ、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树

算法day15|513.找树左下角的值、112. 路径总和、113.路径总和Ⅱ、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树 513.找树左下角的值迭代法 112. 路径总和113.路径总和Ⅱ106.从中序与后序遍历序列构造二叉树105.从前序与中序遍历序列构造二叉树 513.找树左下角的值 一开始题意理解错了,做了好多无用功…看来读题真的非常重

鸿蒙开发入门day15-焦点事件

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,还请三连支持一波哇ヾ(@^∇^@)ノ) 目录 焦点事件 基础概念与规范 基础概念 走焦规范 走焦算法 获焦/失焦事件 设置组件是否可获焦 默认焦点 页面的默认焦点 容器的默认焦点 页面/容器整体获焦时的焦点链 焦点样式 主动获焦/失焦 焦点组与获焦优先级   焦点事件 基础概念

代码随想录四刷day15

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣100. 相同的树二、力扣572. 另一棵树的子树三、力扣104. 二叉树的最大深度四、力扣559. N 叉树的最大深度 前言 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 一、力扣100. 相同的树 递归 /*** Definition for a bina

cgb2107-day18

文章目录 一,Spring AOP--1,概述--2,使用步骤--3,创建切面--4,测试创建启动类创建HelloController 类测试 二,两个框架的整合--1,需求--2,开发步骤0,项目结构1,RunApp启动类2,application.yml改端口3,Car类,封装数据4,CarService接口,定义抽象方法5,CarServiceImpl实现类,重写抽象方法6,CarC

cgb2107-day17

文章目录 一,IOC的xml方式--了解--1,项目结构--2,创建Hello类--3,创建User类--4,创建配置文件--5,创建测试类 二,IOC的注解方式--重点--0,项目结构--1,创建类--2,配置包扫描--3,测试 三,模拟 DI依赖注入--1,概述--2,测试创建Emp类创建Dept 类创建测试类 四,Spring提供的DI依赖注入--1,创建UserInfo 类--2,

cgb2107-day16

文章目录 一,练习前后端整合,包括入库--1,java代码--2,前端代码--3,测试--4,总结 二,SpringMVC框架解析post提交的请求参数--0,项目结构--1,准备表单--2,准备启动类--3,准备Controller类,解析请求数据--4,创建Student类,用来封装数据--5,测试--6,扩展:入库修改pom,添加jdbc的jar包创建数据库表创建StudentCont

cgb2107-day14

文章目录 一,Maven--1,概述--2,使用步骤 二,在IDEA里用maven--1,创建Maven工程--2,配置maven--3,修改pom.xml文件,添加jar包的坐标--4,检查本地仓库5,常用的maven命令 三,Spring Boot--1,概述--2,项目结构--3,创建Spring Boot工程--4,给工程配置maven信息--5,spring boot的pom.xm