JSP(3):servlet 用同一用户的不同页面共享数据(session)

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

 隐藏表单

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

<from action=login>

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

</from>

用同一用户的不同页面共享数据(session)

什么是session:

当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为浏览器分配一个空间,该空间被这个浏览器独占

,这个空间就是session空间,该空间中的数据默认存在时间为30min,你也可以修改。

 

session可以用来做什么:

 1.网上商城中的购物车

2.保存登录用户的信息

3.将某些数据放到session中,供同一用户的各个页面使用。

4..防止用户非法登录到某个页面

 

 

1.session中属性存在的默认时间就30min,你也可以修改它的存在时间:a修改web.xml,b在程序中去修改

2.上面说的30min指的发呆的时间

3.当某个浏览器访问网站时,服务器会给浏览器分配一个唯一的session  ID,并以此来区分不同浏览器(客户端)

4.因为session的各个属性要占用服务器的内存,因此软件公司都是在迫不得已的情况下才使用

 

 

1.在login中:登陆界面

package com.tsinghua;    
import javax.servlet.http.*;    
import  java.io.*;    
public class Login extends HttpServlet{    
   
    public void doGet(HttpServletRequest req, HttpServletResponse res){    
   
   
        try{    
            //中文乱码      
            res.setContentType("text/html;charset=gbk");    
            PrintWriter pw = res.getWriter();    
    
    
            pw.println("<html>");    
            pw.println("<body>");    
            pw.println("<h1>登陆界面</h1>");    
            pw.println("<form action=logincl method = post>");    
            pw.println("用户名:<input type=text name= user><br>");    
            pw.println("密码:<input type=password name= passwd><br>");    
            pw.println("密码:<input type=hidden name= hidd><br>");    
            pw.println("123456提交:<input type=submit value=login><br>");    
            pw.println("</form>");    
            pw.println("</body>");    
            pw.println("</html>");    
               System.out.println("登陆=============" + req.getParameter("user")+"=="+req.getParameter("passwd"));   
    
        }catch(Exception e){    
            System.out.println("登陆=============");    
            e.printStackTrace();    
        }finally{    
    
    
        }    
    }    
    
        public void doPost(HttpServletRequest req, HttpServletResponse res){    
            this.doGet(req, res);    
    

        }
      }    
    


在loginCl 中:

/**
 * @(#)LoginCl.java
 *
 *
 * @author 
 * @version 1.00 2014/3/23
 */

//用户验证servlet

    
package com.tsinghua;    
import javax.servlet.http.*;    
import  java.io.*;    
public class LoginCl extends HttpServlet{    
   
    public void doGet(HttpServletRequest req, HttpServletResponse res){    
   
   
        try{    
        	//接受用户名和密码
            String u=req.getParameter("user");
            String p=req.getParameter("passwd");
            
            if(u.equals("sp")&&p.equals("123")){
            	//合法
            	//将验证成功的信息写入session
            	//1.得到session
            	HttpSession hs=req.getSession(true);
            	//修改session的存在时间
            	hs.setMaxInactiveInterval(20);
            	hs.setAttribute("pass","OK");
            	
            	
            	//验证合法,跳转到wel
            	res.sendRedirect("wel?uname="+u+"&upass="+p);
             }else{
             	//不合法
             	//跳转
             	  res.sendRedirect("login");
             	  }
             	 
            	 
        }catch(Exception e){    
           
            e.printStackTrace();    
        }finally{    
    
    
        }    
    }    
    
        public void doPost(HttpServletRequest req, HttpServletResponse res){    
            this.doGet(req, res);    
    

        }
      }    
    


3.wel欢迎界面中:

package com.tsinghua;    
import javax.servlet.http.*;    
import  java.io.*;    
public class Wel extends HttpServlet{    
   
    public void doGet(HttpServletRequest req, HttpServletResponse res){  
    	
    	
    	      HttpSession hs=req.getSession(true);
    	      String val=(String)hs.getAttribute("pass");
    	      //判断
    	      if(val==null){
    	      	  //非法登录
    	      	   try {
                       res.sendRedirect("login");
                     }
                   catch (Exception ex) {
                   	ex.printStackTrace();
                } finally {
                	     
                  }
    	      	}
    	      	
    	      	  
             //得到login传递的用户名
             String u=req.getParameter("uname");
             String p=req.getParameter("upass");
        try{    
            PrintWriter pw=res.getWriter();
            pw.println("wel,hello"+u+"pass"+p);
        }catch(Exception e){    
            
            e.printStackTrace();    
        }finally{    
    
    
        }    
    }    
    
        public void doPost(HttpServletRequest req, HttpServletResponse res){    
            this.doGet(req, res);    
    

        }
      }    
    


 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值