错误理解了单点登录的概念老长时间,原因为只允许单用户登录系统就叫单点登录,度娘说我理解错了,这才真正明白嘛叫单点登录。这个例子是按照以前错误的理解来想的“单点登录” 现在想想应该叫 only—one-user-can-sign
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> <FORM action="Login.action" type="post"> <input type="text" name="username"/> <input type="submit" value="登录"> </FORM> </body> </html>
error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'error.jsp' starting page</title> <meta http-equiv="Refresh" content="2;url=/SINGLE_LOGIN/index.jsp"> </head> <body> 该用户<font color="red">${sessionScope.username }</font>已经登录,即将转入登陆页面请重新登录<%--<%request.getSession().invalidate();%>
--%><%-- <script type="text/javascript"> window.close() </script> --%> </body> </html>
Login.java
package com.test.action;
import java.util.Date;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class Login extends ActionSupport{
@Override public String execute() throws Exception { HttpServletRequest request=ServletActionContext.getRequest(); String username=request.getParameter("username"); String time=new Date()+""; System.out.println("当前登录用户名"+username+"#########"+time); HttpSession session=request.getSession(); System.out.println(session.getId()+"====what"); // System.out.println(session.isNew()); System.out.println(session.getCreationTime()+"创建时间");//1340611925538创建时间 if(username.equals(session.getAttribute("username"))){ return ERROR; }else { session.setAttribute("username",username); return SUCCESS; } }
}
struts.xml
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="struts_default" extends="struts-default"> <action name="Login" class="com.test.action.Login"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts>