使用request.getHeader("Referer");可以方便地获取上次访问的URL请求,从事实现记忆跳转功能,但是该方法不能处理POST方式提交的参数信息
为了将上次请求的所有信息都保持下来,可以写一个工具类,将请求和表单信息拼写成一个字符串,保存到表单中一个隐藏域;重新登陆的时候,可以获取到上次的url值。当然也可以讲上次的url值放到session中进行保存。
处理请求的工具类
RedirectUtil类用于处理请求URL和表单信息,完成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>">
为了将上次请求的所有信息都保持下来,可以写一个工具类,将请求和表单信息拼写成一个字符串,保存到表单中一个隐藏域;重新登陆的时候,可以获取到上次的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>">