JSP状态管理

来源:互联网 发布:.net企业门户网站源码 编辑:程序博客网 时间:2024/05/16 15:13

JSP状态管理

1.http协议无状态性
无状态是指,当浏览器发送请求给服务器的时候,服务器响应客户端要求。但是当同一个浏览器再次发送请求给服务器的时候,服务器并不知道他就是刚才的那个浏览器。简单的说,就是服务器不会记得你。
2.保存用户状态的两大机制
Session 会话对象
Cookie
3.Cookie简介
是web服务器保存在客户端的一系列文本信息。
应用一:判断注册用户是否已经登陆网站;
应用二:“购物车”的处理
Cookie作用:1.对特定对象的追踪; 2保存用户网页浏览的记录与习惯;3.简化登陆
安全风险:容易泄露用户信息
4.Cookie的创建和使用
这里写图片描述
这里写图片描述
创建:参数,键值对形式
setValue/getValue 得到的参数值都是字符串类型
5.实例:
实现用户登录,若选择记住登录状态按钮,则在规定时间内登录该网页显示的内容是记住的用户名跟密码。
这里写图片描述

实现该功能创建了三个页面,一个用于用户登录(index.jsp),一个用于提示用户登陆成功(do_login.jsp),另一个则用于显示用户信息。

注意:因为WEB-INF下的目录下的信息受保护,不能直接访问jsp页面,所有只能通过映射来访问,比如映射为一个action或者servlet通过服务器端跳转来访问到具体的页面。

具体代码如下:
index.jsp
在登录前判断Cookie中是否保存内容,若保存内容,则显示。
这里写图片描述
这里写图片描述

用form表单提交,因为包含用户名与密码,采用安全的提交方式post。
这里写图片描述 因为 index.jsp与WEB-INF文件夹并列,想跳转到WEB-INF
jsp页面,我创建了一个User.servlet页面。在servlet页面中进行获取登录界面的信息,以及判断是否选择了记忆内容。具体代码如下:

Servlet页面:
@WebServlet(name = “UserServlet”,urlPatterns = “/login”,asyncSupported = true)

这里写图片描述
把用户名和密码保存在Cookie 对象里面
这里写图片描述

doLogin.jsp页面效果:这里写图片描述
点击查看用户信息,即用户界面这里写图片描述
用户users.jsp 代码如下:先判断是否在Cookie保存信息
这里写图片描述
可能遇到的问题,我遇到的问题:
a.输入中文乱码问题。
使用URLEncoder解决无法在Cookie当中保存中文字符串问题 URLDecoder来读取保存的字符串;
URLEncoder.encode()//第一个参数表明对哪一个字符进行编码,第二个表示用的字符集是什么Stringusername1=URLEncoder.encode(request.getParameter(“username”),”UTF-8”);出现乱码现象
b.ie浏览器无法保存cookie
解决方法详见百度经验:
https://jingyan.baidu.com/article/22a299b57a9df49e19376ab4.html

6.Session与Cookie的对比
这里写图片描述
共同点:都是用来保存用户状态的机制
都有生存期限
Cookie与Session都可以保存任意大小的对象类型(错)
Cookie中对保存对象的大小是有限制的。