오봉이와 함께하는 개발 블로그
Servlet - 세션 트래킹(웹 페이지 사이 정보 공유)<hidden> 태그 사용 본문
728x90
쿠키와 세션
- 클라이언트와 서버 간에 정보를 교환하는데 클라이언트 PC 또는 서버의 메모리에 저장해 두고 사용하면 프로그램 속도를 향상시킬 수 있음
HTTP 프로토콜
- 서버-클라이언트 통신 시 stateless 방식으로 통신
- 브라우저에서 새 웹페이지를 열면 기존의 웹페이나 서블릿에 관한 어떤 연결 정보도 유지 않음
- 새로 열린 페이지에서 어떤 정보도 알 수 없음
- 페이지가 서로 독립적이어서 서로의 상태를 알 수 없음
- 웹 페이지 사이 또는 서블릿 간 상태나 정보를 공유하려면 웹 페이지를 연결시키는 기능 필요
- 세션 트래킹이라고 함
- 방법
- <hidden> 태그 사용
- <input type=’hidden’ value=’${id}’>
- 현재 페이지에 데이터 숨겨놓고 연결된 다음 페이지로 데이터를 보내는 방법
- 두 웹페이지가 데이터 공유
- request.getParameter()로 받아서 사용할 수 있음
- GET 방식으로 전송 : 데이터 노출, 길이 제한, 보안 문제
- <hidden> 태그 사용
- 방법
- 세션 트래킹이라고 함
hidden 방식 예제 - LoginHiddenServlet.java, login-hidden.html
package com.example.servlet4;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
@WebServlet("/loginrewrite")
public class LoginRewriteServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String user_id = request.getParameter("user_id");
String user_pw = request.getParameter("user_pw");
String user_address = request.getParameter("user_address");
String user_email = request.getParameter("user_email");
String user_hp = request.getParameter("user_hp");
if (user_id != null && user_id.length() != 0) {
String data = "<html><body>";
data += "안녕하세요!<br> 로그인하셨습니다.<br><br>";
data += "아이디 : " + user_id + "<br>";
data += "비밀번호 : " + user_pw + "<br>";
data += "주소 : " + user_address + "<br>";
data += "이메일 : " + user_email + "<br>";
data += "휴대전화 : " + user_hp;
out.print(data);
// URL Rewriting 방식 이용
user_address = URLEncoder.encode(user_address, "utf-8");
// 인코딩 하면 서울시+종로구 라고 나오고 하지 않으면 서울시%종로구 라고 나옴
out.print("<br><br><a href='/second?user_id=" + user_id
+ "&user_pw=" + user_pw
+ "&user_address=" + user_address
+ "'>두 번째 서블릿으로 보내기</a>");
data = "</body></html>";
}
else {
out.println("로그인 하지 않았습니다. <br><br>");
out.println("다시 로그인 하세요. <br><br>");
out.println("<a href='login-rewrite.html'>로그인 창으로 이동</a>");
}
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form name="frmLogin" method="post" action="loginHidden" >
아이디 :<input type="text" name="user_id"><br>
비밀번호:<input type="password" name="user_pw" ><br>
<input type="submit" value="로그인"> <input type="reset" value="다시입력">
<!-- 히든 태그 삽입-->
<input type="hidden" name="user_address" value="서울시 종로구">
<input type="hidden" name="user_email" value="test@naver.com">
<input type="hidden" name="user_hp" value="010-1111-1111">
</form>
</body>
</html>
728x90
'BE > Servlet' 카테고리의 다른 글
Servlet - 세션 트래킹(웹 페이지 사이 정보 공유) Cookie 쿠키 (0) | 2021.12.29 |
---|---|
Servlet - 세션 트래킹(웹 페이지 사이 정보 공유)URL Rewrite (0) | 2021.12.29 |
Servlet - 포워딩 (0) | 2021.12.29 |
Servlet - Servlet DB연동(Connection Pool) (0) | 2021.12.28 |
Servlet - Servlet DB 연동(기본 JDBC) (0) | 2021.12.28 |
Comments