servlet同一用户不同页面共享数据

如何实现不同页面之间的数据传递,实现页面的数据共享?常见的方法有以下4种:

1)表单提交(form)

2)sendRedirect()跳转

3)session技术

4)Cookie技术

表单提交

这是最常见的一种方式,也是最简单的,但有时该技巧非常管用,形如:
<form action=login>

<input type=text name=a value=b>

<input type=hidden name=c value=d>

</form>
通过表单,我们也可以将一个页面信息,传递给另外的页面。特别注意隐藏表单的应用,如果不想讲提交的信息显示出来可以用它。

sendRedirect()跳转

sendRedirect("welcome?uname=xiangkejin");
优点:传送信息的速度比较快
缺点:它只能传送字符串,而不能传送一个对象
注意点:
1.welcome代表你要跳转的那个servlet的url
2.servlet url名和变量之间有?号
3.如要传递两个以上的值,它们间要用&号分开比如sendRedirect("welcome?uname=xiangkejin&PassWord=ok");
4.如果传递的是中文,那可能会是乱码,需要处理一下

session技术

当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存中为该浏览器分配一个
空间,该空间被浏览器独占。
这个空间就是session空间,该空间中的数据默认存在时间30min,你也可以修改。
用处:
1.网上商城中的购物车
2.保存登录用户的信息
3.将某些数据放入到Session中,供同一用户的各个页面使用
4.防止用户非法登录到某个页面
session可以看做是一张表,这张表有两列。每一行即是session的一个属性
每个属性包含有两个部分,一个是该属性的名字(String)另一个是它的值(Object)

如何使用Session?
得到session的id,这是容器分配的,每个浏览器占有不是属于一个机器客户端,是属于一次请求
String sessionId=ht.getId();
1.得到session
HttpSession hs=req.getSession(true);
2.向session添加属性
hs.setAttribute(String name,Object val);
3.从session得到某个属性
String name=hs.getAttibute(String name);
4.从session删除某个属性
hs.removeAttribute(String name);
//这样讲删除全部的session
hs.setMaxInactiveInterval(0);

session的注意事项:
1.在web.xml中修改默认session时间30min,也可在程序中修改。可在tomcat中修改也可以在自己的站点修改
2.当某个浏览器访问网站时,服务器会给浏览器分配唯一一个session id,并以此来区分不同的浏览器
3.因为session的各个属性要占用服务器的内存,因此软件公司都是在迫不得已的情况下才使用

Cookie技术

cookie是服务器在客户端保存用户的信息这些信息就像是小甜饼一样,数据量不大,服务器端在需要的时候可以从客户端读取

一般保存在C:\Documents and Settings目录下

用处:
1.保存用户名、密码,在一定时间不用重新登录
2.记录用户访问网站的喜好
3.网站的个性化,定制网站的服务内容

如何使用Cookie?
1.Cookie优点像一张表,分两列,一个是名字,一个是值
数据类型都是String
2.如何创建一个Cookie(在服务器端创建的)
Cookie c=new Cookie(String name,String val);
3.如何将一个Cookie添加到客户端
response.addCookie(c)
4.如何读取Cookie(从客户端掉服务器)
Cookie [] cookie=request.getCookies();

其他说明:
1.可以通过IE-工具-Internet选项-隐私-高级来启用或是禁用cookie
2.由于cookie的信息是保存在客户端的,因此安全性不高
3.cookie信息的生命周期可以在创建时设置

Cookie和session的区别
1.存在的位置

cookie保存在客户端,session保存在服务器端

2.安全性

cookie的安全性比session要弱。cookie是明文保存,session是保存在内存中

3.网络传输量

cookie通过网络在客户端与服务器端传输

session保存在服务器端,不需要传输

4.生命周期(20分钟为例)

(1)cookie的生命周期是类的,从创建时,就开始计时,

20分钟后cookie生命周期结束。

(2)session的生命周期是间隔的,从创建时,开始计时如果在20分钟,

没有访问过session,那么session信息五小,如果在20分钟内,

访问过session,那么,它的生命周期将重新开始计算。

(3)另外,关机会造成session生命周期结束,但是cookie没有任何影响。

时间: 2024-12-13 16:40:06

servlet同一用户不同页面共享数据的相关文章

servlet中同一用户不同页面共享数据(sendRedirect、session、隐藏表单)

SendRedirect(“url?parameter=value”); 通过SendRedirect()我们可以将一个页面的信息传递给另外的页面. 注意:1.url表示要跳转到的servlet的url 2.servlet url名和变量之间有?号 3.如果要传递两个以上的值,他们之间要用&号分开,比如: sendRedirect(“url?parameter1=”+val1+”&parameter2=”+val2); 4.传递中文:res.setContentType("tex

Serlvet学习笔记之二—不同页面共享数据

一共有四种方法实现共享页面共享数据 1.cookie 2.sendRedirect 3.session 4.隐藏表单提交(form) 1.cookie:服务器在客户端保存用户信息,比如登录名,密码等,实现网页个性化. 2.sendRedirect:通过该方法将信息传送给下一个页面. 优点:传送的信息比较快 缺点:它只能传送字符串,不能传送对象. 形式:sendRedirect("welcome"?uanme=admin&pwd=123") 传递 res.sendRed

页面共享数据的有效范围

web系统中保存数据与共享数据有四个范围 1.页面范围 2.请求范围: 3.会话范围 4.应用范围 ? 请求范围比页面范围要大,因为转发的时候可以跳跃多个页面. 会话比请求范围要大,因为一次会话可以发送多个请求. 应用比会话范围要大,因为服务器当前应用对象只有一个,但可以有多个用户多个会话, 原文地址:https://blog.51cto.com/357712148/2388411

servlet自动获取前端页面提交数据

servlet自动获取前端页面jsp提交数据 以下是本人在学习过程中,因前端页面提交参数过多,后台servlet封装实体类过于麻烦而写的一个工具类,应用于jsp/servlet数据提交后,基于MVC+MyBatis进行数据持久化的过程.这里只介绍页面到servlet(controller)提交数据封装对象的过程,MVC+MyBatis访问数据库不在这里介绍. 1.前端页面及代码 1)前端表单页面构建(用于测试简单构建的页面有点丑陋哦~) 2)前端jsp页面代码   这里使用了Ajax异步 get

servlet第3讲(中集)----同一用户的不同页面共享数据

5.session 5.1session概述 5.2.session应用举例  

servlet第3讲(上集)----同一用户的不同页面共享数据

1.方法综述 2.Cookie 3.sendRedict()方法     4.隐藏表单

同一用户的不同页面共享数据的方法

方法一  Cookie 服务器在客户端保存用户的信息,并在需要的时候从客户端(本机)读取用户信息 功能: (1) 保存用户名和密码,在一定时间不需重新登录 (2) 记录用户访问网站的喜好 (3) 网站的个性化 方法二  sendRedirect跳转 实例:sendRedirect("wel?uname=ksyoon&pass=123"); 注意点:(1)wel代表要跳转到的该Servlet的<url-pattern></url-pattern>内容; (

Servlet课程0425(五) sendRedirect实现不同页面共享数据

Login.java //登录界面 package com.tsinghua; import javax.servlet.http.*; import java.io.*; public class Login extends HttpServlet{ public void doGet(HttpServletRequest req, HttpServletResponse res) { //业务逻辑 try{ //中文乱码 //浏览器默认ISO-8859 res.setContentType(

ASP.NET多种不同页面间数据传递的方法

1. Get(即使用QueryString显式传递)     方式:在url后面跟参数.     特点:简单.方便.     缺点:字符串长度最长为255个字符:数据泄漏在url中.     适用数据:简单.少量.关键的数据.     适用范围:传递给自己.传递给另一个目标页面:常用于2个页面间传递数据.     用法:例如:url后加?UserID=…,跳转到目标页面,目标页面在伺服端可用Request.QueryString["InputText"]获取其指定参数值.2. Post