java spring -framework -mvc

工程demo:myapp011工程下“_05mvcboot01”  model

目录

1、Spring MVC和MVC

2、创建项目:

3、处理请求

4、HTTP协议 超文本传输协议

       4.1、 HTTP和HTTPS的区别

        4.2、SSL证书

        4.3、请求和响应

                4.3.1、请求

                4.3.2、响应

5、数据的传递与接收

        5.1、客户端传递数据到服务端

        5.2、服务端接收数据

6、URL

7、示例


1、Spring MVC和MVC

  •         Spring MVC:用于快速开发网站,属于spring framework中的核心框架

    • MVC是设计思想,将软件按照模型、视图、控制器来划分,为了解耦


                M :model,模型层,负责业务逻辑判断,数据库存取
                V:View,视图层,负责界面展示,向用户呈现数据的方式(html页面,图片,文本等)
                C:Controller,控制器负责接收用户请求,并根据请求调用 相应的模型来处理业务逻辑

2、创建项目:

勾选:web => spring web

        运行application后,输入网址,即可访问
        //相当于访问了static下的index.html
        http://localhost:8080/index.html

3、处理请求

        Spring mvc就是用来处理请求的,这两种请求,处理的方式大不一样
            静态请求:所有人访问,得到的结果是一样的,比如:新闻
            动态请求:每个人访问,得到的结果是不一样的,比如:登录

        spring MVC处理静态请求
            static有调整,需要rebuild一下
        spring MVC处理动态请求
            url地址:http://localhost:8080/v1/users/login


        Shift + F5 浏览器清理缓存,刷新页面

4、HTTP协议 超文本传输协议

       4.1、 HTTP和HTTPS的区别

​​​​​​​
            HTTP:
                1、数据以明文的方式在互联网中传输,不安全
                2、数据传输效率高
                3、默认端口号:80
                4、不需要SSL证书的认证
            HTTPS:
                1、数据是以密文的方式在互联网中传输,安全
                2、数据传输效率低
                3、默认端口号:443
                4、需要SSL证书的认证


        4.2、SSL证书

                SSL证书自己做也可以,但是浏览器不认,需要把证书一个个的添加信任,操作繁琐,

                专门做的,浏览器是信任的,

        4.3、请求和响应

                4.3.1、请求


                        HTTP请求Request 一个请求包含:请求行,请求头,请求体

                                请求行:抽象路径(/v1/users/login) ,协议版本(HTTP/1.1)

                                请求头:对请求的进一步解释和描述,是否支持长连接,代理设置,
                                请求体:请求参数或者提交内容

                4.3.2、响应

HTTP响应Response 一个响应包含三部分:响应行,响应头,响应体
响应行:版本信息(HTTP/1.1)、响应码(200)、附加信息(OK)
响应码:
    1xx:保留
    2xx:成功,表示处理成功,并正常响应
    3xx:重定向,表示处理成功,但是需要浏览器进一步请求
    4xx:客户端错误,表示客户端请求错误,导致服务端无法处理
    5xx:服务端错误,表示服务端处理请求过程出现了错误

重定向:www.360buy.com直接转成www.jd.com,然后继续访问

响应头:响应内容类别,响应长度,默认字节

5、数据的传递与接收

        5.1、客户端传递数据到服务端

        

                        只是规范 

                        Get请求(请求类别或者请求方法),获取服务端资源
                        POST请求:服务器新增资源,比如:创建订单
                        PUT请求:更新服务器端资源,比如:修改个人资料
                        DELETE请求,删除服务器端资源,比如:删除订单,聊天记录

                        

get请求
?username=liying&password=1105
敏感信息,图片、视频不用get请求,长度有限制

Post请求方式
    发送方式:通过form表单的形式发送
    传递数据方式:通过请求体方式
长度没有限制,安全

        5.2、服务端接收数据

                1、HttpServletRequest接收

                2、声明参数方式来接收客户端传递过来的数据

                3、通过DTO类方式接收

    1、HttpServletRequest接收:java servlet规范中定义的一个接口
    tomocat将请求数据,进行封装HttpServletRequest

    2、声明参数方式来接收客户端传递过来的数据
    /v1/carts/deleteCart
    
    3、通过DTO类方式接收    
    /v1/carts/updataCart
参数在2个及以下,使用声明参数接收接口数据,高于两个,使用POJO类接收

6、URL

        URL:(网址) 统一资源定位符
            区分大小写,

        URL内容:

协议:http
主机名:localhost
端口号:8080
路径:/v1/users/login
查询参数:?后面的参数

Url不支持中文,但是浏览器里可以是中文,这是因为浏览器对中文做了url编码

7、示例

添加商品到购物车
    请求方式:get
    请求地址:/v1/carts/addCart
    查询参数:?title=商品名称&price=商品单价
    返回响应:添加购物车成功

CartsController

@Controller
public class CartsController {/**** 1、HttpServletRequest接收*  添加商品到购物车*  http://localhost:8080/v1/carts/addCart*  http://localhost:8080/v1/carts/addCart?title=血饮狂刀&price=999.99** */@RequestMapping(value = "/v1/carts/addCart")@ResponseBodypublic String addCart(HttpServletRequest request){String title = request.getParameter("title");String price = request.getParameter("price");return "添加购物车成功"+title+","+price+"元";}/**** 2、声明参数方式来接收客户端传递过来的数据*  添加商品到购物车*  http://localhost:8080/v1/carts/deleteCart?username=xxx&id=xxx*  http://localhost:8080/v1/carts/addCart?title=血饮狂刀&price=999.99*  参数username和username要一致** */@RequestMapping(value = "/v1/carts/deleteCart")@ResponseBodypublic String deleteCart(String username,Integer id){return "恭喜你,删除:"+username+",id:"+id;}/***  3、通过DTO类方式接收**  /v1/carts/updataCart*  http://localhost:8080/v1/carts/updataCart?title=方天画戟&price=99.99&number=102* */@RequestMapping(value = "/v1/carts/updataCart")@ResponseBodypublic String updataCart(UpdataDTO updataDTO){return "更新成功:"+updataDTO.toString();}
}

cart.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>购物车功能</title>
</head>
<body><!--submit 点击后,会触发:action  ,会将参数提交到url,并且按照post方式请求地址链接-->
<form action="http://localhost:8080/v1/carts/addCart" method="post">商品名称:<input type="text" name="title">商品价格:<input type="text" name="price"><input type="submit" name="添加">
</form></body>
</html>

测试工具:HttpClient、Knife4j、Postman

添加接口测试:test目录下新建http文件夹,新建文件:cartsTest.http


cartsTest.http


### 更新购物车
POST http://localhost:8080/v1/carts/updataCart
Content-Type: application/x-www-form-urlencodedtitle = 方天画戟 &
price = 999.99 &
number = 99###
### 购物车添加
GET  http://localhost:8080/v1/carts/addCart?title=血饮狂刀&price=999.99Accept: application/json###

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/81770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

没有屋檐的房子-038—田鼠的酷刑

秋天是收获的季节&#xff0c;收获之后的田野里不再是湿漉漉的。水稻此时已经了却了此生&#xff0c;他们的后代稻谷已经被搬进了打谷场&#xff0c;被蜕变成了大米&#xff0c;住进了生产队的粮仓然后又进入各家的粮食口袋或者米柜中。稻田里视野逐渐开阔&#xff0c;收割完水…

IntelliJ IDEA打开项目后,目录和文件都不显示,只显示pom.xml,怎样可以再显示出来?

检查.idea文件夹 如果项目目录中缺少.idea文件夹&#xff0c;可能导致项目结构无法正确加载。可以尝试删除项目根目录下的.idea文件夹&#xff0c;然后重新打开项目&#xff0c;IDEA会自动生成新的.idea文件夹和相关配置文件&#xff0c;从而恢复项目结构。 问题解决&#xff0…

Harmony开发 List、Grid拖动自定义排序实现

1. Harmony开发 List、Grid拖动自定义排序实现 1.1. List拖动功能 本示例基于显式动画、List组件实现了ListItem的上下拖动、ListItem切换以及ListItem插入的效果。   实现思路:List手势拖动 @Entry @Component struct ListDragPage {@State private arr: string[] = [0, …

Jules 从私有预览阶段推向全球公测

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

ubuntu上安装mysql

sudo apt update查看可用版本&#xff1a; apt-cache policy mysql-server返回&#xff1a; mysql-server: 已安装&#xff1a;(无) 候选&#xff1a; 8.0.42-0ubuntu0.24.04.1 版本列表&#xff1a; 8.0.42-0ubuntu0.24.04.1 500 500 http://cn.archive.ubuntu.com/ubuntu no…

预先学习:构建智能系统的 “未雨绸缪” 之道

一、预先学习&#xff1a;训练阶段的 “模型预构建” 哲学 1.1 核心定义与生物启发 预先学习的本质是模拟人类的 “经验积累 - 快速决策” 机制&#xff1a;如同医生通过大量病例总结诊断规则&#xff0c;算法在训练阶段利用全量数据提炼规律&#xff0c;生成固化的 “决策模型…

【notes】VScode 使用总结

文章目录 扩展 c/cwindows7 系统下 c/c 自动升级导致的插件无法正常使用 设置 文件格式设置打开文件的默认格式 扩展 c/c windows7 系统下 c/c 自动升级导致的插件无法正常使用 问题 1. c/c扩展的1.25.x版本不再支持windows7 系统&#xff0c;当设置VScode自动升级拓展插件时…

wbs校验

*数据定义 DATA:tab_set_bukrs_gxgsdm5 TYPE TABLE OF rgsb4, rec_set_bukrs_gxgsdm5 LIKE LINE OF tab_set_bukrs_gxgsdm5, r_bukrs_gxgsdm5 TYPE RANGE OF bukrs WITH HEADER LINE. DATA: tab_set_hkont_gxkjkm5 TYPE STANDARD TABLE OF rgsb4, …

kafka入门(二)

Java客户端访问Kafka 引入maven依赖 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka‐clients</artifactId> <version>2.4.1</version> </dependency> 消息发送端代码 package com.tuling.kafka.ka…

Python----目标检测(PASCAL VOC数据集)

一、PASCAL VOC数据集 PASCAL VOC&#xff08;Visual Object Classes&#xff09;数据集是计算机视觉领域中广泛使用的一个 标准数据集&#xff0c;用于目标检测、图像分割、图像分类、动作识别等任务。该数据集由 PASCAL&#xff08;Pattern Analysis, Statistical Modelling …

mariadb 升级 (通过yum)

* 注意下 服务名, 有的服务器上是mysql,有的叫mariadb,mysqld的 #停止 systemctl stop mysql #修改源 vi /etc/yum.repos.d/MariaDB.repo baseurl http://yum.mariadb.org/11.4/centos7-amd64 #卸载 yum remove mysql #安装 yum install MariaDB-server galera-4 MariaDB-…

vuejs处理后端返回数字类型精度丢失问题

标题问题描述 后端返回数据有5.00和3.30这种数据&#xff0c;但是前端展示的时候返回对应分别为5和3.0&#xff0c;小数点后0都丢失了。 接口返回数据展示network-Response&#xff1a; 接口返回数据展示network-Preview&#xff1a; 错误数据效果展示 发现问题 浏览器接口…

ubuntu kubeasz 部署高可用k8s 集群

ubuntu kubeasz 部署高可用k8s 集群 测试环境主机列表软件清单kubeasz 部署高可用 kubernetes配置源配置host文件安装 ansible 并进行 ssh 免密登录:下载 kubeasz 项⽬及组件部署集群部署各组件开始安装修改 config 配置文件增加 master 节点增加 kube_node 节点登录dashboard…

IDEA2025版本使用Big Data Tools连接Linux上Hadoop的HDFS

目录 Windows的准备 1. 将与Linux上版本相同的hadoop压缩包解压到本地 ​编辑2.设置$HADOOP HOME环境变量指向:E:\hadoop-3.3.4 3.下载hadoop.dll和winutils.exe文件 4.将hadoop.dll和winutils.exe放入$HADOOP HOME/bin中 IDEA中操作 1.下载Big Data Tools插件 2.添加并连…

Java转Go日记(三十九):Gorm查询

1.1.1. 查询 // 获取第一条记录&#xff0c;按主键排序db.First(&user)SELECT * FROM users ORDER BY id LIMIT 1;// 获取最后一条记录&#xff0c;按主键排序db.Last(&user)SELECT * FROM users ORDER BY id DESC LIMIT 1;// 获取所有记录db.Find(&users)SELECT *…

bisheng系列(二)- 本地部署(前后端)

一、导读 环境&#xff1a;Ubuntu 24.04、open Euler 23.03、Windows 11、WSL 2、Python 3.10 、bisheng 1.1.1 背景&#xff1a;需要bisheng二开商用&#xff0c;故而此处进行本地部署&#xff0c;便于后期调试开发 时间&#xff1a;20250519 说明&#xff1a;bisheng前后…

5G金融互联:迈向未来金融服务的极速与智能新时代

5G金融互联:迈向未来金融服务的极速与智能新时代 大家好,我是Echo_Wish,今天咱们聊聊一个大家都十分关心的话题:5G网络在金融服务中的应用。咱们平时可能觉得5G只是打个电话、刷个视频更流畅了,但在金融服务领域,5G的低延时、大带宽和高可靠性正在悄然改变整个游戏规则。…

UE5 GAS框架解析内部数据处理机制——服务器与客户端

当&#xff0c; gas通过点击鼠标光标触发事件时&#xff0c;内部的处理机制。 当通过点击事件&#xff0c;命中中目标时&#xff0c; 可获取到对应的TargetData 目标数据。处理相应的操作。 仅有本地的客户端的情况下。命中并不会有什么异常。 当存在服务器时&#xff0c; 服…

Golang的Web应用架构设计

# Golang的Web应用架构设计 介绍 是一种快速、高效、可靠的编程语言&#xff0c;它在Web应用开发中越来越受欢迎。Golang的Web应用架构设计通常包括前端、后端和数据库三个部分。在本篇文章中&#xff0c;我们将详细介绍Golang的Web应用架构设计及其组成部分。 前端 在Golang的…

对比 HTTP-REST 与 gRPC:各自的优缺点以及适用的场景

文章目录 对比 HTTP-REST 与 gRPC&#xff1a;各自的优缺点以及适用的场景HTTP-REST 与 gRPC 的核心区别gRPC 的优缺点HTTP-REST 的优缺点适用场景 模糊点什么是 Protobuf&#xff1f;HTTP/2 会将 HTTP 消息拆分并封装为二进制帧&#xff0c;那还能过使用 HTTP/2 构建 RESTful …