项目中,想实现一个功能。

直接访问某个需要登录的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的更多相关文章

  1. Vue router拦截 如果用户并未登录直接跳转到登录界面(最简单的cookie演示)

    router.beforeEach(function(to,from,next){ console.log('路由拦截') console.log(to.name) console.log(from. ...

  2. yii中登录后跳转回登录前请求的页面

    当我们请求一个经过权限控制的请求不通过时,会跳转到一个地方请求权限,请求结束后需要跳转回之前的页面.比如我们请求一个需要登录的action,会被跳转到login页面,我们希望登录成功后跳转到我们之前希 ...

  3. Laravel 登录后跳转回登录前浏览的页面

    一.经过 Auth 中间件检查后跳转至登录页面 也就是没有通过 auth 中间件的认证检查,被 auth 中间件拦截后跳转至登录页面.这种情况下,Laravel 默认会在用户登录成功后自动跳转回登录前 ...

  4. play for scala 实现SessionFilter 过滤未登录用户跳转到登录页面

    一.编写SessionFilter.scala代码 package filters import javax.inject.{Inject, Singleton} import akka.stream ...

  5. rails登录后跳转到登录前的路径

    # 重定向到存储的地址或默认地址 def redirect_back_or(default) redirect_to(session[:forwarding_url] || default) sess ...

  6. 登录之后跳转到登录之前的页面 之 Referer 的坑

    简而言之:通过鼠标在页面上点击链接发送请求,请求header中会包含referer信息, 通过在浏览器地址栏书写并发送请求的,header中不会有referer信息. 为了完成登录动作成功后返回原页面 ...

  7. VUE实现登录然后跳转到原来的页面

    可以在路由里面设置需要登录的界面,判断下没有登录就跳转到登录界面,登录了就不用登录,这里用的是一个存储的 router.beforeEach((to, from, next) => { if(t ...

  8. ASP.NET 网站超时跳转到登录界面

    利用actionFilter过滤器实现,超时跳转到登录界面 /// <summary> /// 登录超时跳转至登录界面 /// </summary> public class ...

  9. 关于WordPress登录后跳转到指定页面

    前面在写模版的时候,有朋友要求网站登录后要跳转的到指定的页面.这个从前还真没遇到过.于是就用万能的搜索(很少百度)找了下,方法基本上就是一个,代码如下: <?php    // Fields f ...

随机推荐

  1. robot framework 使用三:浏览器兼容性自己主动化

    robot framework 測试浏览器兼容性 上图中黄色圈的地方默认什么都不写.是firefox浏览器,写上ie就是ie浏览器了 firefox最新版本号即可.ie须要设置: 1. IE选项设置的 ...

  2. javascript之Ajax起步

    XMLHttpRequest  readyState属性的值: UNSENT--0--已创建XMLHttpRequest对象. OPENED--1--已调用open方法: HEADERS_RECEIV ...

  3. AndroidStudio 内存泄漏分析 Memory Monitor

    ok.写一段内存泄漏的code private TextView txt; @Override protected void onCreate(Bundle savedInstanceState) { ...

  4. IOS系统不兼容position: fixed;属性的解决方案

    position: fixed;属性在IOS系统手机上会有很明显的抖动,解决方式: 只需要在中间部分外层div添加css样式position:fixed;top:50px; bottom:50px;o ...

  5. JavaScript原型及原型链

    代码一: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF- ...

  6. 【Codeforces Round #431 (Div. 2) C】From Y to Y

    [链接]点击打开链接 [题意] 让你构造一个大小最多为10W的字符multiset. 你进行n-1次操作; 每次操作,从set中取出两个字符串,一开始单个字符被认为是字符串. 然后把它们连接在一起. ...

  7. HDU 6217 BBP Formula (数学)

    题目链接: HDU 7217 题意: 题目给你可以计算 \(π\) 的公式: \(\pi = \sum_{k=0}^{\infty}[\frac{1}{16^k}(\frac{4}{8k+1})-(\ ...

  8. asp.net mvc 中的自定义验证(Custom Validation Attribute)

    前言

  9. windows下安装wabt

    windows下安装wabt 安装前准备cmake.mingw环境 安装cmake 安装mingw 步骤 # 1.克隆wabt源码 git clone https://github.com/WebAs ...

  10. python opencv3 —— 改变颜色空间(color space)

    OpenCV: Changing Colorspaces 1. 查看 opencv 支持的颜色空间转换 opencv 中色彩空间转换由一些定义的全局的宏给出,使用如下的代码,将它们调出: >&g ...