《JavaWeb登陆成功后跳转到上一个页面.docx》由会员分享,可在线阅读,更多相关《JavaWeb登陆成功后跳转到上一个页面.docx(7页珍藏版)》请在金锄头文库上搜索。
1、JavaWeb登陆成功后跳转到上一个页面JavaWeb登陆成功后跳转到上一个页面,这个标题注定要词不达意,你可能会遇到这样的情形,当点击页面的某个请求时,由于用户未登录,需要跳转到登录页,用户登录成功后,再跳转到上一个页面;还有一种情况,多个页面都有登录按钮,登录成功后需要刷新对应的登录信息。图文并茂1.场景12.场景2代码实现场景1的代码这次重点说明以下,场景2的代码可以参照本系列其他文章再谈ajax局部刷新全局拦截器public class LoginInterceptor implements Interceptor private static Logger logger = Logg
2、er.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.getSes
3、sionAttr(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类中。
4、2. 如果用户没有登录,则跳转到登录页,并且将当前的url路径作为参数传递给form表单,至于form表单怎么获取,请看下个小节。登录页注意: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;
5、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 _
6、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
7、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.m
8、e.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 =
9、/; 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, forwardUR
10、L); 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.
11、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 (jsonYUNM.keys.statusCode = YUNM.stat