session对象学习笔记

session对象学习笔记

session称为会话,会话指一个终端用户与交互系统进行通讯的过程,比如从输入账户密码进入操作系统到退出操作系统就是一个会话过程。例如在浏览器登录淘宝后,在该浏览器打开多个淘宝页面都不需要再登录,因为都属于一次会话中。

方法名描述
setAttribute(key,val)设置键值对
getAttribute(key)通过键获取值
getId()获取session的id
setMaxInactiveInterval(time)设置session的过期时间[单位:秒](tomcat中默认配置的过期时间是30分钟)
removeAttribute(key)从session中移除指定的key

session对象使用案例:实现页面访问权限控制

首先是一个登陆界面:

<!-- login.jsp -->
<html>
    <head>
        <title>登录</title>
    </head>
    <body>
        <!--   表单请求提交到控制层"control.jsp"  -->
        <form action="control.jsp" method="post">
            <input type="text" name="uname" placeholder="请输入用户名">
            <input type="password" name="pwd" placeholder="请输入密码">
            <input type="submit" value="登录">
        </form>
    </body>
</html>

控制层jsp代码:

<!-- control.jsp -->
<%
    //设置请求编码格式
	request.setCharacterEncoding("utf-8");
    //获取请求中表单的参数
    String uname = request.getParameter("uname");
    String pwd = request.getParameter("pwd");
    //对用户名及密码进行验证(操作数据库)
    if("admin".equals(uname) && "admin".equals(pwd)){
        //将用户的用户名存储到本次会话中,作为登录成功的标识
        session.setAttribute("uname",uname);
        //登录成功用response跳转到个人中心页面
        response.sendRedirect("person.jsp");
    }else{
        //通过session存储一个错误信息
        session.setAttribute("errMsg","用户名或密码错误");
        //回到登录页面,并提示错误信息
        response.sendRedirect("login.jsp");
    }
%>

登录成功时进入个人中心:

<!-- person.jsp -->
<html>
    <head>
        <title>个人中心</title>
    </head>
    <body>

        <%
            //通过获取会话中session对象的用户名参数,判断验证用户是否已经登录
            Object object = session.getAttribute("uname");
            if(object == null){//如果获取不到"uname"参数,则用户未登录,跳转到登录页面
                response.sendRedirect("login.jsp");
                return;
            }
        %>
        <!--  登录成功则加载以下页面   -->
        <h4>个人中心</h4>
        <p>欢迎,<%=object%></p>
    </body>
</html>

登陆失败时返回到登陆页面,并提示登陆失败的信息,因此要对登陆页面做些改动:

<!-- login.jsp -->
<html>
    <head>
        <title>登录</title>
    </head>
    <body>
        <%
            //声明一个显示错误信息的变量,初始化为空字符串
            String errMsg = "";
            //提取错误信息,返回值是Object类
            Object object = session.getAttribute("errMsg");
            if(object != null){  //判断如果是从登录失败后跳转过来的
                errMsg = (String)object;	//就把错误信息转为字符串类型后赋给errMsg变量
                //移除session中的key,防止在本次会话进行时,即使已经成功登录了,再次打开登录页面还是会显示错误信息。(用户想要切换账户时)
                session.removeAttribute("errMsg");
            }
        %>
        <!--   在页面中显示错误信息,没有错误信息则是空字符串 -->
        <p style="color:red;"><%=errMsg%></p>

        <form action="control.jsp" method="post">
            <input type="text" name="uname" placeholder="请输入用户名">
            <input type="password" name="pwd" placeholder="请输入密码">
            <input type="submit" value="登录">
        </form>
    </body>
</html>

效果:

首先尝试未在登录页面进行登录,就进入个人中心
在这里插入图片描述

回车后页面直接跳转到了登录页面,由于是 response重定向跳转,因此地址栏也会发生改变
在这里插入图片描述

输入用户名admin和密码admin,点击登录,进入个人中心
在这里插入图片描述

[

这时候在浏览器无论开几个页面进入个人中心,都不用再进行登录了。

再创建一个购物车页面,和个人中心一样实行页面访问权限控制,代码:

<!-- cart.jsp -->
<html>
    <head>
        <title>Title</title>
    </head>
    <body>

        <%
            //首先需要先验证用户是否已经登录
            Object object = session.getAttribute("uname");
            if(object == null){//用户未登录,跳转到登录页面
                response.sendRedirect("login.jsp");
                return;
            }
        %>

        <h4>我的购物车</h4>
    </body>
</html>

和个人中心一样,只要在浏览器中打开登录页面并进行登陆过,就可以直接访问该页面了
在这里插入图片描述

session对象的会话效果一直执行到浏览器关闭,或者设置session的失效事件。

设置session失效
方法:session.setMaxInactiveInterval()。
代码演示:

<!-- control.jsp -->
<%
    String uname = request.getParameter("uname");
    String pwd = request.getParameter("pwd");
    if("admin".equals(uname) && "admin".equals(pwd)){
        session.setAttribute("uname",uname);
        
        //在设置了session对象后,设置session的失效事件(单位:秒),参数5代表5秒后session失效
        session.setMaxInactiveInterval(5);
        
        response.sendRedirect("person.jsp");
    }else{
        session.setAttribute("errMsg","用户名或密码错误");
        response.sendRedirect("login.jsp");
    }
%>

以上代码设置了session对象在5秒后失效 。登录5秒后,再进入个人中心或购物车页面,将会因为获取不到session参数而直接跳转到登录页面。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值