记忆登录跳转可以打打方便用户使用
getHeader("Referer");方式简单不过不能处理post的参数
本来都是用在struts,webwork里的,为了容易看明白改写成jsp方式的
-------------------------------------------------------------------------------------------------------------
me***r.jsp //session限制访问页
<%
String url = ""
if(se***on.getAttribute("username")==null)
{
url = my***irect.dealurl(request);//记录当前地址和请求参数,dealurl将实际url处理了避免和要请求url有干扰,因为会有& 字符
re***nse.sendRedirect("we***gin.jsp?url="+url) ;//重定向到登录页面
}
%>
-------------------------------------------------------------------------------------------
we***gin.jsp
<%
String url = re***st.getParameter("url");
String userid =re***st.getParameter("userid");
String password =re***st.getParameter("password");
if(userid!=null) //如果是登录提交执行下面代码
{
if(登录成功)
{
se***on.setAttribute("userid",userid);
ou***rintln("");//转向到首次请求的url,.geturl(url)是把转化过的地址转化回来变成真实url.
}else{
ou***rintln("");
}
}else{//如果不是登录提交显示现面登录界面
%>
您还没有登录,请先登录 |
-------------------------------------------------------------------------------------------------------
my***irect.java
package com.util;
import javax.ser***.http.HttpServletRequest;
import ja***util.Enumeration;
public class myRedirect //对url的转换类
{
public static String dealurl(HttpServletRequest request)
{
String url = "";
url = re***st.getRequestURL()+"?";
url +=param(request);
if(ur***ndexOf("&")>-1)
ur***rl.replaceAll("&","@#@");//实际上就是把有&的字符转化成了@#@
return url;
}
public static String geturl(String url)//这个是还原方法
{
if(ur***ndexOf("@#@")>-1)
ur***rl.replaceAll("@#@","&");
return url;
}
public static String param(HttpServletRequest request)
{
String url = "";
Enumeration param = re***st.getParameterNames();//得到所有参数名
while(pa***.hasMoreElements())
{
String pname = pa***.nextElement().toString();
url += pname+"="+re***st.getParameter(pname)+"&";
}
if(ur***ndsWith("&"))
{
url = ur***ubstring(0,ur***astIndexOf("&"));
}
return url;
}
}
这样登录浏览器就会自动转到用户刚刚请求的地址
上一篇: JSP中读文件和写文件的例子