您的位置:首页 > 其它

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

2011-07-21 14:01 369 查看
第三讲:
1.同一用户的不同页面共享数据
1.1 cookie技术
什么是cookie:服务器在客户端保存用户的信息,如登录名、密码
一般保存在客户端的C:/Documents and Settings目录下

1.2 sendRedirect()转向
通过该方法将信息传送给下一个页面:比如
sendRedirect("welcom?uname=denglong");
的形式

优点:传送信息的速度比较快
缺点:它只传送送字符串,而不能传送一个对象
注意点: 1 welcome代表你要跳转的那个servlet的url
2 servlet url名和变量之间有?号
3 如果要传递两个以上的值,它们间要用&号分开
4 如果传递的是中文,那你将得到乱码,需处理一下
作用:将一个页面的信息,传递给另外的页面

1.3 隐藏表单提交(form)
形式:
<form action=login>
<input type=hidden name=a value=b>
</form>

1.4 session技术
什么是sesstion:
当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存

为该浏览器分配一个空间,该空间被这个浏览器独占。
这个空间就是session空间,该空间中的数据默认存在时间为
30min,亦可修改
应用方向:
1.网上商城中的购物车
2.保存登录用户的信息
3.将某些数据放入到session中,供同一用户的各个页面使用
4.防止用户登录到某个页面
把session看作一张表,这张表有两列。每一行就是session的一个
属性。每个属性包含两个部分,一个是该属性的名字(String),
另外一个是它的值(Object)
------------------------------------
| String | Object |
------------------------------------
| | | 属性1
------------------------------------
| | | 属性2
------------------------------------
| | | 属性3
------------------------------------
使用session:
1:得到session
HttpSession hs=request.getSession(true);
2:想session添加属性
hs.setAttribute(String name,Object val);
3:从session得到某个属性
String name=hs.getAttribute(String name);
4:从session中删除某个属性:
hs.removeAttribute(String name);

注意
1.session中属性存在默认时间:30min(仅指用户发呆时间,不是
累积时间),可修改
a、修改C:/tomcat/conf目录中的web.xml(也可在apps中的web.xml中添加)
<session-config>
<session-timeout>30</session-timeout>
</session-config>
b、修改程序
hs.setMaxInactiveInterval(30);//按秒计算
2.当某个浏览器访问网站时,服务器会给浏览器分配一个唯一的
session id,并以此来区分不同的浏览器
3.因为session的各个属性要占用服务器的内存,以此软件公司都是
在迫不得已的情况下,才使用

例子:防止用户非法登录到某个页面(如直接在地址栏输入servlet的地址)
在上个例子的基础上:
LoginCl.java

view plain //req:用于获得浏览器的信息
//res:用于向浏览器返回信息(我就是服务器)
public void process(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException{
// res.setContentType("text/html;charset=UTF-8");//处理中文乱码
// PrintWriter pw=res.getWriter();
//接收用户名和密码
String u=req.getParameter("username");
String p=req.getParameter("passwd");
//验证
// if(u.equals("sp")&&p.equals("123")){
if(p.equals("123")){
//将验证成功的信息,写入session
//第一步:得到session
HttpSession hs=req.getSession(true);
//修改session的存在时间
hs.setMaxInactiveInterval(20);//保存20秒
//第二步:写入属性
hs.setAttribute("pass","ok");
res.sendRedirect("welcome?uname="+u+"&upasswd="+p);
}else{
res.sendRedirect("login");//写你要到的servlet的那个url
}
}

Wel.java

view plainpublic void process(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException{
res.setContentType("text/html;charset=UTF-8");
//得到sesseion
HttpSession hs=req.getSession(true);
String val=(String)hs.getAttribute("pass");
//判断
if(val==null){//非法登录
try{
res.sendRedirect("login");
}catch(Exception ex){
ex.printStackTrace();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: