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

直接访问某个需要登录的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. HDU 3232 &amp;&amp; UVA 12230 (简单期望)

    Crossing Rivers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. Android时间戳与字符串相互转换

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public cl ...

  3. 支持10W高并发请求的IIS Web服务器常用设置

    支持高并发的IIS Web服务器常用设置   适用的IIS版本:IIS 7.0, IIS 7.5, IIS 8.0 适用的Windows版本:Windows Server 2008, Windows ...

  4. 1.11 Python基础知识 - 序列:元组

    元组(tuple)是一组有序系列,元组和列表是否相似,但是元组是不可变的对象,不能修改.添加或删除元组中的元素,但可以访问元组中的元素 元组的定义: 元组采用圆括号中用逗号分隔的元素 元组的基本操作和 ...

  5. Fragment Summary 2/2

    出处:http://blog.csdn.net/lmj623565791/article/details/37992017 上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和各种API ...

  6. 最新GitHub新手使用教程(Windows Git从安装到使用)——详细图解

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 一.叙述 1.Git简介 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本 ...

  7. 【Codeforces Round #443 (Div. 2) A】Borya's Diagnosis

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 模拟 [代码] #include <bits/stdc++.h> using namespace std; const ...

  8. 【Redis】redis的安装、配置执行及Jedisclient的开发使用

    定义: Redis is an open source, BSD licensed, advanced key-value cache and store. It is often referred ...

  9. windows apache 跳转 tomcat 代理

    需求是这样的 服务器有tomcat和apache两个服务器 t端口号是8080,a端口是80 比如javaweb的域名是 www.XXX.com:8080 phpweb的域名是  a.XXX.com ...

  10. HDU 2147kiki's game

    KIKI和zz一起玩跳棋游戏,KIKI先.跳棋棋盘有n行m列.在顶行的最右侧位置放上一枚硬币.每次每个人可以把硬币移动到左边,下边或是左下边的空格中.最后不能移动硬币的那个人将输掉比赛. P点:即必败 ...