Jsp状态管理-cookie

http协议的无状态性

  浏览器再次发生请求,服务器不能识别是原来那个浏览器,服务器不会去记,就是无状态协议(这还是个协议?意思是记得的话反倒不好?所以要有这个协议?可为什么又需要session、cookie让服务器记得?)

Cookie

保存用户状态的两个机制

  session

  cookie

session是会话,客户端的请求携带一个id,服务器识别id确定用户身份。这么看的话,这个id是怎么生成的?根据ip?想要确定是同一个用户,只能是用IP了吧?IP确定是这台电脑,然后不同的浏览器可能还有不同,这两点可以确定一个会话id?

cookie就是web服务器保存在客户端的一些信息。比如浏览过的网页、比如一件登录过保存的用户名。

(服务器保存在客户端,怎么理解?保存cookie是服务器的行为,但是保存在了客户端而不是服务器上?)

这cookie是 request的方法还是response的方法?

不对,这个请求request是读取,客户端读取cookie。然后服务器端response是写入。也就是上面说的,服务器保存在客户端?

Cookie是以文本文件的方式保存的,其实就是字符串类型,所以这些方法的返回值或者参数一般也是字符串。

Cookie在登录上的使用

Login.jsp是登录界面,dologin.jsp是处理、保存cookie页面。

 

如果用户勾选了记住登录状态,isUseCookie(是  “十天内记住我的登录状态”   按钮的命名id)的值一定不为空,且长度大于0.

此时需要用cookie保存用户名和密码,并且设置其生成期限为10天(86400秒)。

Cookie的构造方法是键值对的方式:

  new Cookie(“username”, username);

  response.addCookie()保存。

(这段代码好像是很通用)

Else里是如果用户没有勾选,就把已有的cookie清空、期限设置为0.

这不符合显示吧,如果我已经勾选过了,那下一次登录时,比如第二天,我肯定不用勾选了。但你应该还要保存9天,结果我没选,你直接清空了,那我第三天登录就不行了。这和我第一次选了保存10天就不是一个意思啊?

还是说第一次勾选了,后面再次登录,这个勾选默认还是有的。但是如果有,那不是从当前时间开始再次保存10天?那就是一直保存下去了,和我只想保存10天还是不一样?

所以这个到底什么意思???

 勾选按钮isUseCookie:

 <tr>
           <td colspan="2"><input type="checkbox" name="isUseCookie" checked="checked"/>十天内记住我的登录状态</td>
 </tr>

这里设置这个选择的时候,默认就是勾选了的(上面的页面里可以看出是勾选了的)

(为什么,这里也没有设置值的地方啊,为什么就默认是勾选?)

   难道是  checked=“checked”??如果写成checked=“check”就是不勾选状态??

  修改代码结果check是未定义。。。难道所有的cookie默认都行勾选的?

去查了  checkbox,是HTML里DOM的选择框对象。不过都是一个意思吧。

属性描述W3C
disabled 设置或返回 checkbox 是否应被禁用。 Yes
checked 设置或返回 checkbox 是否应被选中。 Yes
defaultChecked 返回 checked 属性的默认值。 Yes
form 返回对包含 checkbox 的表单的引用。 Yes
name 设置或返回 checkbox 的名称。 Yes

看来是checked属性的值就只有“checked”。如果不写这个属性,那就默认是不勾选。如果写了就只有勾选一个值??

此时默认是选了的,如果以前登录并勾选保存了,那这里会直接调出以前的值。

但是如果调出以前的,那还是默认勾选了,那不是又重新算时间了?

一直都是按十天算,那只要十天内再次登录,就可以一直保存下去了。所以我不太明白这个地方?

这里是为了解决如果输入有中文的乱码问题

原文地址:https://www.cnblogs.com/youwuyi/p/10239811.html