页面跳转后提示信息

    我们在开发web应用的时候,经常会遇到这种问题:当你登录成功或失败后,你希望给用户提示一些信息,来提高用户体验。
    其中信息提示的效果还算好做,使用一些其他的插件(如toastr)就可以做的很优美。但其中的逻辑处理,后端控制可能需要仔细琢磨,今天我在写一个登陆逻辑时碰到了这种逻辑问题,查阅了许多优秀的博客,最终还是大致解决了问题。
期望的效果:
1.登陆失败,页面仍然停留在登录页,且提示登陆失败信息。(虽然是停留在原页面,但实际上是页面刷新后的效果,因为这样就不用处理一些表单验证后重新进行失效的情况)
2.登陆成功,页面重定向到项目主页,且提示登陆成功。
具体实现:
1.登录失败的情况不难,后端直接返回当前页面即可,不过返回的页面需要增加一些提示性信息,方便页面返回后在前端通过js把提示信息显示出来。
    我采用的是jsp页面,所以在controller中将错误信息放入request域中,然后在jsp页面中将request域中的信息放入一个隐藏的元素内。到达前端后,js判断该元素内是否有提示信息,如果有则调用toastr插件将信息提示出来,没有则不做反应。
controller核心代码:

public String login(HttpServletRequest request, RedirectAttributes redirectAttributes) {
	.....一堆验证
	.....验证成功后怎么怎么地
	//验证失败后
	request.setAttribute("message", "登陆失败");
	return "login";
}

jsp页面核心代码:

<body>
	<%--设置消息隐藏,用于存放消息 ,value为空时表示没有提示消息,否则表示有。这个需要前端通过js显示消息提示--%>
	<c:if test="${empty message }">
		<input type="text" id="message" class="sr-only" value="">	
	</c:if>
	<c:if test="${!empty message }">
		<input type="text" id="message" class="sr-only" value="${message }">	
	</c:if>
</body>
<script> //这是jquery的调用方法,在页面加载完后会执行该初始方法 $(function(){ <%--判断是否有消息,有就提示出来 , toastr是一个不错的消息提示插件,具体用法问度娘吧--%> var msg = $("#message").val(); if(msg.length != 0){ toastr["info"](msg); $("#message").val(""); <%--提示完后清空消息--%> } }); </script>

2.登录成功,这时需要将页面跳转到主页,然后显示登录成功信息给用户。上述方法已经行不通了,因为redirect是两个请求,不是一个请求,所以即使你将提示信息放入request域,主页面的那个请求域也无法收到。所以这时我们需要想一个能将提示信息传入重定向页面的方法,我用的是RedirectAttributes类的addFlashAttribute方法,他可以将数据传入重定向的页面,并且比较安全,具体的用法可以参考<kbd>使用RedirectAttributes将数据传入重定向的页面</kbd>。
controller核心代码:

public String login(HttpServletRequest request, RedirectAttributes redirectAttributes) {
	.....一堆验证
	//验证成功后
	redirectAttributes.addFlashAttribute("message", "登陆成功");
	return "redirect:main";
	//验证失败后
	....
}

jsp页面代码和上面一毛一样,同样可以在jsp页面中用jstl标签${message }将提示信息取出来。

至此,基本功能大致是完成了,但是后来发现一个问题:在重定向到主页后,点击后退在前进,“登录成功”的提示信息还是会显示出来。

另外,如果路过的兄弟姐妹们有更好的处理这种问题的方法,希望可以分享一下,大家互相学习。

全部评论

相关推荐

2025-11-19 18:44
已编辑
成都理工大学 Java
程序员花海:我面试过100+校招生,大厂后端面试不看ACM,竞赛经历含金量低于你有几份大厂实习 这个简历整体来看不错 可以海投
如何写一份好简历
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2025-12-17 16:48
今天九点半到公司,我跟往常一样先扫了眼电脑,屁活儿没有。寻思着没事干,就去蹲了个厕所,回来摸出手机刷了会儿。结果老板刚好路过,拍了我一下说上班别玩手机,我吓得赶紧揣兜里。也就过了四十分钟吧,我的直属领导把我叫到小隔间,上来就给我一句:“你玩手机这事儿把老板惹毛了,说白了,你可以重新找工作了,等下&nbsp;HR&nbsp;会来跟你谈。”&nbsp;我当时脑子直接宕机,一句话都没憋出来。后面&nbsp;HR&nbsp;找我谈话,直属领导也在旁边。HR&nbsp;说我这毛病不是一次两次了,属于屡教不改,不光上班玩手机,还用公司电脑看论文、弄学校的事儿。我当时人都傻了,上班摸鱼是不对,可我都是闲得发慌的时候才摸啊!而且玩手机这事儿,从来没人跟我说过后果这么严重,更没人告诉我在公司学个习也算犯错!连一次口头提醒都没有,哪儿来的屡教不改啊?更让我膈应的是,昨天部门刚开了会,说四个实习生里留一个转正,让大家好好表现。结果今天我就因为玩手机被开了。但搞笑的是,开会前直属领导就把我叫去小会议室,明明白白告诉我:“转正这事儿你就别想了,你的学历达不到我们部门要求,当初招你进来也没打算给你这个机会。”合着我没入贵厂的眼是吧?可我都已经被排除在转正名单外了,摸个鱼至于直接把我开了吗?真的太离谱了!
rush$0522:转正名单没进,大概率本来就没打算留你
摸鱼被leader发现了...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务