JavaWeb登陆成功后跳转到上一个页面(2)


login函数

@Clear({LoginInterceptor.class})
    public void login() throws UnsupportedEncodingException {
        logger.info("进行会员登录操作...");

        // 获取用户名
        String name = getPara("username");
        // 获取密码
        String password = getPara("password");

        Members mem = Members.me.getMemByUsername(name);

        if (mem != null) {// 用户不存在
            // 密码不匹配
            if (!mem.getStr("password").equals(CipherUtils.generatePassword(password))) {
                ajaxDoneError("密码不正确!");
            } else {
                // 保存session
                setSessionAttr("username", mem);
                
                String forwardURL = getPara("forwardURL");
                
                if (forwardURL == null || forwardURL.equals("")) {
                    forwardURL = "/";
                } else {
                    forwardURL = URLDecoder.decode(forwardURL, "UTF-8");
                }

                ajaxDoneSuccess("登录成功!", forwardURL);
            }

        } else {
            ajaxDoneError("用户不存在!");
        }
    }


1. login函数中,将forwardurl取出来,作为**登录页**中的callback函数的参数值; 2. 具体ajaxDoneSuccess方法可以参照以下内容

public void ajaxDoneSuccess(String message, String forwardURL) {
        ajaxDone(200, message, forwardURL);
    }
protected void ajaxDone(int statusCode, String message, String forwardURL) {
    // 回调类型
        if (getAttr("callbackType") == null) {
            String callbackType = getPara("callbackType");
            if (callbackType != null && !callbackType.equals("")) {
                setAttr("callbackType", callbackType);

                if (callbackType.equals("forward") || callbackType.equals("closeCurrentThenForward")) {
                    String contextPath = getRequest().getContextPath();
                    
                    if (forwardURL.indexOf(contextPath) == -1) {
                        forwardURL = contextPath + forwardURL;
                    }
                    
                    setAttr("forwardURL", forwardURL);
                }
            }
        }

        renderJson();
}   


如果有callbacktype参数,则将forwardurl作为json数据传递到前端的ajaxdone方法中。

ajaxDone方法

function ajaxDone(json) {
    YUNM.ajaxDone(json);
    if (json[YUNM.keys.statusCode] == YUNM.statusCode.ok || json[YUNM.keys.statusCode] == YUNM.statusCode.info) {
if ("forward" == json.callbackType) {
            if (json.forwardURL) {
                location.href = json.forwardURL;
            }
}

上一篇:NAND闪存攻击可毁掉固态硬盘数据


下一篇:有利于企业的闪存数据存储的新用例