怎么实现登录之后跳转到登录之前的页面?SpringMVC+Freemarker
项目中,想实现一个功能。
直接访问某个需要登录的url,比如/addArticle,可能会跳转到登录页面login.html。
登录成功之后,自动跳转到/addArticle这个登录前的页面,继续登录之前的操作。
思路很简单:
登录拦截器,获得backurl,
String backUrl=request.getRequestURI();
//返回到原来的页面,而不是系统配置的首页,更友好
response.sendRedirect(loginUrl + "?backurl=" + backUrl);
重定向登录页面:http://localhost:8080/login.html?backurl=/add
登录页面保存backurl,登录的时候,把backurl也发送到后端。
登录成功之后,再跳转到/add 这个页面。
--------------------------------
遇到一个比较麻烦的问题,怎么在Freemarker中login.ftl中获得backurl这个参数呢?
在jsp中可以使用,request.getParameter("backurl")
因此,我想在Freemarker中用${request.backurl} ,结果死活不出来。
最后找到了2种方法,传递backurl这个参数到后端:
方法1:
<input type="hidden" name="backurl" value="${RequestParameters.backurl}"/>
把参数值,放在隐藏域中,${RequestParameters.backurl}
Freemarker中获得request中的值,找了好久才找到。
http://blog.csdn.net/feiyu8607/article/details/6557159这篇文章总结得比较全面。
方法2:
<form action="/auth/dologin.json?${request.queryString}" method="post">
获得request中的queryString参数,自动加到登录请求url后面。
关键的几点:
a.当前${request}是org.springframework.web.servlet.support.RequestContext。
我想是因为SpringMVC与Freemarker结合的原因,不是JSP中的javax.servlet.HttpServletRequest(具体不确定)。
b. request.queryString,实际调用的是request.getQueryString方法。
request有哪些方法,可以参考 org.springframework.web.servlet.support.RequestContext的源码。
想看源码,体现出Maven的好处了,download source很方便。
------------------------------------------------------------------
妈个蛋啊,从创业开始,就遇到TMD的一大堆问题,仅仅是技术问题就一大堆。
从北京回到武汉工作,又遇到一大堆问题。
还好,绝大多数的问题,都被我解决了。
照目前遇到问题和解决问题的速度,再过2年,我可以秒杀应届毕业生了。
呼呼~
小喽啰们,不好意思哦,小雷要秒杀你们喽~
小雷FansUnion-博学的互联网技术工作者,提供付费的IT咨询服务
2014年12月10日
湖北-武汉-循礼门
怎么实现登录之后跳转到登录之前的页面?SpringMVC+Freemarker的更多相关文章
- Vue router拦截 如果用户并未登录直接跳转到登录界面(最简单的cookie演示)
router.beforeEach(function(to,from,next){ console.log('路由拦截') console.log(to.name) console.log(from. ...
- yii中登录后跳转回登录前请求的页面
当我们请求一个经过权限控制的请求不通过时,会跳转到一个地方请求权限,请求结束后需要跳转回之前的页面.比如我们请求一个需要登录的action,会被跳转到login页面,我们希望登录成功后跳转到我们之前希 ...
- Laravel 登录后跳转回登录前浏览的页面
一.经过 Auth 中间件检查后跳转至登录页面 也就是没有通过 auth 中间件的认证检查,被 auth 中间件拦截后跳转至登录页面.这种情况下,Laravel 默认会在用户登录成功后自动跳转回登录前 ...
- play for scala 实现SessionFilter 过滤未登录用户跳转到登录页面
一.编写SessionFilter.scala代码 package filters import javax.inject.{Inject, Singleton} import akka.stream ...
- rails登录后跳转到登录前的路径
# 重定向到存储的地址或默认地址 def redirect_back_or(default) redirect_to(session[:forwarding_url] || default) sess ...
- 登录之后跳转到登录之前的页面 之 Referer 的坑
简而言之:通过鼠标在页面上点击链接发送请求,请求header中会包含referer信息, 通过在浏览器地址栏书写并发送请求的,header中不会有referer信息. 为了完成登录动作成功后返回原页面 ...
- VUE实现登录然后跳转到原来的页面
可以在路由里面设置需要登录的界面,判断下没有登录就跳转到登录界面,登录了就不用登录,这里用的是一个存储的 router.beforeEach((to, from, next) => { if(t ...
- ASP.NET 网站超时跳转到登录界面
利用actionFilter过滤器实现,超时跳转到登录界面 /// <summary> /// 登录超时跳转至登录界面 /// </summary> public class ...
- 关于WordPress登录后跳转到指定页面
前面在写模版的时候,有朋友要求网站登录后要跳转的到指定的页面.这个从前还真没遇到过.于是就用万能的搜索(很少百度)找了下,方法基本上就是一个,代码如下: <?php // Fields f ...
随机推荐
- 非极大值抑制(non-maximum suppression)的理解与实现
非极大抑制(Non-Maximum Suppression) Non-Maximum Suppression for Object Detection in Python RCNN 和微软提出的 SP ...
- vsphere client 参数
转自:http://blog.163.com/sword_111/blog/static/66589416201422964544918/ C:\Program Files (x86)\VMware\ ...
- groupbox里面添加Form
/// <summary> /// 动态加载dll /// 反射 /// </summary> private void dynamicDll() { string dllNa ...
- 强大的xUtils工具类整理
xUtils简单介绍 xUtils 包括了非常多有用的android工具. xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,很多其它的事件注解支持且不受 ...
- iOS_03_关键字、标识符、注释
一.学习语法之前的提醒 1. C语言属于一门高级语言,其实,所有高级语言的基本语法组成部分都一样,只是表现形式不太一样. 2. 就好像亚洲人和非洲人,大家都有人类的结构:两只手.两只脚.一个头,只是他 ...
- 关于python中矩阵的实现和矩阵的转置
python中矩阵的实现是靠序列,,, 序列有很多形式, 其实矩阵是现实生活中的东西,把现实生活中的结构转换到程序中. 就需要有个实现的方法,而这种路径是多种多样的. 下面给出一个把矩阵转换成pyth ...
- ajax+客户端与服务器端的交互
一. AJAX 原生JS var xhr=new XMLHttpRequest(); xhr.open("GET","[请求地址]",false); xhr.o ...
- NSAttributeString创建各种文字效果
NSDictionary *attributes =@{ NSForegroundColorAttributeName: [UIColorredColor], NSFontAttributeName: ...
- Perl——正则表达式(四) 查找替换s///
转自http://blog.csdn.net/blog_abel/article/details/40589227 侵删 一. 介绍 使用 s/regex/replacement/modifiers ...
- Hypervisor scheduler
Techniques for configuring a hypervisor scheduler to make use of cache topology of processors and ph ...