본문 바로가기
학습/JSP

13. <hidden>태그와 URL Rewriting 이용해 웹 페이지 연동

by Elfen Lied 2022. 11. 9.
반응형

- 세션 트래킹

 

- 웹 페이지를 연동하는 방법 

  • <hidden> 태그 : HTML의 <hidden> 태그를 이용해 웹 페이지들 사이의 정보를 공유함
  • URL Rewriting : GET 방식으로 URL 뒤에 정보를 붙여서 다른 페이지로 전송함
  • 쿠키 : 클라이언트 PC의 Cookie 파일에 정보를 저장한 후 웹 페이지들이 공유함
  • 세션 :  서버 메모리에 정보를 저장한 후 웹 페이지들이 공유함

 

 

- <hidden> 태그를 이용한 세션 트래킹 실습

 

- login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="login" name="frmLogin" method="post">
		아이디 : <input type="text" name="user_id"><br>
		비밀번호 : <input type="password" name="user_pw"><br>
		<input type="submit">
		<input type="hidden" name="user_address" value="서울시 성북구">
		<input type="hidden" name="user_email" value="test@gmail.com">
		<input type="hidden" name="user_hp" value="010-1111-2222">
		
	</form>
</body>
</html>

 

 

- LoginServlet

package sec01.ex01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
	
	@Override
	public void init() throws ServletException {
		System.out.println("init메서드 호출");
	}
	
	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();
		
		StringBuffer sb = new StringBuffer();
		
		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");
	
		sb.append(user_id + "<br>");
		sb.append(user_pw + "<br>");
		sb.append(user_address + "<br>");
		sb.append(user_email + "<br>");
		sb.append(user_hp + "<br>");
		out.print(sb);
	}

}

 

http://localhost:8090/pro10/login.html 로 요청한뒤

 

제출을 하면 아이디 비번이 출력되고

미리 지정한 주소, 메일, 폰번호는 미리 지정한 값이 잘 출력되면 됨

 

 

- URL Rewriting을 이용한 세션 트래킹 실습

 

- LoginServlet

package sec01.ex02;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
	
	@Override
	public void init() throws ServletException {
		System.out.println("init메서드 호출");
	}
	
	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();
		
		StringBuffer sb = new StringBuffer();
		
		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");
	
		sb.append(user_id + "<br>");
		sb.append(user_pw + "<br>");
		sb.append(user_address + "<br>");
		sb.append(user_email + "<br>");
		sb.append(user_hp + "<br>");
		user_address=URLEncoder.encode(user_address, "utf-8");
		sb.append("<a href='/pro10/second?user_id="+user_id+"&user_pw="+user_pw+"&user_address="+user_address+"'>두번째 서블릿으로 보내기</a>");
		out.print(sb);
	}

}

 

 

- SecondServlet

package sec01.ex02;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/second")
public class SecondServlet extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		
		StringBuffer sb = new StringBuffer();
		
		String user_id = request.getParameter("user_id");
		String user_pw = request.getParameter("user_pw");
		String user_address = request.getParameter("user_address"); 
		
		if(user_id != null && user_id.length() != 0) {
			sb.append("이미 로그인 상태<br><br>");
			sb.append("첫 번째 서블릿에서 넘겨준 아이디 : " + user_id + "<br>");
			sb.append("첫 번째 서블릿에서 넘겨준 비밀번호 : " + user_pw + "<br>");
			sb.append("첫 번째 서블릿에서 넘겨준 주소 : " + user_address + "<br>");
		} else {
			sb.append("로그인 하지 않았습니다.<br><br>");
			sb.append("다시 로그인 하세요<br>");
			sb.append("<a href='/pro10/login.html'>로그인창으로 이동하기</a>");
		}
		out.print(sb);
	}

}

 

http://localhost:8090/pro10/login.html 로 요청해서 로그인하면

두번째 서블릿으로 보내기 클릭하면

 

그리고 http://localhost:8090/pro10/second 로 로그인 없이 바로 /second로 요청해보면

위와같이 출력되면 됨.

반응형

'학습 > JSP' 카테고리의 다른 글

15. 세션  (0) 2022.11.10
14. 쿠키  (0) 2022.11.09
12. ServletConfig  (0) 2022.11.09
11. ServletContext  (0) 2022.11.08
10. JSP파일에 출력하기  (0) 2022.11.08

댓글