⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loginaction.java

📁 该源码是使用ajax技术实现的一个聊天室功能。如果想对程序进行修改
💻 JAVA
字号:
/*
 * Copyright 2005 Frank W. Zammetti
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


package org.apache.struts.apps.ajaxchat.action;


import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.apps.ajaxchat.dao.AjaxChatDAO;
import org.apache.struts.apps.ajaxchat.dto.UserDTO;
import org.apache.struts.apps.ajaxchat.filter.SessionCheckerFilter;


/**
 * This is a Struts Action that is called when the user clicks the Login button
 * on the welcome screen.
 *
 * @author <a href="mailto:frank.zammetti@pfpc.com">Frank W. Zammetti</a>.
 */
public class LoginAction extends Action {


  /**
   * Log instance.
   */
  private static Log log = LogFactory.getLog(LoginAction.class);


  /**
   * Execute.
   *
   * @param  mapping   ActionMapping.
   * @param  inForm    ActionForm.
   * @param  request   HttpServletRequest.
   * @param  response  HttpServletResponse.
   * @return           ActionForward.
   * @throws Exception If anything goes wrong.
   */
  public ActionForward execute(ActionMapping mapping, ActionForm inForm,
    HttpServletRequest request, HttpServletResponse response) throws Exception {

    log.debug("execute()...");

    HttpSession session = request.getSession();
    log.info("session = " + session);
    synchronized (session) {

      // Get the username the user entered.
      String username = (String)request.getParameter("username");
      log.info("username = " + username);

      ActionForward af = null;
      if (session != null &&
        session.getAttribute(SessionCheckerFilter.LOGGED_IN_FLAG) != null) {
        // User is already logged in, they probably hit refresh while in the
        // lobby, so go there now.
        log.info("User already logged in");
        // There is still a minor potential problem... if by chance the user
        // was logged in and the app was restarted and sessions were persisted,
        // the user object in session can be null.  So, we'll check for that,
        // and recreate the user if applicable.
        if (session.getAttribute("user") == null) {
          log.info("User object null in session, so recreating");
          UserDTO user = new UserDTO(username);
          user.setLastAJAXRequest(new Date());
          session.setAttribute("user", user);
        }
        af = mapping.findForward("gotoLobby");
      } else {
        if (username == null || username.equalsIgnoreCase("")) {
          // Username was not entered, so they can't come in.
          log.info("Username not entered");
          ActionMessages msgs = new ActionMessages();
          msgs.add(ActionMessages.GLOBAL_MESSAGE,
            new ActionMessage("messages.usernameBlank"));
          saveErrors(request, msgs);
          af = mapping.findForward("fail");
        } else {
          if (AjaxChatDAO.getInstance().isUsernameInUse(username)) {
            // The username is already in use, so they can't have it.
            log.info("Username already in use");
            ActionMessages msgs = new ActionMessages();
            msgs.add(ActionMessages.GLOBAL_MESSAGE,
              new ActionMessage("messages.usernameInUse"));
            saveErrors(request, msgs);
            af = mapping.findForward("fail");
          } else {
            // Everything is OK, so create a new UserDTO and put it in session.
            log.info("Username being logged in");
            UserDTO user = new UserDTO(username);
            user.setLastAJAXRequest(new Date());
            session.setAttribute("user", user);
            session.setAttribute("isLoggedIn", "yes");
            // Lastly, add this user to the list of logged on users.
            AjaxChatDAO.getInstance().logUserIn(user);
            af = mapping.findForward("gotoLobby");
          }
        }
      }

      log.info("LoginAction complete, forwarding to " + af);
      return af;

    }

  } // End execute().


} // End class.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -