当我们在网站上注册的时候,假设不写入数据库的情况下,我们需要把用户名和密码传递到下一个页面,我们常用的方法就是request.getParameter(“name”);但是这种方法有一个缺点,就是我们需要把这个参数的值,从这个页面继续往下面的页面传递时候,另外一个页面接收不到的。因为http是一种无状态的协议。
request 参数转发,只有一次有效。无法长时间保存。
还有一种方法就是cookie,cookie 写在客户端,
用cookie传值先要设置cookie
Cookie c=new Cookie("uname",uname);
c.setMaxAge(60*60*24); // 设置过期时间
response.addCookie(c); //添加cookie
然后下一个页面取出cookie中我们需要的值String uname=”“;
Cookie[] cs=request.getCookies(); //返回一个数组
for(Cookie c:cs){
if("uname".equals(c.getName())){ // 键值对的形式储存
uname=c.getValue();
}
}
还有一种是用session取值
session取值我们需要先session.setAttribute(“name”, name);
然后下一个页面取得它的值
(String)session.getAttribute(“uname”)
因为得到的值是Object类型的,所有我们需要强制类型转换。
值得注意的是,session与服务器是一对一的关系,当session的创建时,第一次请求服务器,由服务器创建了编号,将编号以cookie回传给客户端。在session没有销毁之前,都是这个编号,所以能将值一直传递下去。
那么,session怎么销毁呢?
1、关闭浏览器一段时间之后,session会销毁
2、session.invalidate(); 强制销毁。但是此方法不一定马上就销毁了。是不值得常用和依赖的方法。还有一种就是session.removeAttribute(“”);移除这个session
3、关闭服务器,这是直接了当的方法了。
还有一个叫Application对象,特别之处就在于服务器启动后就产生了这个Application对象,当客户再所访问的网站的各个页面之间浏览时,这个Application对象都时同一个,直到服务器关闭。但是与Session对象不同的时,所有客户的Application对象都时同一个,即所有客户共享这个内置的Application对象。所以我们可以不连接数据库用它来做一个在线聊天的小页面。
下面是效果图:
能实现局域网内的不同用户名的用户进行在线交流。