単一のユーザーがログインすると、同じアカウントで同時にログインできません.注:この文章に書かれたコードは使用できません.


注意:この文書に書かれているコードは使用できません.
まずログインするには、次のUserLoginFormコードを見てください.
public Actis validate(ActionMapping mapping,HttpServletRequest request) {
  Actis errors = new Actis() ;
  //  if             
  if (request.getSession().getAttribute("sessionUserName")!=null)
  {
   String sessionUserName = (String)request.getSession().getAttribute("sessionUserName");
   if (sessionUserName==userName||sessionUserName.equals(userName)) 
      {
    errors.add("error",new ActionMessage("userName.login")) ;
      }
  }
このユーザーがログインしていなければ、このifに入らず、正常に判断しますが、このユーザーがログインしている場合は、このifに入り、そのユーザーがログインしているかどうかを判断します.このユーザーがログインしていると判断すると、エラーメッセージがポップアップされ、このユーザーがログインしていると言います.
そして、普通の人はボタンをクリックするのではなく、ブラウザのフォークを直接クリックして閉じるのではないでしょうか.そうすれば、セッションが無効になるのを待っていないうちに上陸します.上陸できなくなったらどうしますか.わかりやすいです.下のjspコードを見てください.
フォークでセッションを破棄したいページに追加

PassWordColse()
{
  location.href = "BackOut.jsp";
}
BackOut.jspの機能はセッションを破棄することです
これでポイントフォーク破棄セッションを実現
次のステップは、ユーザーがどのくらい操作していないか、自動的にsessionを破棄し、後で書いて、休んで、休んでください.
へっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっ上の方のFormの判断については、もっと间违っていますが、へへ、2台の机械に登录すると、sessionIDが异なり、判断も空なので、他のパソコンに同じアカウントに登录しても登录できます.
今日私はまたこのようなコードを書きました.
package test;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionMapping;

public class sessionCheck 
{
 
 private static sessionCheck sessioncheck;
 private HttpServlet servlet;
 public sessionCheck(HttpServlet servlet) 
 {
  this.servlet = servlet;
 }
 public static sessionCheck getInstance(HttpServlet servlet) 
 {
  if (sessioncheck==null)
  {
   sessioncheck=new sessionCheck(servlet);
  }
  return sessioncheck;
 }
 public void setSessionCheck(String userName,HttpSession session) 
 {
  if (servlet.getServletContext().getAttribute(userName)!=null) 
  {
   if (session!=null&&session.getAttribute("sessionUserName")!=null  ) 
   {
    String sessionUserName = (String)session.getAttribute("sessionUserName");
    if (sessionUserName==userName||sessionUserName.equals(userName)) 
       {
     System.out.println(session.getAttribute("sessionUserName"));
     System.out.println(userName);
     session.setAttribute("sessionUserName",null);
     System.out.println(session);
     session.invalidate();
        System.out.println(session);
       }
   }
  } 
  else 
  {
   System.out.println("session  ");
  }
 }
}

やはり完全に間違いです!!
if(servlet.getServiceletContext().getAttribute(userName)!=null)ここでは、異なるパソコンに同じアカウントを登録すると必ずsessionIDが異なるので、この判断は永遠に成り立たないので、sessionIDでテキストボックスに入力された値と判断すると、極度に間違っていて、何度も間違っていましたが、2日間もやっていましたが、私は損をしたとは思いませんでした.このような試みでやってみましたので、私に経験を増加させて、同じくものを学んで、引き続き努力します
黒い髪http://heisetoufa.iteye.com