用同一用户的不同页面共享数据:
隐藏表单
这是最常见的一种方式,也是最简单的,但有时该技巧非常管用:形如:
<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);
}
}