servlet同一用户不同页面如何分享资源

同一用户不同页面分享资源的方式

  1. cookie
  2. sendredirect()转向
  3. 隐藏表单
  4. session技术
  5. req.setAttribute

服务器会把部分用户信息保存在本地特定的路径下,帮助下次调取。如网页背景色、背景音乐、表单、特定布局喜好,由于保存在客户端,因此安全性不高。
使用方法:
创建cookie:

Cookie myCookie=new Cookie("color", "red");
设置存在时长,单位秒,不设置将不会保存。
myCookie.setMaxAge(180); 
添加cookie到服务器:
res.addCookie(myCookie);
在接收端得到cookie:
Cookie[] RCookie=req.getCookies();
得到一条cookie:
Cookie myCookie1=RCookie[1];
得到名字 
myCookie1.getname()
得到值: 
myCookie1.getvalue()

删除:
cookie:myCookie.setMaxAge(0);


sendredirect()

优点是速度快,缺点是只能传字符串。
使用方法:

res.sendRedirect("Wel?uname=" + u);      u为变量名。    
在另一个文件中先获取, 
String u=req.getParameter("uname"); 
再使用。 

**注意事项:**
如果sendredirect中需要传两个值,在方法中写 
res.sendRedirect("Wel?uname="+u+"&upass="+p);

隐藏表单

随表单一起发送但是不想显示在页面上的属性。
使用方法:

<input type=hidden name=sex value=>

Session

在浏览器访问网站时,服务器会为这个浏览器单独开辟一个空间,该空间的默认存在时间为30min,这个时间是发呆时间,是你没用这个session的时间,这个时间也可以更改。在tomcat的conf文件夹下的web.xml有个session-timeout属性,修改这个属性会修改session的默认时间,也可以用setMaxInactiveInterval方法修改某session的发呆时间,设置为负数时,就相当于让session永远有效,设置为0时,相当于干掉了这个session。session是同一浏览器不同界面的资源分享,不能是同一浏览器的不同窗口,比如双击浏览器图标得到的窗口,会拥有不同的session。可以通过getid方法得到session的id号。session会直接占用服务器内存,所以只有在迫不得已的情况下才用。session像一张n行2列的表,第一列是属性名,第二行是属性值。用例:
得到session:

HttpSession hs=req.getSession();
设置属性:
hs.setAttribute("lover", u);
获取属性:在其他页面需要写上
HttpSession hs=req.getSession();
String girl=(String)hs.getAttribute("lover");
删除属性:
hs.removeAttribute("lover");

Servletcontext讲解
servletcontext是在服务器端一块公共访问空间,可以供所有用户(客户端)使用,他也是一张表,几乎和session用法一样,生命周期从服务器开启到关闭,常驻服务器,也不建议使用。

得到servletcontext:

servletcontext name=this.getServletContext();
设置属性: 
setattribute(object name,object value
得到值: 
servletcontext name=this.getServletContext();
Name.getattribute(object name
删除值: 
removeattribute(object name

setAttribute方法

发送端:

req.setAttribute("test",sss) ;

接收端:

req.getAttribute("test")

使用这种方法要通过转发方式,不可以用重定向,重定向前后的req不同。


注意事项:

• 为了防止用户直接通过在地址栏输入welcome界面的url进入系统,我们可以在action界面把用户填入的用户名放入session,在welcome界面要先验证session有没有填过用户名
• session和cookie的比较
存放位置:服务器端vs客户端
安全性:高vs低
存在时间:绝对时间vs发呆时间
• 获得用户的ip地址:Req.getremoteaddr();
获得用户的主机名:Req.getremotehost();

猜你喜欢

转载自blog.csdn.net/weixin_40743261/article/details/81394464
今日推荐