网站首页 > 网络编程教程 > JSP教程 > 网站登录记忆跳转实现的一种方法

网站登录记忆跳转实现的一种方法

  • 作者:互联网
  • 时间:2009-07-03 16:57:27

记忆登录跳转可以打打方便用户使用
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{//如果不是登录提交显示现面登录界面
%>

 
     
   
 
您还没有登录,请先登录

       
  we***gin.jsp" method="post"  id="loginfrm" onSubmit="return checkfrm();">
         

           
           
         
         
           
           
         
         
           
         
         
           
         
    这里要有个hidden来保存一下,不然提交就没了
   
   
       
帐 号:
密 码:

                没有注册 
re***stpwd.jsp','pwd','width=300,height=200');return false;">找回密码

 
     
   


<%
}
%>

-------------------------------------------------------------------------------------------------------


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;
 }
}
这样登录浏览器就会自动转到用户刚刚请求的地址