1、单态登录
单态登录,或者称为单一登录,就是一个账号只能在一台机器上登录,如果在其他机器上登录了,则原来的登录自动失效。单态登录的目的是防止多态机器同时使用一个账号。
原理:监听session如果Session中有PersonInfo信息,则表示已经登录,页面将显示登录有的账号。如果Session中没有PersonInfo信息,则表示没有登录,页面将显示登录输入框。登录与销毁动作都在该JSP中完成。
1.1 加入标签库jar
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
2.2 搞一个简单的javaBean
package com.wht.demo.listener;
import java.io.Serializable;
import java.util.Date;
/**
* @author JDIT
*/
public class PersonInfo implements Serializable {
private String account;
private String ip;
private Date loginDate;
@Override
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof PersonInfo)) {
return false;
}
return this.account.equalsIgnoreCase(((PersonInfo) obj).getAccount());
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public Date getLoginDate() {
return loginDate;
}
public void setLoginDate(Date loginDate) {
this.loginDate = loginDate;
}
}
1.3 测试用jsp页面
msg等信息肯定来自监听
<%@ page import="com.wht.demo.listener.PersonInfo" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%
String action = request.getParameter("action");
String account = request.getParameter("account");
if ("login".equals(action) && account.trim().length() > 0) {
PersonInfo personInfo = new PersonInfo();
personInfo.setAccount(account.trim().toLowerCase());
personInfo.setIp(request.getRemoteAddr());
personInfo.setLoginDate(new Date());
session.setAttribute("personInfo", personInfo);
response.sendRedirect(response.encodeRedirectURL(request.getRequestURI()));
return;
} else if ("logout".equals(action)) {
session.removeAttribute("personInfo");
response.sendRedirect(response.encodeRedirectURL(request.getRequestURI()));
return;
}
%>
<html>
<head>
<title>单态登录测试</title>
</head>
<body>
<c:choose>
<c:when test="${personInfo !=null}">
<center>
<div>
<h3>
欢迎您