IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> day05-springmvc处理客户端请求 -> 正文阅读

[JavaScript知识库]day05-springmvc处理客户端请求

作者:recommend-item-box type_blog clearfix

10 - springMVC获取客户端数据

ajax请求一旦发送出去,下面的代码,可以正常执行。

ajax自己有同步和异步的说法,它的异步体现在,不阻塞用户的操作。

ajax请求一旦发送出去,下面的代码,可以正常执行。

同步就是必须请求执行完,才可以执行后面的代码,前提都是页面不刷新。

jquery中的ajax就是封装了javascript的ajax,ajax依赖xmlhttprequest,在不同的浏览器中有不同的实现方式。

ie浏览器当中,ajax这个技术早都已经出现了,这几年才火起来了。原来ajax出现的时候,最早在ie浏览器中支持。

最早是集成到了ie的activex的控件。这个东西相当于ie浏览器中创建。在ie浏览器当中需要根据activexobject对象创建,然后根据这个对象,才可以获取到xmlhttprequest对象,在普通的浏览器当中,直接xmlhttprequest就是作为浏览器对象存在的,直接new就可以了。

原生ajax是存在浏览器的兼容性的。jquery解决了大部分浏览器的兼容性。

杨博超第一次当老师,是在五年前,第一次试讲的时候,就是讲解$.ajax这个东西。

讲完之后,就说做个例子演示一下,就出问题了。

我们一般用的时候,用的就是chrome浏览器,杨博超当时就用火狐了。

在chrome浏览器当中,$.ajax.dateType,有这个东西,谷歌浏览器中不用写,写不写都行。

但是火狐当中就不行,之前用chrome没有写过,火狐中没有出来效果。

领导说加个dataType试一下。jquery解决了大部分浏览器的兼容性问题,还是存在一定的兼容性问题。

如果它解决了一切兼容性问题,那么这个springmvc当中的hiddenHttpMethodFilter就不用讲解。

但是因为ajax因为浏览器的兼容性,所以不得不讲解一个hiddenHttpMethodFilter。

image-20211005210251352

在servlet当中,响应数据要用response.getwritter.print或者response.getwritter.write。

image-20211005210708584

image-20211006141329621

image-20211006141412815

  • 方法的形参位置写参数,参数名和数据参数名一致。

演示

点1

image-20211006141700284

image-20211006141724007

点2 - input的submit类型默认value,就是提交

image-20211006142003261

image-20211006142018470

点3 - form表单数据springmvc获取

image-20211006142440975

image-20211006142423189

  • 怎么在springmvc的controller的方法中,获取form表单的数据?

如何获取请求传过来的数据。

请求的本质是:HttpServletRequest。我们在学习javaweb的servelt的时候,是使用这个东西的。

如果使用这个东西,获取请求当中的数据,是很容易的。

Request.getParameter或者Reqeust.getParameterMap,就可以获取请求当中的参数,post请求的请求体。

Request.getCookie()

Request.getHeader()

在springmvc中,我们怎么在方法中获取参数呢?

在方法的形参上获取post请求体的数据,保证形参的名字和请求体数据的name一致

另外,如果是get请求的路径当中的参数,怎么获取。

@RequestMapping的value属性通过占位符进行获取,然后在形参通过@PathVariable进行形参赋值。

点4 - 测试

image-20211006144419839

image-20211006144353711

image-20211006144405664

点5 - 如果请求数据属性名和方法形参名字,不一致

image-20211006145352009

image-20211006145523062

表单当中,我们的数据的属性名,叫做name,在方法的形参上,我们叫做username。

手动通过@RequestParam注解来设置映射关系。

点6 - @RequetParam的required属性

image-20211006145902945

image-20211006145918143

image-20211006145949849

@RequestParam的defaultValue属性

image-20211006150144297

image-20211006150840767

  • 之前使用servlet做分页,分页的时候,servlet需要获取当前页数。
  • 第一次访问的时候,没有当前页数。

11 - @RequestParam的属性

image-20211006152032554

12 - @RequestHeader和@CookieValue的用法

@RequestHeader注解属性和@RequestParam注解完全一样

image-20211006152221914

image-20211006152255797

image-20211006152543379

@CookieValue用法

image-20211006152828588

现在cookie当中,没有存放任何信息,只有一个默认的Jssessionid。

因为session是依赖cookie的。

image-20211006153538924

我们也可以,直接对cookie进行操作,request.getCookies,cookie当中放的信息,就是多个键值对。

image-20211006153642700

13 - 使用POJO获取客户端数据

image-20211006153707952

  • servlet传递参数的过程,也会用实体类对象,封装一下。
  • 我们创建一个实体类,放在bean包下,名字叫做user,有id、username、password、age属性。
  • 再创建一个class,名字叫address,有province,city,country三个属性。有set和get方法和tostring方法。
  • 一个用户对应一个address地址信息。
  • 在user对象中设置address属性,设置set、get、tostring方法
  • 在方法中写一个user类型的user参数。

image-20211006180429427

image-20211006180505468

但是address属性没有拿到。

因为用户提交的form数据,没有address属性的,只有province、city、country数据

springmvc支持级联属性。

image-20211006180631220

image-20211006180649180

  • 在用户提交数据的时候,数据的属性,和实体类的级联属性相同。
  • 保障实体类属性名,和表单元素的name属性一致。

原来的做法

form表单中有六个文本框,我们需要在serlet中写6个request.getparameter,写完之后,先将三个province、city、country三个字段放到一个address对象中,再将其他的数据,放到一个user对象中。现在不需要了,直接用user对象接收数据就可以了。

写一下笔记

image-20211006181026458

14 - 获取servlet API

image-20211006181112996

springmvc形参位置可以获得客户端传过来的参数,请求头信息,cookie信息。

dispatcherservlet是一个servlet。

请求交给dispatcherservlet处理,处理请求的时候,要调用控制层中相对应的方法。

调用的时候,方法有参数,会对参数进行赋值。

dispatcher是一个servlet,其中就会有request,response,以及servlet其中的其他东西。

这就说明控制层方法中,可以传参servlet相关的东西。

能够传递的东西包括上面的9个玩意。

image-20211006181918957

我们能够在控制层方法中传递的参数,包括下面的内容:

image-20211006182144425

io流

功能分类:输入流,输出流。

输入流是读,输出流是写。参照物就是java程序。从文件输入到java程序,就是java程序读内容。

根据操作的颗粒不同:字节流,字符流。字节流用比较多,图片视频默认都是字节存储。

inputstream, outputstream, reader, writer,这些都是抽象类。

fileinputstrea,fileoutputstream,filereader,filewriter。

缓冲流:buffered

数据流:data

对象流:object,对象流就是序列化,重要。数据记录在文件当中,要用到序列化。

这些流很好区分:

输入流:input,reader

输出流:output, writer

字节流:stream

字符流:reader,writer

方法:读,写,一次读一个字节,一次读一个数组(从哪里开始读,读多长)。

往作用域中放值

如果不给方法注入request,我们怎么往作用域中放值呢?

如果我们有request对象,直接request.setAttribute就可以做到了。

如果没有request对象,我们应该怎么办呢?

image-20211006183057410

第一种方式,就是控制层方法中使用httpservletrequest对象,然后通过request.setAttribute就可以往request作用域当中放值了。

第二种方式,看下一个章节

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-07 13:45:45  更:2021-10-07 13:45:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 1:42:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码