session(整理)

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);

 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值