servlet学习笔记2——同一用户的不同页面共享数据

第三讲:
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

//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

public 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(); } }

 

 

 

 

你可能感兴趣的:(servlet学习笔记2——同一用户的不同页面共享数据)