200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java中登陆界面怎么连接到下一个界面啊_JavaWeb登陆成功后跳转到上一个页面

java中登陆界面怎么连接到下一个界面啊_JavaWeb登陆成功后跳转到上一个页面

时间:2020-09-26 09:51:40

相关推荐

java中登陆界面怎么连接到下一个界面啊_JavaWeb登陆成功后跳转到上一个页面

JavaWeb登陆成功后跳转到上一个页面,这个标题注定要词不达意,你可能会遇到这样的情形,当点击页面的某个请求时,由于用户未登录,需要跳转到登录页,用户登录成功后,再跳转到上一个页面;还有一种情况,多个页面都有登录按钮,登录成功后需要刷新对应的登录信息。

图文并茂

1.场景1

2.场景2

代码实现

场景1的代码这次重点说明以下,场景2的代码可以参照本系列其他文章再谈ajax局部刷新

全局拦截器

public class LoginInterceptor implements Interceptor {

private static Logger logger = Logger.getLogger(LoginInterceptor.class);

@Override

public void intercept(Invocation inv) {

BaseController controller = (BaseController) inv.getController();

String lastRequestURL = controller.getRequest().getRequestURL().toString();

logger.info("请求地址:" + lastRequestURL);

Members loginMem = controller.getSessionAttr("username");

// 用户如果没有登录,那么就跳转到登录页面

if (loginMem == null || loginMem.equals("")) {

try {

controller.redirect("/mem/initLogin?forwardURL=" + URLEncoder.encode(lastRequestURL, "UTF-8"));

} catch (UnsupportedEncodingException e) {

logger.error(e.getMessage());

}

} else {

inv.invoke();

}

}

}

注意:

1. 全局拦截器可参照jfinal官方文档添加到config类中。

2. 如果用户没有登录,则跳转到登录页,并且将当前的url路径作为参数传递给form表单,至于form表单怎么获取,请看下个小节。

登录页

οnsubmit="return validateCallback(this, ajaxDone)">

注意:

1. action中增加callbackType=forward;

2. onsubmit中callback函数ajaxDone;

3. validateCallback函数中将上个小节中传递的参数进行添加;

4. 其余的可参照再谈ajax局部刷新

function validateCallback(form, callback, confirmMsg) {

var $form = $(form);

if (!$form.valid()) {

return false;

}

var _submitFn = function() {

$.ajax({

type : form.method || 'POST',

url : addForwardForUrl($form.attr("action")),

data : $form.serializeArray(),

dataType : "json",

cache : false,

success : callback || YUNM.ajaxDone,

error : YUNM.ajaxError

});

}

if (confirmMsg) {

$.showConfirm(confirmMsg, {

okCall : _submitFn

});

} else {

_submitFn();

}

return false;

}

function addForwardForUrl(url) {

var locationURL = location.href;

// URL中附带了跳转路径

var forwardIndex = locationURL.indexOf("forwardURL");

if (forwardIndex != -1) {

var forwardURL = locationURL.substring(forwardIndex);

// 说明已经有了跳转路径

if (url.indexOf("?") != -1) {

url += "&" + forwardURL;

} else {

url += "?" + forwardURL;

}

}

return url;

}

注意:

1. 如此之前拦截器中提供的url就可以作为参数传递给form的提交请求中。

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;

}

}

跳转到上一个页面。

笑对现实的无奈,不能后退的时候,不再傍徨的时候,永远向前路一直都在──陈奕迅《路一直都在》

本文出自:【沉默王二的博客】

当点击页面的某个请求时,由于用户未登录,需要跳转到登录页,用户登录成功后,再跳转到上一个页面 ↩

还有一种情况,多个页面都有登录按钮,登录成功后需要返回到上一个界面。 ↩

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。