发新话题

老紫竹JavaEE培训教程(4) - 记录登录的Session信息并完善首页

1 index.jsp
<%@ page language="java"   contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<%
  /** 
   *  老紫竹JavaEE培训教程(java2000.net)
   */
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"  >
<title>Insert title here</title>
</head>
<body>
<%
  // 判断是否登录,如果没有则转向到login.jsp
  // 读取的标志必须和login里面设置的成功标志相同
  String loginSign = (String) session.getAttribute("LOGIN_SIGN");
  if ("1".equals(loginSign)) {
    // 显示登录成功的信息和退出登录的连接
    String loginUsername = (String)session.getAttribute("LOGIN_USERNAME");
    out.print("欢迎回来:"+loginUsername+"<br><br><a href='logout.jsp'>退出登录</a>");
  } else {
    // 没有登录,则转到登录界面
    out.print("请先<a href='login.jsp'>登录</a>");
  }
%>
</body>
</html>



2 login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<%
  /** 
   *  老紫竹JavaEE培训教程(java2000.net)
   */
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"  content="text/html; charset=UTF-8" >
<title>登录</title>
</head>
<body>
登录
<form method="post" name="LOGIN_FORM" id="LOGIN_FORM" action="logincheck.jsp"><br />
用户名:<input type="text" id="username" name="username" size="20" maxlength="20" /><br />
密码:<input type="password" id="password" name="password" size="20" maxlength="20" /><br />
<input type="submit" value="登录" /></form>
</body>
</html>


3 logincheck.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<%
  /** 
   *  老紫竹JavaEE培训教程(java2000.net)
   */
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"  content="text/html; charset=UTF-8" >
<title>登录检测</title>
</head>
<body>
<a href="login.jsp">返回登录</a>
<%
  // 设置请求数据的编码方式
  // 应尽可能放在其它代码的前面
  request.setCharacterEncoding("UTF-8");

  // 判断登录方式必须是POST
  if ("POST".equals(request.getMethod())) {
    // 从request对象里读取参数
    String username = request.getParameter("username");
    String password = request.getParameter("password");

    // 判断用户名和密码必须填写
    if (username == null || username.trim().length() == 0) {
      out.println("请填写用户名");
    } else if (password == null || password.trim().length() == 0) {
      out.println("请填写密码");
    } else {
      // 去掉前后的空格等
      username = username.trim();
      password = password.trim();

      // 判断用户名和密码
      if ("admin".equals(username) && "1234".equals(password)) {
        out.println("登录成功");
        // 将登陆成功标志记录到Session中
        session.setAttribute("LOGIN_SIGN","1");
        
        // 另外,也可以保存登录人的用户名来判断是否登录
        // 对应的判断LOGIN_USERNAME是否为null来判断是否登录
        // 个人更推荐这个方式
        session.setAttribute("LOGIN_USERNAME","admin");
        // 返回主页的链接
        out.println("<a href='index.jsp'>返回主页</a>");
      } else {
        out.println("用户名或密码失败!");
      }
    }
  } else {
    out.print("请使用POST提交方式");
  }
%>
</body>
</html>


4 logout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<%
  /** 
   *  老紫竹JavaEE培训教程(java2000.net)
   */
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"  content="text/html; charset=UTF-8" >
<title>Insert title here</title>
</head>
<body>
<%
  // 可以单独清除session对应登录数据
  // 请注意,此操作不能在 invalidate之后运行,否则出现
  // Session already invalidated 的异常信息
  session.removeAttribute("LOGIN_SIGN");
  session.removeAttribute("LOGIN_USERNAME");

  // 也可以简单的将session全部失效
  // 从安全考虑,推荐这个做法
  session.invalidate();
%>
退出登录成功,
<a href='index.jsp'>返回主页</a>
</body>
</html>



5 总结

所有要说的,都在代码里面了。 如何确认用户登录,有些朋友喜欢放到Filter里面进行,也是一个不错的注意,值得推荐。我这里只是把原理说一下,具体的大家可以自由发挥


6 测试
1 大家可以测试一下session.invalidate()之后再操作session,看看错误信息
2 可以修改一下那个登录后的连接,改成自动跳转到主页或者再次登录页面
快乐渡过每一天,减肥坚持每一天



编辑 回复 快速回复 TOP
老紫竹JavaEE培训教程(5)
什么时候出来啊,等待中啊呵呵
编辑 回复 快速回复 TOP
发新话题