java session属性要怎么设置?该如何获取?

TheDisguiser 2020-07-01 16:39:18 java常见问答 3536

我们都知道session是非常好用的,那么在实际项目中小伙伴们是否知道要证明设置session的属性呢?在java里我们又该如何获取它的属性与值呢?下面就通过示例来了解看看吧。

示例:

login页面

<%@page contentType="text/html;charset=gb2312"%>
<form action="login.jsp" method="post"> //表单提交激活的页面【此处设为本页】
       用户名:<input type="text" name="uname"><br>
       密码:<input type="text" name="upass"><br>
       <input type="submit" value="登陆">
</form> //设计表单。
<
%
// 判断是否有请求内容,因为第一次运行本页面表单没有任何参数被填写和提交。
// 在自提交的页面中,必须对程序第一次运行做出处理
if (request.getParameter("uname") != null && request.getParameter("upass") != null) //如果接收到的参数不为空【及表单有参数提交】,则执行一下内容。
{
    // 第一次的时候,并不能取得请求的参数
    String name = request.getParameter("uname");
    String password = request.getParameter("upass");
    // System.out.println(name) ;
    // System.out.println(password) ;
    if ("mldn".equals(name) && "lxh".equals(password))
    {
        // 表示登陆成功
        // 通过flag属性判断用户是否已经登陆
        session.setAttribute("flag", "ok"); //设置了一个session标志"flag"并赋值"ok",它的作用是当下一次打开登录后的页面的时候页面会利用这个标志检验是否是用户为登陆状态。
        // 跳转到welcome.jsp
        response.sendRedirect("welcome.jsp");
    }
    else
    {
        // 登陆失败,打印错误
        %
        >
        <h3>登陆失败!!!</h3> <
        %
    }
} %
>

hello页面

<%@page contentType="text/html;charset=gb2312"%>
<%--
       用户必须先登陆之后,才能访问此页面
       如果用户没有登陆,则提示用户回去重新登陆
--%>
<%
       if(session.getAttribute("flag")!=null) //通过session的标志"flag"的值是否为"ok"来判断是否是用户是登陆状态。
       {
              // session被设置过,正常登陆过
%>
<h1>欢迎光临本页!!!</h1> <
h2 > <a href="logout.jsp">注销</a> < /h2> <
    %
}
else
{
    // 两秒后跳转到login.jsp页面之中
    response.setHeader("refresh", "2;URL=login.jsp"); %
    >
    <h1>您还未登陆,请先登陆!!!</h1> <
    %
} %
>

总结:

session.setAttribute("属性名","属性值")设置属性

session.getAttribute("属性名")取得设置的属性

就是通过它们对属性的设置和获取再和值进行对比就可以判断用户是否为登陆状态。

使用完之后还有remove Attribute("属性名")方法来删除该属性。

如果想注销session.invalidate() ,就需要手工操作。

目的是让用户的session失效,同时该用户session保留的所有操作也失效。

Session如果长时间不使用也会自动失效。

代码如下:

<%@page contentType="text/html;charset=gb2312"%>
<%
       // 使session失效
       session.invalidate() ;
%>
<a href="welcome.jsp">welcome.jsp</a> //页面返回。

Session与cookie之间区别:Session保存在服务器上,cookie保存在客户机上,前者比后者安全,但会占用更多资源,所以开发的时候尽量不要往session中保存信息。Session使用了cookie的机制,如果cookie被禁用,则session同样被禁用。

Java中获取session所有值与属性:

HttpSession session = request.getSession();
Enumeration < ? > enumeration = session.getAttributeNames();
// 遍历enumeration中的
while (enumeration.hasMoreElements())
{
    // 获取session键值
    String name = enumeration.nextElement()
        .toString();
    // 根据键值取session中的值
    Object value = session.getAttribute(name);
    // 打印结果
    System.out.println("<B>" + name + "</B>=" + value + "<br>/n");
}

以上就是本文的所有内容了,如果小伙伴们还有疑问,并且想要了解更多编程常见问题及答案,就请一直关注本网站吧。

推荐阅读:

session用法是什么?原理是什么?

session和cookie的区别是什么?有哪些区别?

sessionstorage和localstorage的区别是什么?有什么区别?