欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-02-27 22:29:50
  记忆登录跳转可以打打方便用户使用getHeader("Referer");方式简单不过不能处理post的参数本来都是用在struts,webwork里的,为了容易看明白改写成j...

  记忆登录跳转可以打打方便用户使用getHeader("Referer");方式简单不过不能处理post的参数本来都是用在struts,webwork里的,为了容易看明白改写成jsp方式的

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

  member.jsp //session限制访问页

  <%

  String url = ""

  if(session.getAttribute("username")==null)

  {

  url = myRedirect.dealurl(request);//记录当前地址和请求参数,dealurl将实际url处理了避免和要请求url有干扰,因为会有& 字符

  response.sendRedirect("weblogin.jsp?url="+url) ;//重定向到登录页面

  }

  %>

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

  weblogin.jsp

  <%

  String url = request.getParameter("url");

  String userid =request.getParameter("userid");

  String password =request.getParameter("password");

  if(userid!=null) //如果是登录提交执行下面代码

  {

  if(登录成功)

  {

  session.setAttribute("userid",userid);

  out.println("<script>alert(登录成功,谢谢光临);self.location.href="+myRedirect.geturl(url)+";</script>");//转向到首次请求的url,.geturl(url)是把转化过的地址转化回来变成真实url.

  }else{

  out.println("<script>alert(用户名或密码错误);history.back();</script>");

  }

  }else{//如果不是登录提交显示现面登录界面

  %>

  <table width="311" height="162" border="0" align="center" cellpadding="0" cellspacing="0">

  <tr>

  <td width="311" height="162" align="center"> 您还没有登录,请先登录<br>

  <table width="155" border="0" cellpadding="0" cellspacing="5" class="font12">

  <form name="loginfrm" action="weblogin.jsp" method="post" id="loginfrm" onSubmit="return checkfrm();">

  <tr>

  <td width="41" height="33" valign="bottom">帐&nbsp;号:</td>

  <td width="99" valign="bottom"><input name="userid" type="text" class="textstyle" id="userid" size="12" style="height:20"></td>

  </tr>

  <tr>

  <td>密&nbsp;码:</td>

  <td><input name="password" type="password" class="textstyle" id="password" size="12" style="height:20;width:94"></td>

  </tr>

  <tr align="center" valign="bottom">

  <td height="21" colspan="2"> <input type="submit" name="Submit" value="登录">

  &nbsp; <a href="reg.jsp" target="_blank">没有注册</a>&nbsp; </td>

  </tr>

  <tr align="center">

  <td colspan="2" class="font14"><strong><a href="#" onclick="MM_openBrWindow(requestpwd.jsp,pwd,width=300,height=200);return false;">找回密码</a></strong></td>

  </tr>

  <input name="url" type="hidden" value="<%=url%>">这里要有个hidden来保存一下,不然提交就没了

  </form>

  </table>

  </td>

  </tr>

  </table>

  <%

  }

  %>

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

  myRedirect.java

  package com.util;

  import javax.servlet.http.HttpServletRequest;

  import java.util.Enumeration;

  public class myRedirect //对url的转换类

  {

  public static String dealurl(HttpServletRequest request)

  {

  String url = "";

  url = request.getRequestURL()+"?";

  url +=param(request);

  if(url.indexOf("&")>-1)

  url=url.replaceAll("&","@#@");//实际上就是把有&的字符转化成了@#@

  return url;

  }

  public static String geturl(String url)//这个是还原方法

  {

  if(url.indexOf("@#@")>-1)

  url=url.replaceAll("@#@","&");

  return url;

  }

  public static String param(HttpServletRequest request)

  {

  String url = "";

  Enumeration param = request.getParameterNames();//得到所有参数名

  while(param.hasMoreElements())

  {

  String pname = param.nextElement().toString();

  url += pname+"="+request.getParameter(pname)+"&";

  }

  if(url.endsWith("&"))

  {

  url = url.substring(0,url.lastIndexOf("&"));

  }

  return url;

  }

  }

  这样登录浏览器就会自动转到用户刚刚请求的地址