JSP網站登入記憶跳轉實現的一種方法

來源:互聯網
上載者:User
js 記憶登入跳轉可以打打方便使用者使用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" >
          <tr>
            <td width="41" height="33" valign="bottom">帳 號:</td>
            <td width="99" valign="bottom"><input name="userid" type="text" class="textstyle" id="userid" size="12" style="height:20"></td>
          </tr>
          <tr>
            <td>密 碼:</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="登入">
                <a href="reg.jsp" target="_blank">沒有註冊</a>  </td>
          </tr>
          <tr align="center">
            <td colspan="2" class="font14"><strong><a href="#" >找回密碼</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;
 }
}

  這樣登入瀏覽器就會自動轉到使用者剛剛請求的地址



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.