如何实现网站登陆的记忆跳转功能

使用request.getHeader("Referer");可以方便地获取上次访问的URL请求,从事实现记忆跳转功能,但是该方法不能处理POST方式提交的参数信息

为了将上次请求的所有信息都保持下来,可以写一个工具类,将请求和表单信息拼写成一个字符串,保存到表单中一个隐藏域;重新登陆的时候,可以获取到上次的url值。当然也可以讲上次的url值放到session中进行保存。

处理请求的工具类
RedirectUtil类用于处理请求URL和表单信息,完成URL转换

public class RedirectUtil{
public static String dealurl(HttpServletRequest request){
String url="";
url=request.getRequestURL()+"?";
url+=param(request);
if(url.indexOf("&")>-1){
url=url.replace("&", "@#@");
}
return url;
}

public static String param(HttpServletRequest request) {
String url = "";
Enumeration param = request.getParameterNames();
while (param.hasMoreElements()) {
String pname = (String) param.nextElement();
url+=pname+"="+request.getParameter(pname)+"&";
}
if(url.endsWith("&")){
url=url.substring(0, url.lastIndexOf("&"));

}
return url;

}

public static String geturl(String url){
if(url.indexOf("@#@")>-1){
url=url.replaceAll("@#@","&");
}
return url;
}
}


这里将url中的&转换成@#@是由于待会再页面跳转的时候,携带参数的时候避免将&这里的参数作为参数来计算,而是仅仅作为一个字符串。
如果将上一个url地址放入到session中,就不需要进行转换了


在jsp页面中,
<%
String url="";
if(session.getAttribute("username")==null){
url=RedirectUtil.dealurl(request);
response.sendRedirect("weblogin.jsp?url="url);
}

在登陆页面jsp中
<%
String url=request.getParameter("url");
%>

将url参数放入到表单的隐藏域,进行提交
<input type="hidden" name="url" value="<%=url>">
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值