• 主页
  • 标签
所有文章 关于我

  • 主页
  • 标签

WEB之cookie和session

2021-04-19

用户打开一个浏览器,点击多个超链接访问服务器的web资源,然后关闭浏览器,整个过程称为是一次会话。

会话技术:每个用户与服务器进行交互过程中,产生一些各自的数据,程序想要把这些数据进行保存,就需要使用会话技术。

分类:

1.Cookie技术:Cookie是客户端技术,程序把每个用户的数据以cookie的形式保存到各自浏览器中。当用户使用浏览器再次访问服务器中的web资源的时候,就会带着各自的数据过去。这样,web资源处理的就是用户各自的数据了。

img

2.Session技术:Session是服务器端技术,利用这个技术,服务器在运行时为每一个用户的浏览器创建一个****独享的session对象。****由于session为用户浏览器独享,所有用户在访问服务器的时候,可以把各自的数据放在各自的session中,当用户再次访问服务器中的web资源的时候,其他web资源再从用户各自的session中取出数据为用户服务。

img

Cookie的使用:

获得从浏览器带过来的Cookie,通过HttpServletRequest对象中的方法:

img

向浏览器回写Cookie,通过HttpServletResponse对象中的方法:

img

cookie的构造方法:

img

其他方法:

获得Cookie的名称的方法

img

获得Cookie的值的方法

img

设置Cookie的有效域名(设置了之后,它之下的域名访问时也会有cookie)

img

设置Cookie的有效路径(设置之后,它之下的路径也会有cookie,“/”是指整个项目)

img

设置Cookie的有效时长(0是指删除,以秒为单位)

img

Cookie的分类:

1.默认级别的Cookie:指的是没有设置有效时间的Cookie,默认的情况下只要关闭了浏览器,Cookie也会被销毁。(Cookie存在于浏览器的内存中,当关闭了浏览器Cookie就销毁了)。

2.持久级别的Cookie:指的是有有效时间的Cookie,这种Cookie的内容不是保存在浏览器的内存中,将Cookie的内容保存(持久化)到硬盘上。这个时候,关闭浏览器,再次打开浏览器就会加载硬盘上的文件,从而Cookie中的数据就不会丢失。

Cookie的使用细节:

一个Cookie只用标识一种信息,至少含有一个标识该信息的名称和值。

一个web站点可以给一个浏览器发送多个Cookie。一个web浏览器可以存储多个web站点的Cookie。

浏览器一般只允许存放300个Cookie,每个站点最多可以存放20个Cookie,每个Cookie的大小限制为4KB(老版本浏览器)。—–*浏览器存放的Cookie的大小和个数是有限制的。*

如果创建了一个Cookie,并发送到浏览器,默认情况下它是一个****会话级别的Cookie****。用户退出浏览器就被删除。如果希望将这个Cookie存到磁盘上,需要设置有效时长调用setMaxAge(int maxAge)方法,以秒为单位的。

需要手动删除持久性Cookie,可以将Cookie的有效时长设置为0.必须注意:删除Cookie时候,path必须一致,否则无法删除。

Session:Session称为是一次会话,Cookie将用户产生的私有的数据保存到浏览器端,Session将用户产生的私有的数据保存到服务器端。注意:****一个浏览器独占一个session对象****。因此,在需要保存用户数据时候,服务器程序可以将用户数据写到session对象中,当用户使用浏览器访问其他程序时,其他程序可以从用户的session中取出该用户的数据,为用户服务。

为什么有Cookie还要有Session:

Cookie局限性:Cookie保存的数据是有个数和大小的限制的。数据是保存客户端浏览器上(相对不是很安全)。

Session:Session没有个数和大小限制。数据是保存在服务器上(相对比较安全)。

Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到Session对象。

img

Session的实现原理:

****基于Cookie的****,响应头基于Cookie的set-cookie回写了一个Session的ID。

img

向session中存入数据:

img

从session域中获取数据:

img

从session域中移除数据:

img

Session作为域对象,作用范围就是****一次会话****的范围。一次会话,指的是用户打开浏览器点击多个超链接,访问服务器资源,到最后关闭浏览器的过程。(一般保存私有信息,验证码)

Servlet的域对象的总结:

1.请求范围(ServletRequest)

创建:当用户向服务器发送一次请求,服务器创建一个request对象。

销毁:当服务器对这次请求作出了响应,服务器就会销毁这个request对象。

存数据:void setAttribute(String name,Object value);

取数据:Object getAttribute(String name);

作用范围:一次请求。(转发就是一次请求)。

2.会话范围(HttpSession)

创建:服务器端****第一次调用getSession()****方法的时候。

销毁:三种情况:

Session过期,默认的过期时间30分钟(web.xml中配置)。

非正常关闭服务器(直接点击控制台的Terminate就是非正常关闭服务器,点击Servers的stop就是正常关闭)。(正常关闭服务器—session会被序列化到Tomcat的work下的localhost的工程下找到)。

手动调用session.invalidate();

存数据:void setAttribute(String name,Object value);

取数据:Object getAttribute(String name);

作用范围:一次会话(多次请求)

3.应用范围(ServletContext)

创建:服务器启动的时候创建,为每个web项目创建一个单独ServletContext对象。

销毁:服务器关闭的时候,或者项目从服务器中移除的时候。

存数据:void setAttribute(String name,Object value);

取数据:Object getAttribute(String name);

作用范围:整个应用

展开全文 >>

WEB之ajax

2021-04-19

AJAX 是一种用于创建快速动态网页的技术。

AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。

AJAX = 异步 JavaScript和XML(标准通用标记语言的子集)。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面。

AJAX 的核心是 JavaScript 对象 XMLHttpRequest。该对象在 Internet Explorer 5 中首次引入,它是一种支持异步请求的技术。简而言之,XMLHttpRequest使您可以使用 JavaScript 向服务器提出请求并处理响应,而不阻塞用户。

AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术

ajax的优点:

使用Javascript向服务器提出请求并处理响应而不阻塞用户!核心对象XMLHTTPRequest。通过这个对象,您的 JavaScript 可在不重载页面的情况与Web服务器交换数据,即在不需要刷新页面的情况下,就可以产生局部刷新的效果。

AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。

AJAX 可使因特网应用程序更小、更快,更友好

工作原理:

img

AJAX应用

1.创建一个demo1.html

2.发送一个ajax请求img:

2.1:获取一个XMLHttpRequest对象

对于大部分浏览器可以直接通过 new XMLHttpRequest();

对于IE5 IE6 new ActiveXObject(“Microsoft.XMLHTTP”)

img2.2:设置一个回调函数

回调函数它的作用就是用于处理服务器响应的数据

通过XMLHttpRequest对象的onreadystatechange设置回调函数

onreadystatechange 事件句柄,它是用于绑定回调函数,当服务器响应数据回来后,我们可以在指定的回调函数中进行数据处理

readyState 它描述的http请求的状态

img

status 它描述的http状态码 200 404 405 500…

2.3:设置请求方式GET/POST及请求的URL等

通过XMLHttpRequest对象的open方法

open它是用于设置请求方式,url及是否异步,初始化HTTP请求参数,例如URL和HTTP方法,但是并不发送请求

参数1:HTTP 请求方式 POST/GET。

参数2:url路径

参数3:true/false 代表是否异步 (一般不用写,只写前两个参数)

2.4:真正向服务器发送请求

通过XMLHttpRequest对象的send方法

send它是真正向服务器发送请求

如果请求方式是get,那么我们使用send(null) 原因:get请求方式是没有http请求体

只有post请求方式时,才有请求体,所以send的参数只是在post请求时使用例如

Xmlhttp.send(“username=xxx&password=xxx”);

setRequestHeader

img注意:如果请求方式是POST,那么我们在使用时,必须设置一个请求头,就需要使用setRequestHeader方法来完成

第二个参数是form表单标签的enctype的默认值

2.5:在回调函数中获取服务器响应的数据

通过XMLHttpRequest对象的responseText

responesText或responseXML来获取服务器响应数据

展开全文 >>

WEB之JQuery

2021-04-19

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

使用jquery可以更好完成以下操作:

\1. html文档操作,对于dom相关操作优化

\2. jquery提供更加方便与丰富事件处理

\3. jquery提供简单动画特效

\4. jquery提供ajax交互

要使用任何一个js框架,都是需要导入相关的js文件。

jquery的插件机制特别丰富,在开发中可以选择非常多的相关插件,例如,表单校验插件,树型结构等

其它常用js框架:

1.dojo 面向对象的js框架

2.extjs 学习成本比较高 它提供大量的丰富组件,它的效果展示(动画)非常好

3.prototype 早期比较流行js框架

4.angularJS 它是一个mvc js框架,它提供双向数据绑定

http://jquery.com/ jquery官网

jquery最新版本3.5.1 现在学习的版本1.8.3

img

因为jquery从jquery2.x以后对浏览器支持不是特别好,在pc端开发使用比较主流的是1.x版本

对于开发中, 我们需要导入的是min.js文件,在学习阶段我们导入 jquery-1.8.3.js

完成操作:页面加载完成后,弹出一个框显示hello jquery

第一步:新建一个web工程,2.5版本。将jquery复制到项目的webcontent中

导入js文件

img

第二步:完成操作

img

注意:源生的js绑定,它只能绑定一次(第二次绑定时会将第一次的覆盖掉),而jquery允许绑定多次(都可以显示出来)

源生的js绑定:

jQuery的核心函数

img

jQuery.holdReady(hold)暂时不讲

1.jQuery(callback)

jQuery(callback)是$(document).ready()的简写

$(document).ready(function(){});页面加载完成后,指定的函数执行

img

img

2.jQuery(html,[ownerDocument])

jQuery(html代码)它的作用是将一个dom对象包装成jquery对象

jquery对象:jquery中定义的方法与属性,只有jquery对象可以调用

这个核心函数的作用是将一个dom对象包装成了jquery对象,它的第一个参数是html代码,第二个参数是可选,它用于设置dom的相关属性

3.jQuery([selector,[context]])

这个核心函数的主要作用是用于在页面上查找,根据css选择器。参数1就是css选择器 jquery中提供了九种选择器;参数2 context 就是指定要查找的dom集

4.关于jquery对象与dom对象转换

dom对象—–àjquery对象 $(dom)

jquery对象—-àdom对象 jquery对象[0] 或 jquery对象.get(0)

img

*jQuery选择器*****(**重要**)****

一、基本选择器

img

#id 根据 id属性查找一个元素

element 根据元素的标签名称查找元素

.class 根据元素的class属性查找元素

*匹配所有元素(通配符)

selector1,selector2…将每一个选择器匹配到元素合并后一起返回

举例:

img

1.得到id=d1的元素中的内容显示出:

var html =$(“#d1”).html(); //获取所有html

alert(html);

var html =$(“#d1”).text(); //获取所有文本

alert(text);

2.将class=d元素中的内容后面添加XXX:

$(“.d”).each(function(i){

$(this).html($(this).html()+”XXX”);

}

3.得到id=d1这个div在整个页面上的div是第几个.:

var index =$(“this”).index($(“#d1”)); //序号是从0开始

alert(index);

4.得到class=d的元素有几个:

var size =$(.d).size();

alert(size);

5.将所有的class=d或id=d1元素中的内容设置为java:

$(“.d,#d1”).html(“java”);

$(“.d,#d1”).text(“java”);

方法总结:

1.html ()方法,无参数代表获取元素中的html代码,如果有参数代表设置元素的html信息

2.text()方法,无参数代表获取元素中的文本信息,如果有参数代表设置元素的文本信息

3.each()方法,它的使用可以帮助我们遍历元素,可以传递一个函数 each(function(n)),n就代表的是每一个元素的序号,在函数中可以通过this来获取其dom对象(注意dom对象和jQuery对象的转换)

4.index()方法,它可以判断元素的序号

二、层级选择器

层级选择器是根据元素的关系来获取。关系是指父子关系,兄弟关系(可以看tab键的位置确定,同级的关系,父子的关系)

img

1.空格 得到元素下的所有子元素(包含直接子元素与间接子元素(子元素的子元素))

2.大于号> 只获取直接的子元素

3.加号+ 只获取直接的下一个兄弟元素

4.波浪线~ 所有的后边的兄弟元素

举例:

img

\1. 获取id=d的所有子元素:$(“#d a”) //3个

\2. 获取id=d 的直接子元素:$(“#d>a”) //2个

\3. 获取id=d第一个

兄弟元素:$(“#d+p”) //1个

\4. 获取id=d的所有

兄弟元素:$(“#d~p”) //2个

5.将id=d下的所有子元素的文字颜色设置成红色

img

方法总结:

css()方法,它可以设置元素的样式,如果只有一个值 css(name,value),如果有多个值,css({name:value,name:value})

三、过滤器

过滤器它是在基本选择器与层次选择器获取到一批元素后,在进行过滤操作,使用过滤选择器基本都是”:”开头,除了属性过滤选择器[]

1.基本过滤选择器

img

odd是奇数,even是偶数

可以查文档使用

举例:

img

img

2.内容过滤选择器

内容过滤选择器它是根据元素内部文本内容进行选中

img

举例:

img

img

可以先创建一个css样式的divColor,然后这里可以用addClass()方法调取。

3.可见性过滤选择器

可见性过滤选择器它匹配display:none或表单中input hidden这样的元素

img

举例:

img

img

方法总结:

1.val() 获取元素当前的值 就是value值

2.show() 让元素显示出来

3.hide() 让元素隐藏起来

4.属性过滤选择器:根据元素的属性来过滤

img

^=匹配开始

$=匹配结尾

*=匹配包含

举例:

img

img

方法总结:

attr()设置或返回被选元素的属性值

5.子元素过滤选择器

img

根据子元素顺序来获取。

nth-child根据序号来选择,*序号是从1开始* *(2)* 也可以设置odd even 根据奇偶来设置(odd)(even) 也可以通过倍数来设置(3n)

first-child 获取第一个

last-child 获取最后一个

only-child 获取只有一个子元素

举例:

img

img

6.表单过滤选择器:表单过滤选择器是用于选取表单中的元素

img

举例:

img

img

方法总结:

1.trim()它是去掉字符串左右空格 $.trim(value)

常用事件处理:

2.失去焦点事件 blur(function(){})

3.click(function(){}) 点击事件

4.submit() 表单提交

7.表单对象属性过滤选择器

img

checked是用于radio,checkbox 判断选中

selected是用于select下拉框选中

举例:

img

img

在开发中,使用比较多的选择器有:

\1. 基本选择器 class id element

\2. 层次选择器 父子关系 兄弟关系

3.过滤选择器 属性过滤 基本过滤 内容过滤 关于表单过滤

*jQuery DOM操作*

一、文档处理

1.插入操作

img

内部插入是在该标签的内部的最开始(prepend)和最后(append)插入

外部插入是在该标签某一项的前面(before)或者后面(after)插入

举例:

img

img

2.删除

img

举例:

img

img

3.替换与克隆

替换:img

克隆:img

第二个参数生效的情况下,第一个参数必须为true

举例:

img

img

综合练习:

img

img

二、筛选

1.过滤

img

过滤操作它相当于是我们在jquery中使用的过滤选择器,

例如 eq可以根据序号来获取元素(从0开始计数) first与last来获取第一个元素与最后一个元素

2.查找

img

是通过当前元素,获取祖先元素,父元素子元素等。

find方法,它可以直接来查找指定的元素.

*jQuery事件机制*

一、jQuery事件介绍

Jquery中的事件与传统的javascript中事件区别:Jquery中事件允许绑定多个函数,而javascript中一个事件只能绑定一个函数.

事件中的方法:javascript是onblur,而jquery中是blur

img

img

img

二、事件绑定

1.传统的javascript中事件绑定操作

写法1:

img

写法2:

img

2.Jquery事件绑定操作

img

img

bind与live它们的区别:

img

三、一次性事件和自动触发

1.一次性事件

one()为每一个匹配元素的特定事件(像click)绑定一个一次性的事件处理函数

img

2.事件触发

trigger()在每一个匹配的元素上触发某类事件

img

四、事件切换

1.hover:这个操作它可以绑定两个函数,当触发mouseover时第一个函数执行,当触发mouseout时第二个函数执行

img

2000是一个时间,2000ms

2.toggle:用于绑定两个或多个事件处理器函数,以响应被选元素的轮流的 click 事件

img

*jQueryAjax编程*

一、jquery ajax开发介绍

img

1.$.ajax()它是jquery提供的最基本的ajax编程方式。它的功能比较强大,但是使用比较麻烦,一般不使用,它是将远程数据加载到XMLHttpRequest对象中。

2.load get post 它们简化了$.ajax操作,get post针对get与post请求的,它们是开发中使用的比较多。

3.getScript getJSON 它们是用于解决ajax跨域问题的

二、load(仅了解,用的不多)

载入远程 HTML 文件代码并插入至 DOM 中

load(url,参数,回调函数)

img

服务器端的load对应的servlet下的get方法下的代码:

img

load方法是将服务器响应的数据直接插入到指定的dom元素中。jquery中的load方法如果有参数请求方式是post,如果没有参数请求方式是get

三、$.ajax(了解)

$.ajax它是jquery中最基本的ajax操作,load get post都简化了$.ajax操作

上述的代码不使用load操作,使用原始的$.ajax操作

img

四、$.post与$.get(重要)

$.get与$.post它们针对于get与post请求

img

img

五、$.getJSON和$.getScript

jQuery ajax开发基于json(重点)

json介绍:

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,是javascript的一个子集.

json简单说就是javascript中的对象和数组.

对象: {key:value,key:value,…}

数组: [“java”,”javascript”,”vb”,…]

注意:在json中它的两种结构可以互相嵌套

{key:[value1,value2],key:value}

[{name:xxx},{key:value},{key:value}]

Fastjson介绍:

将java的对象转换成json数据,也可以将一个json转换成java对象(不常用)

Fastjson是阿里提供的一个开源json插件(工具)

对于json处理的插件有很多: fastjson jsonlib flexjson Jackson

Fastjson的使用介绍:

\1. 导入相应的jar包

img

\2. 演示fastjson将java对象转换成json数据:

String json=JSONObject.toJsonString(java对象);

问题1:将java对象转换成json时,名称是否可以自己来指定?

用注解@JSONField(name=”xxx”),下面那个属性的名字就会变成xxx

img

问题2:如果java对象中存在日期类型属性java.util.Date,是否可以用指定的格式来转换成json

img

问题3:如果java类中的某些属性不想生成json中

String json=JSONObject.toJsonString(java对象,fiter); 添加一个过滤器

img

img

问题4:关于fastjson将java对象转换成json时的循环引用问题

img

img

这里的后面重复元素会显示为引用,但我们不想这样,所以可以通过以下设置可以取消循环引用

img

jQuery ajax开发基于xml(了解)

XStream介绍:可以使用XStream工具来完成xml与java对象之间的转换。它也可以完成java对象与json之间的转换

XStream使用时需要导入的jar包:

img

img

img

XStream怎样将java对象转换成xml:

img

XStream相关的常用方法

1.设置别名(在转换前设置,在new后设置)

img

img

2.忽略属性(在转换前设置,在new后设置)

img

3.将类的属性设置成xml中字段的属性

​ img

上述的操作都可以用注解使用

要想使用XStream的注解,必须开启注解扫描.(在转换前设置,在new后设置)

img

在java类中的上面加注解

img

*Ajax跨域问题*

跨域它是不同的域名(服务器)之间的相互的资源的访问

当协议,域名,端口号任意一个不相同,它们就是不同的域。

正常情况下,因为浏览器安全问题,不同域的资源是不可以访问的

img

跨域解决方案

什么情况下会使用到跨域?

一般情况是在自己的内部的工程中会出现跨域情况。

有三种解决方案:

1.代理方案 前端页面访问本地的服务器,本地服务器访问其它域的资源,它是服务器端的跨域问题解决。
2.jsonp JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server2.example.com的服务器沟通,而 HTML 的

  • 所有文章
  • 关于我

tag:

  • 杂谈
  • 经历
  • 与人沟通
  • 项目合作
  • 搜索技巧
  • 百度
  • 谷歌
  • 书
  • 收藏
  • 打包
  • swagger
  • springfox
  • mybatis
  • Portainer.io
  • Typora
  • 快捷键
  • 压缩算法
  • PBOOTCMS
  • Eclipse
  • 新环境
  • 软件
  • 软件说明
  • WebRTC
  • 类型转换
  • JVM
  • 接口
  • 抽象类
  • 内部类
  • if
  • 逻辑判断
  • for循环
  • Tomcat
  • http
  • vite
  • WEB
  • servlet
  • JSP
  • JPA
  • json
  • 数据库
  • SQL
  • 小技巧
  • 小科普
  • git
  • Gitee
  • hexo
  • node.js
  • ElasticSearch
  • 基础概念
  • 面向对象
  • mysql
  • 索引
  • 锁
  • 事务
  • Navicat
  • JQuery
  • mqtt
  • 代理
  • 工具类代码
  • 轮子
  • 消息中间件
  • 设计规范
  • 编程规范
  • RESTful
  • HATEOAS
  • java概述
  • 历史版本
  • 安装
  • MySQL基础概念
  • HTML
  • 日志
  • PO-BO-VO,DTO-DAO与POJO
  • spring
  • maven
  • C
  • IDEA
  • 插件
  • 微信
  • Redis
  • ngnix
  • MyBatis-Plus
  • npm
  • vue
  • SpringBoot

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

一起加油吧!