session的使用方法及实例

  Session 是什么呢?简单来说就是服务器给客户端的一个编号。当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站。当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个 SessionID,用以标识这个用户的唯一身份。这个 SessionID 是由WWW服务器随机产生的一个由24个字符组成的字符串,我们会在下面的实验中见到它的实际样子。

  这个唯一的 SessionID 是有很大的实际意义的。当一个用户提交了表单时,浏览器会将用户的 SessionID 自动附加在HTTP头信息中,(这是浏览器的自动功能,用户不会察觉到),当服务器处理完这个表单后,将结果返回给 SessionID 所对应的用户。试想,如果没有 SessionID,当有两个用户同时进行注册时,服务器怎样才能知道到底是哪个用户提交了哪个表单呢。除了 SessionID,在每个 Session 中还包含很多其他信息。

1.设置session

java 里面,可以给 session 添加自定义 key,value(HttpServletRequest request 作为方法的输入参数)

HttpSession session = request.getSession();
session.setAttribute("usrid", userid);
2.取得session

jsp 里面可以,但 javascript 不提供访问 session 的功能。session 只能通过动态程序操作,可以使用 ajax 给 javascript 返回值。

session.getAttribute("username");

java 里面可以 (HttpServletRequest request 作为方法的输入参数)

HttpSession session = request.getSession(); 
session.getAttribute("usrname");
一个使用session进行超时访问控制的实例

(1) LoginServlet.java 在登录时,设置 session 属性

public void doPost(HttpServletRequest request,HttpServletResponse response)  throws IOException, ServletException {  

        String userid = request.getParameter("username");
        String pwd = request.getParameter("password");

        JSONObject json = new JSONObject();  

        AdminDAO adminDAO = new AdminDAO();
        List<Admin> userList = adminDAO.findByProperty("usrid", userid);

        if(userList.get(0).getPassword().equals(pwd)){
             json.put("success", true);
             HttpSession session = request.getSession();
             session.setAttribute("usrid", userid);
        } else {
             json.put("success", false);
             json.put("meg", "sorry");
        }          

        PrintWriter pw = response.getWriter();   
        pw.print(json.toString());  
        pw.close();  
    }  

(2)HomePage.java 在跳转到相关页面时,获取并判断 session

public void doPost(HttpServletRequest request, HttpServ letResponse response) throws ServletException, IOException {

        JSONObject json = new JSONObject();  

        HttpSession session = request.getSession(); 
        if(session==null||session.getAttribute("usrid")==null)
        {
             json.put("success", false);
             json.put("meg", "Time out,please login again!");
        }
        else
        {
           ...
            json.put("jsonArray", array);     
        }    


        PrintWriter pw = response.getWriter();   
        pw.print(json.toString());  
        pw.close();
    }

(3) homePage.html 页面根据(2)的返回值判断是否执行跳转操作

$(document).ready(function(){
            $.ajax({
                url: "HomePageServlet",
                type: "post",
                dataType: "json",
                success: function(data) {        
                if (data["success"]) {
                      ...
                } 
                else
                {
                    alert(data["meg"]);
                    window.location.href="login.html";
                }                            
            }

        });
    });
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值