記憶登錄跳轉(zhuǎn)可以打打方便用戶使用
getHeader("Referer");方式簡(jiǎn)單不過(guò)不能處理post的參數(shù)
本來(lái)都是用在struts,webwork里的,為了容易看明白改寫(xiě)成jsp方式的
-------------------------------------------------------------------------------------------------------------
member.jsp //session限制訪問(wèn)頁(yè)
<%
String url = ""
if(session.getAttribute("username")==null)
{
url = myRedirect.dealurl(request);//記錄當(dāng)前地址和請(qǐng)求參數(shù),dealurl將實(shí)際url處理了避免和要請(qǐng)求url有干擾,因?yàn)闀?huì)有& 字符
response.sendRedirect("weblogin.jsp?url="+url) ;//重定向到登錄頁(yè)面
}
%>
-------------------------------------------------------------------------------------------
weblogin.jsp
<%
String url = request.getParameter("url");
String userid =request.getParameter("userid");
String password =request.getParameter("password");
if(userid!=null) //如果是登錄提交執(zhí)行下面代碼
{
if(登錄成功)
{
session.setAttribute("userid",userid);
out.println("<script>alert('登錄成功,謝謝光臨');self.location.href='"+myRedirect.geturl(url)+"';</script>");//轉(zhuǎn)向到首次請(qǐng)求的url,.geturl(url)是把轉(zhuǎn)化過(guò)的地址轉(zhuǎn)化回來(lái)變成真實(shí)url.
}else{
out.println("<script>alert('用戶名或密碼錯(cuò)誤');history.back();</script>");
}
}else{//如果不是登錄提交顯示現(xiàn)面登錄界面
%>
<table width="311" height="162" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="311" height="162" align="center"> 您還沒(méi)有登錄,請(qǐng)先登錄<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">帳 號(hào):</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">沒(méi)有注冊(cè)</a> </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%>">這里要有個(gè)hidden來(lái)保存一下,不然提交就沒(méi)了
</form>
</table>
</td>
</tr>
</table>
<%
}
%>
-------------------------------------------------------------------------------------------------------
myRedirect.java
package com.util;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
public class myRedirect //對(duì)url的轉(zhuǎn)換類
{
public static String dealurl(HttpServletRequest request)
{
String url = "";
url = request.getRequestURL()+"?";
url +=param(request);
if(url.indexOf("&")>-1)
url=url.replaceAll("&","@#@");//實(shí)際上就是把有&的字符轉(zhuǎn)化成了@#@
return url;
}
public static String geturl(String url)//這個(gè)是還原方法
{
if(url.indexOf("@#@")>-1)
url=url.replaceAll("@#@","&");
return url;
}
public static String param(HttpServletRequest request)
{
String url = "";
Enumeration param = request.getParameterNames();//得到所有參數(shù)名
while(param.hasMoreElements())
{
String pname = param.nextElement().toString();
url += pname+"="+request.getParameter(pname)+"&";
}
if(url.endsWith("&"))
{
url = url.substring(0,url.lastIndexOf("&"));
}
return url;
}
}
這樣登錄瀏覽器就會(huì)自動(dòng)轉(zhuǎn)到用戶剛剛請(qǐng)求的地址