Javaweb入门知识点总结 ②

本文介绍了Javaweb中session的工作原理,包括session的生命周期、安全性以及在客户端禁用cookie时如何保持session。此外,讨论了forward与redirect的区别、get与post请求的不同,以及讲解了实现跨域的方法。通过深入理解这些概念,有助于初学者掌握Javaweb开发基础。
摘要由CSDN通过智能技术生成

Javaweb入门知识点总结 ②



五、session的工作原理

1.什么是session

session是浏览器和服务器会话过程中,服务器分配的一块存储空间。服务器默认为浏览器在cookie中设置sessionid,浏览器在向服务器请求过程中传输cookie包含sessionid,服务器根据sessionid获取出会话中存储的信息。
由于http协议是无状态的,,即http请求一次连接一次,数据传输完毕,连接就断开了,下次访问需要重新连接。
通过cookie中的sessionid字段和服务端的session关联,可以确定会话的身份信息。

2.session比cookie更安全

用户信息可以通过加密存储到cookie,但这样做的安全性很差,浏览器的cookie的容易被其他程序获取和篡改。使用session的意义在于session存储在服务器,相对安全性更高。

3.session的生命周期

创建:
浏览器访问服务器的servlet(jsp)时,服务器会自动创建session,并把sessionid通过cookie返回到浏览器。servlet规范中,通过requestgetSession(true)可以强制创建session。
销毁:
服务器会默认给session一个过期时间,即从该session的会话在有效时间内没有再被访问就会被设置过超时,需要重新建立会话。
比如tomcat的默认会话超时时间为分钟。
会话超时时间是可以通过配置文件设置,如修改 web.xml、server.xml文件

4.注意事项

如果浏览器禁用cookie,默认情况下session无法生效。可以用过url重载携带sessionid参数、把sessionid设置为http协议header设为其他自定义字段中,请求中始终携带。
当用户量很大、session的失效时间很擦汗给你,需要注意session的查找和存储对服务器性能的影响。
web容器可以设置session的钝化(从内存持久化到文件)和活化(从文件读到内存),提高性能。

六、客户端禁止cookie,session还能用吗

一般默认情况下,在会话中,服务器存储session的sessionid是通过cookie存到浏览器里。
如果浏览器禁用了cookie,浏览器请求服务器无法携带sessionid,服务器无法识别请求中的用户身份,session失效。
但是可以通过其他方法在禁用cookie的情况下,可以继续使用session:
1.通过url重写,把sessionid作为参数追加到原url中,后续的浏览器与服务器交互中携带sessionid参数。
2.服务器的返回数据中包含sessionid,浏览器发送请求时,携带sessionid参数。
3.通过Http协议其他header字段,服务器每次返回时设置该header字段信息,浏览器中js读取该header字段,请求服务器时,js设置携带该header字段。

七、forward和redirect的区别

forward:转发;redirect:重定向。
1.浏览器url地址显示不同:
服务端通过返回forward返回,浏览器url地址不会发生变化;服务器通过redirect返回,浏览器会重新请求,url地址也会发生变化。
2.前后台两者页面跳转的处理方式不同:
forward跳转页面,是服务端进行页面跳转加载(include)新页面,直接返回到浏览器;redirect跳转页面,是服务端返回新的url地址,浏览器二次发出url请求。
3.参数携带情况不一样:
forward跳转页面,会共享请求的参数到新的页面;redirect跳转页面,属于一次全新的http请求,无法共享上一次的请求的参数。
4.http请求次数不同:
forward一次;redirect两次
5.新目标地址范围不同:
forward必须是同一个应用内的某个资源;redirect的新地址可以是任意地址。

八、get和post请求区别

GET参数通过URL传递,POST放在Request body中。
GET请求在URL中传送的参数是有长度限制的,而POST没有。
GET比POST更不安全,因为参数之间暴露在URL上,所以用来传递铭感信息。
GET请求只能进行url编码,而POST有支持多种编码方式。
GET产生一个TCP数据包,POST产生两个数据包

九、如何实现跨域?

跨域:当浏览器执行脚本时会检查是否同源,只有同源的脚本才会执行,如果不同源即为跨域。

这里的同源指访问的协议、域名、端口都相同。
同源策略是由Netscape提出的著名安全策略,是浏览器最核心、基本的安全功能,他限制了一个源中加载脚本与来自其他源中资源的交互方式。
Ajax发起的跨域HTTP请求,结果被浏览器拦截,同时Ajax请求不能携带与本网站不同源的Cookie。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值