• JSP Session.getAttribute()方法:根据属性名获取属性值

    该方法用于获取与指定名字相联系的属性值。

    语法:

    getAttribute(String name)

    参数说明:

    • name:要获取的属性名称。

    返回值:name 指定的属性的值。

    示例

    获取保存在 session 对象中名称为 user 的属性信息,关键代码如下:

    <%
      session.getAttribute("user");
    %>

    典型应用

    1. session 在网络术语中被称为会话。由于 HTTP 协议是一种无状态协议,也就是当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接便结束,而服务器并不保存相关的信息。为了弥补这一缺点,HTTP 协议提供了 session。
    2. 通过 session,当用户需要在应用程序的 Web 页间进行跳转时,可以保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。但是,如果在一个会话中,客户端长时间不向服务器发出请求,session 对象就会自动消失。这个时间取决于服务器,例如,Tomcat 服务器默认为 30 分钟。不过这个时间可以通过编写程序进行修改。使用 session 对象一个最常用的功能就是记录用户的状态。
    3. 下面将通过一个具体的实例介绍应用 session 对象实现用户登录。运行本示例,首先进入的是用户登录页面,输入用户名(mr)和密码(mrsoft)后,单击“登录”按钮,将显示系统主页,如果输入用户名"mr",密码不输入"mrsoft",则重新返回到用户登录页面。

    创建 index.jsp 文件,在该文件中,添加用于收集用户登录信息的表单及表单元素,关键代码如下:

    <form name="form1" method="post" action="">
      用户名:<input name="name" type="text" id="name" style="width:120px"><br>
      密&nbsp;&nbsp;码:<input name="pwd" type="password" id="pwd" style="width:120px"><br>
      <br>
      <input type=" submit" name="Submit" value="提交">
    </form>

    编写 deal.jsp 文件,在该文件中,模拟用户登录(这里将用户信息保存到一个二维数组中),如果用户登录成功,将用户名保存到 session 范围内的变量中,并将页面重定向到 main.jsp 页面,否则将页面重定向到 index.jsp 页面,重新登录。deal.jsp 文件的具体代码如下:

    <%@page language="java" contentType="text/html;charset=GB18030" pageEncoding="GB18030"%>
      <%@page import = "java.util.*"%>
      <%
        String[][] userList = {{"mr","mrsoft"},{"wgh","111"},{"sk","111"}};  //定义一个保存用户列表的二维数组
        boolean flag = false;  //登录状态
        request.setCharacterEncoding("GB18030");  //设置编码
        String username = request.getParameter("username");  //获取用户名
        String pwd = request.getParameter("pwd");  //获取密码
        for(int i=0;i<userList.length;i++){  //遍历二维数组
          if(userList[i][0].equals(username)){  //判断用户名
            if(userList[i][1].equals(pwd)){  //判断密码
              flag = true;  //表示登录成功
              break;  //跳出for循环
            }
          }
        }
          if(flag){  //如果值为true,表示登录成功
            session.setAttribute("username",username);  //保存用户名到session范围的变量
            response.sendRedirect("main.jsp");  //跳转到主页
          }else{
            response.sendRedirect("index.jsp");  //跳转到用户登录页面
          }
      %>

    编写 main.jsp 文件,在该文件中,首先获取并显示保存到 session 范围内的变量,然后添加一个“[退出]”超链接。main.jsp 文件的具体代码如下:

    <%@page language="java" contentType="text/html;charset=GB18030"pageEncoding="GB18030"%>
      <%
         String username = (String)session.getAttribute("username");  //获取保存在session范围内的用户名
       %>
        <html>
          <head>
            <meta http-equiv="Content-Type" content="text/html;charset=GB18030">
            <title>系统主页</title>
          </head>
          <body>
            您好![<%=username%>]欢迎您访问!<br>
            <a href="exit.jsp">[退出]</a>
          </body>
        </html>
    编写 exit.jsp 文件,在该文件中销毁 session,并重定向页面到 index.jsp 页面。exit.jsp 文件的具体代码如下:
    <%@page language="java" contentType="text/html;charset=GB18030" pageEncoding="GB18030"%>
      <%
         session.invalidate();  //销毁session
         response.sendRedirect("index.jsp");  //重定向页面到index.jsp
       %>

    运行结果如下:

更多...

加载中...