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

📄 userlogonaction.java

📁 基于struct结构的jsp
💻 JAVA
字号:
package com.ntsky.bbs.action;

import org.apache.struts.action.*;
import javax.servlet.http.*;
import org.apache.log4j.Logger ;

import com.ntsky.bbs.service.UserFactory;
import com.ntsky.bbs.service.User;
import com.ntsky.bbs.form.UserActionForm;
import com.ntsky.bbs.service.db.DBUser;
import org.apache.commons.beanutils.PropertyUtils;

/**
 * <p>Title: Ntsky OpenSource BBS</p>
 * <p>Description: 公告信息</p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: WWW.FM880.COM</p>
 * @author 姚君林
 * @version 1.0
 */

public class UserLogonAction
    extends Action {
    private final static Logger logger = Logger.getLogger(UserLogonAction.class);
    public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception{
        /**@todo: complete the business logic here, this is just a skeleton.*/
        logger.info("用户登陆......");
        HttpSession session = httpServletRequest.getSession();
        String action = httpServletRequest.getParameter("action");
        UserActionForm userActionForm = (UserActionForm) actionForm;
        if("logon".equals(action)){
            logger.info("用户从登陆页面登陆......");
            userActionForm.setIsCookie("0");
            return actionMapping.findForward("continue");
        }
        logger.info("action = " + action);
        UserFactory factory = UserFactory.getInstance();
        User user = null;
        /**
         * 检测到cookie的用户
         */
        if ("cookie".equals(action)) {
            //获取用户本地的cookie
            Cookie[] cookie = httpServletRequest.getCookies();
            if (cookie != null) {
                if (cookie.length > 0) {
                    for (int i = 0; i < cookie.length; i++) {
                        logger.info("设置的cookie名 : " + cookie[i].getName());
                        //获取cookieName为cookie的cookie
                        String cookieName = cookie[i].getName();
                        if (cookieName.equals("cookieId")) {
                            /*if("".equals(cookieName)){
                                session.removeAttribute("");
                            }*/
                            /**
                             * 由cookie的值取得整个用户实例
                             */
                            String usrId = cookie[i].getValue();
                            logger.info("cookie的值为 : " + usrId);
                            //先更新登陆次数
                            factory.upUserLoginInfo("usrId",usrId);
                            user = factory.userInfo(Integer.parseInt(usrId));
                            logger.info("usrName = " + user.getUsrName());
                            /**
                             * 设置session返回
                             */
                            session.setAttribute(Constant.USER_KEY, user);
                        }
                        else {
                            logger.info("没有该用户的cookie,跳转到filter页面");
                            return actionMapping.findForward("cookie");
                        }
                    }
                }
            }
            else {
                logger.info("没有cookie跳转到登陆页面");
                return actionMapping.findForward("cookie");
            }
            return actionMapping.findForward("cookie");
        }

        if ("quickLogon".equals(action)) {
            logger.info("没有cookie跳转到登陆页面");
            return actionMapping.findForward("quickLogon");
        }
        else {
            /**
             * 用户登陆
             */
            String isCookie = httpServletRequest.getParameter("isCookie");
            logger.info("该用户保存cookie吗 : " + isCookie);
            User userForm = new DBUser();
            PropertyUtils.copyProperties(userForm, userActionForm);
            logger.info("获得登陆的用户名 : " + userForm.getUsrName());

            user = factory.userLogon(userForm);
            if (user.getSuccess()) {
                //用户成功登陆
                session.setAttribute(Constant.USER_KEY, user);
                setCookie(httpServletResponse,user,isCookie);
            }
            else{
                logger.info("用户登陆错误...重新登陆。");
                //输出错误提示给用户
                ActionMessages messages = new ActionMessages();
                ActionMessage message = new ActionMessage(
                    "message.user.error.userError");
                messages.add(ActionMessages.GLOBAL_MESSAGE, message);
                saveMessages(httpServletRequest, messages);
                return actionMapping.findForward("logon");
            }
            logger.info("用户返回信息!");
            return actionMapping.findForward("success");
            //throw new java.lang.UnsupportedOperationException("Method perform() not yet implemented.");
        }
    }
    /**
     * cookie的设置
     */
    public void setCookie(HttpServletResponse httpServletResponse,User user,String isCookie){
        if("on".equals(isCookie)){
            /**
             * 设置cookie
             */
            Cookie cookie = new Cookie("cookieId",
                                       String.valueOf(user.getUsrId()));
            //设置cookie时间(一年)
            cookie.setMaxAge(365 * 24 * 60 * 60);
            logger.info("设置cookie成功");
            httpServletResponse.addCookie(cookie);
        }
        if("0".equals(isCookie)){
            return;
        }
        if("1".equals(isCookie)){
            Cookie cookie = new Cookie("cookieId",String.valueOf(user.getUsrId()));
            cookie.setMaxAge(7 * 24 * 60 * 60);
            httpServletResponse.addCookie(cookie);
        }
        if("2".equals(isCookie)){
            Cookie cookie = new Cookie("cookieId",String.valueOf(user.getUsrId()));
            cookie.setMaxAge(365 * 24 * 60 * 60);
            httpServletResponse.addCookie(cookie);
        }
    }
}

⌨️ 快捷键说明

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