方法一 Cookie
服务器在客户端保存用户的信息,并在需要的时候从客户端(本机)读取用户信息
功能: (1) 保存用户名和密码,在一定时间不需重新登录
(2) 记录用户访问网站的喜好
(3) 网站的个性化
方法二 sendRedirect跳转(保密性不好,传递的信息会在url上显示)
实例:sendRedirect("wel?uname=ksyoon&pass=123");
注意点:(1)wel代表要跳转到的该Servlet的<url-pattern></url-pattern>内容;
(2)Servlet的url与变量之间用?连接;
(3)若要传递两个或两个以上变量用&连接;
(4)若要传递的数据是中文,会得到乱码;
修改LoginCl.java代码,实现当用户信息填写正确时,跳转到欢迎页面并显示用户名和密码
修改Wel.java代码,获取用户名并在页面显示
在浏览器上访问http:127.0.0.1:8080/myweb-site/login,用户信息填写正确后,跳转到欢迎页面,显示如下:
方法三 session技术
session的各个属性会占用服务器的内存,因此软件公司在迫不得已的情况下才使用session
应用: (1) 网上商城中的购物车 (2) 保存登录用户的信息 (3)防止用户非法登录到某个页面
(4)将某些数据放在session中,供同一用户的各个页面使用
常用方法:
(1)获得session,若没有则创建session HttpSession hs = req.getSession(true);
(2)向session中添加属性 hs.setAttribute(String name,Object value);
(3)从session中获得某个属性 String name= hs.getAttribute(String name);
(4)从session中删除某个属性 hs.removeAttribute(String name);
(5)设置session存在时间,默认存在时间为30min,此方法中时间单位s hs.setMaxInactiveInterval(int time);
思路:
(1)在SessionTest1.java中新建session属性,并设置其存在时间,在SessionTest2.java中访问session属性,并测试在存在时间之外访问session是否能读取其属性值
(2)分别进行Servlet部署,如下:
(3)开启tomcat,在浏览器上访问http:127.0.0.1:8080/myweb-site/sessionTest1,页面效果如下:
在设置的session存在时间10s内,在同个页面上将sessionTest1改成sessionTest2,页面效果如下:
发现:两个页面效果中sessionId一样,在10s不做任何刷新操作的情况下,再次访问sessionTest2,页面效果如下:
方法四 隐藏表单提交(form)
案例思路:分别新建两个java文件,一个命名为HiddenForm1(隐藏用户的性别信息),另一个命名为HiddenForm2(文字输出用户性别信息),
代码如下:
分别进行Servlet部署
开启tomcat,在浏览器上访问http://127.0.0.1:8080/myweb-site/hiddenForm1,页面显示如下:
随意填写用户信息后,点击login,页面显示如下:
若想通过传输变量到用户性别,只需添加或修改HiddenForm1的代码
String s = "女";
pw.println("<input type=hidden name=sex value="+s+">");
最终页面显示: