1.什么是session?
当用户打开浏览器访问某个网站时,服务器就会在服务器的内存中为该浏览器分配一个空间,用唯一的session id进行区别不同的浏览器,该空间会被浏览器独占
这个空间就是session空间,该空间的数据默认存在时间是30分钟,也可以修改session的有效时间
2.session的用途
session可以用作购物车,可以通过session实现客户端的非法登录
还可以把一些数据放到session中,供同一用户在不同的页面使用
session的属性包括2部分,一个是属性名(String类型),一个是属性值(Object类型)
3.创建session
HttpSession hs=HttpServletRequest.getSession(true);
4.向session中添加属性
hs.setAttribute(String name,Object val)
5.从session中得到属性
String name=hs.getAttribute(name)
6.从session中删除某个属性
hs.removeAttribute(name)
删除session中的一个属性及该属性的值
使用removeAttribute(“属性名”)
删除session中的所有属性及所有属性对应的的值
及删除session本身,只要把session的有效时间设置为0
setMaxInactiveInterval(0)
此处单位为 分钟,此处设置对tomcat/webapps下的
所有web应用都有效
b.如果只是想对tomcat/webapps下的某个web应用设定一个 特别的有效期,那么只需在该web应用的web.xml中修改下面的代码 c.在程序中修改session的有效时间
<session-config>
<session-timeout>设定值</ session-timeout >
</ session-config >
//1.获取session
HttpSession hs= req.getSession(true);
//修改session的有效时间,单位是 秒
hs.setMaxInactiveInterval(20);
示例程序:
package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;
public class Login extends HttpServlet{
public void doPost(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=username><br>");
pw.println("密码:<input type=password name=pw><br>");
pw.println("<input type=submit value=登录>");
pw.println("</form>");
pw.println("</body>");
pw.println("</html>");
}catch(Exception e){
e.printStackTrace();
}
}
public void doGet(HttpServletRequest req,HttpServletResponse res){
this.doPost(req,res);
}
}
**************************
package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;
public class LoginCL extends HttpServlet{
public void doPost(HttpServletRequest req,HttpServletResponse res){
try{
String username=req.getParameter("username");
String password=req.getParameter("pw");
if(username.equals("dongaiqin")&&password.equals ("dongaiqin")){
//将验证成功的信息写入session
//1.从HttpServletRequest对象中获取HttpSession对象
HttpSession hs= req.getSession(true);
//修改session的有效时间,单位是 秒
hs.setMaxInactiveInterval(20);
//2.写入信息
hs.setAttribute("username",username);
hs.setAttribute("password",password);
res.sendRedirect("Welcom?UserName=" + username+"&PassWord="+password);
}else{
res.sendRedirect("Login");
//res.sendRedirect("Login");中参数是该servlet的访问时用的url
}
}catch(Exception e){
e.printStackTrace();
}
}
public void doGet(HttpServletRequest req,HttpServletResponse res){
this.doPost(req,res);
}
}
************************
package com.tsinghua;
import javax.servlet.http.*;
import java.io.*;
public class Welcom extends HttpServlet{
public void doPost
(HttpServletRequest req,HttpServletResponse res){
//1.获取session
HttpSession hs= req.getSession(true);
String passw=(String) hs.getAttribute("password");
if(passw==null){
try{
res.sendRedirect("Login");
}catch(Exception e){
e.printStackTrace();
}
}
//从LoginCL获取传递过来的用户名
String uname=req.getParameter("UserName");
//从LoginCL1获取传递过来的密码
String upassword=req.getParameter("PassWord");
try{
PrintWriter pw=res.getWriter();
pw.println("Hello"+ uname+",
welcom to servlet!");
pw.println("Your password is "+upassword); }catch(Exception e){
e.printStackTrace();
}
}
public void doGet(HttpServletRequestreq,HttpServletResponse res){
this.doPost(req,res);
}
}