사용자 편의를 위해 메모리 로그인 점프 입력 가능
getHeader("Referer"); 메소드는 간단하지만 post의 매개변수를 처리할 수 없습니다. 원래는 struts 및 webwork에서 사용되었으므로 이해하기 쉽도록 jsp 메소드로 다시 작성했습니다
. ------- ----------------- ------- ----------------- -------
member.jsp //세션 제한 액세스 페이지
<%
문자열 URL = ""
if(session.getAttribute("사용자 이름")==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");
문자열 비밀번호 =request.getParameter("password");
if(userid!=null) //로그인하여 제출하는 경우 다음 코드를 실행합니다.
{
if(로그인 성공)
{
session.setAttribute("userid",userid);
out.println("<script>alert('로그인에 성공했습니다. 방문해 주셔서 감사합니다.');self.location.href='"+myRedirect.geturl(url)+"';</script>");//Redirect 요청된 URL인 .geturl(url)은 변환된 주소를 다시 실제 URL로 변환합니다.
}또 다른{
out.println("<script>alert('사용자 이름 또는 비밀번호가 올바르지 않습니다.');history.back();</script>");
}
}else{//로그인 제출이 아닌 경우 현재 로그인 인터페이스가 표시됩니다.
%>
<table width="311" height="162" border="0" align="center" cellpadding="0" cellpacing="0">
<tr>
<td width="311" height="162" align="center"> 아직 로그인하지 않으셨습니다. 먼저 로그인해 주세요<br>
<table width="155" border="0" cellpadding="0" cellpacing="5" class="font12">
<form name="loginfrm" action="weblogin.jsp" method="post" id="loginfrm" onSubmit="return checkfrm();">
<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="하단">
<td height="21" colspan="2"> <input type="submit" name="제출" value="로그인">
<a href="reg.jsp" target="_blank">등록되지 않음</a></td>
</tr>
<tr 정렬="가운데">
<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%>">저장하려면 여기에 숨겨져 있어야 합니다. 그렇지 않으면 제출물이 손실됩니다.
</form>
</table>
</td>
</tr>
</table>
<%
}
%>
------------------------------------------------ ------------------------------------- -----
myRedirect.java
패키지 com.util
가져오기 javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
public class myRedirect //URL 변환 클래스
{
공개 정적 문자열 dealurl(HttpServletRequest 요청)
{
문자열 URL = "";
url = request.getRequestURL()+"?";
url +=param(요청);
if(url.indexOf("&")>-1)
url=url.replaceAll("&","@#@");//실제로 &가 있는 문자를 @#@로 변환합니다.
반환 URL;
}
public static String geturl(String url)//복원 방법입니다.
{
if(url.indexOf("@#@")>-1)
url=url.replaceAll("@#@","&");
반환 URL;
}
공개 정적 문자열 매개변수(HttpServletRequest 요청)
{
문자열 URL = "";
Enumeration param = request.getParameterNames();//모든 매개변수 이름 가져오기
동안(param.hasMoreElements())
{
문자열 pname = param.nextElement().toString();
url += pname+"="+request.getParameter(pname)+"&";
}
if(url.endsWith("&"))
{
url = url.substring(0,url.lastIndexOf("&"));
}
반환 URL;
}
}
이런 방식으로 브라우저는 사용자가 로그인할 때 방금 요청한 주소로 자동으로 이동합니다.