servlet中的数据存储

举报
兔老大 发表于 2021/04/21 23:22:23 2021/04/21
【摘要】 在servlet基础中,我们: 用以下几种方式实现数据存储和共享: 1)在客户端页面和服务器端程序之间,用request中的getParameter()方法共享数据   2)在请求和请求之间,可以用get/setAttribute方法来共享数据(转发的时候)   3)同一个servlet对象,可以用servletConfig(xml)来共享数据(主要是获取配置信息)...

在servlet基础中,我们:

用以下几种方式实现数据存储和共享:
1)在客户端页面和服务器端程序之间,用request中的getParameter()方法共享数据

 

2)在请求和请求之间,可以用get/setAttribute方法来共享数据(转发的时候)

 

3)同一个servlet对象,可以用servletConfig(xml)来共享数据(主要是获取配置信息)

getServletName();获取servlet的名称,也就是我们在web.xml中配置的servlet-name

getServletContext(); 获取ServletContext对象

getInitParameter(String); 获取在servlet中初始化参数的值。这里注意与全局初始化参数的区分。这个获取的只是在该servlet下的初始化参数

getInitParameterNames(); //获取在Servlet中所有初始化参数的名字,也就是key值

 

4)在整个web应用范围内,通过ServletContext的set/getAttribute方法共享数据

ServletContext: 代表的是整个应用。一个应用只有一个ServletContext对象。是单实例。

在一定范围内(当前应用),使多个Servlet共享数据。

 

现在我们说一个新的话题:会话管理

session/cookie

什么是会话?

  会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。

会话过程中要解决的一些问题?

每个用户不可避免各自会产生一些数据,程序要想办法为每个用户保存这些数据。

例如:用户点击超链接通过一个servlet购买了一个商品,程序应该想办法保存用户购买的商品,以便于用户点结帐servlet时,结帐servlet可以得到用户购买的商品为用户结帐。

Cookie

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

HttpSession

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

总结:cookie存在客户端,session存在服务器端

cookie:

API:

public Cookie(String name,String value)

setValue与getValue方法

setMaxAge与getMaxAge方法 (秒)

setPath与getPath方法

setDomain与getDomain方法

getName方法

使用cookie的大概步骤:

1)创建并向客户端发送Cookie

创建Cookie对象

调用Cookie的构造方法,给出Cookie的名称和Cookie的值,二者都是字符串

Cookie c = new Cookie(“userName”,”a1234”)

设置最大时效

如果要告诉浏览器将Cookie存储到磁盘上,而非仅保存在内存中,使用setMaxAge方法(参数为秒数)

c.setMaxAge(60*60*24*7)//一周(正数)

Cookie放入到HTTP响应中

使用response.addCookie(c)

如没有这一步,将不会有任何Cookie被发送到浏览器

2)从客户端读取Cookie


  
  1. Cookie[] cookies = request.getCookies();
  2. if(cookies != null){
  3. for(Cookie cookie : cookies){
  4. if("userId".equals(cookie.getName())){
  5. //doSomethingWith(cookie.getValue()); }
  6. }
  7. }

 

session:

同一颜色为一次逻辑,顺序为1,2,3,4

session 主要API:

getAttribute()

从会话对象中提取出一个之前存储的属性值

如果没有找到与名称相关联的值,则返回null

setAttribute()

设置会话对象的属性名称和属性值

removeAttribute()

移除与名称关联的值

getAttributeNames()

返回会话中所有属性的名称

getId()

返回唯一的标识符

使用session的大概步骤:

//获取HttpSession对象,设置相关属性

HttpSession session = req.getSession();

session.setAttribute("userName", userName);

//获取HttpSession对象,取出相关属性

HttpSession session = req.getSession();

session.getAttribute("userName", userName);

分享一张尚学堂的我觉得很好的图

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/91899197

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。