首页 > 编程笔记 > Java笔记 阅读:84

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

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

语法:

getAttribute(String 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
   %>
运行结果如下:

所有教程

优秀文章