JSP(2023-03-28)

권단비·2023년 3월 28일
0

IT

목록 보기
108/139
①Select의 원리 톰캣
②forward VS redirect
③쿠키와 세션
④scope : Application / request / session / page 
⑤MVC2 모델 개념

[액션태그]

JSP페이지 내에서 어떤 동작을 하도록 지시하는 태그

[include 지시자]

include : 중간에 태그를 넣어도 모든 값을 다 보여줌

[계산 : jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<header>
		<h1>include01.jsp 입니다.</h1>
	</header>
</body>
</html>
--------------------------------------------------------------------------
[계산 : jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<main>
		<h1>
			여기는 메인입니다.
			<h1>
				<%@include file="include01.jsp"%>
	</main>
</body>
</html>
[결과값]


[forward]

forward : 중간에 태그를 넣으면 중단(주소도 바뀌지 않음)

[계산 : sub.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
서브 페이지 입니다. (sub.jsp)
</body>
</html>
--------------------------------------------------------------------------
[계산 : main.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>메인 페이지 입니다.</h1>
	<%
		System.out.println("중간 태그");
	%>
	<script>
		console.log("콘솔 태그")
	</script>

	<jsp:forward page="sub.jsp" />
	<!--jsp : forward 액션태그-->

	<script>
		console.log("콘솔 태그")
	</script>
	<h1>꼬리말 입니다.</h1>
</body>
</html>
[결과값]


[계산 : forward_param.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		String id, pw;
	%>
	<%
		id = request.getParameter("id");
		pw = request.getParameter("pw");
	%>
	아이디:<%=id%><br /> 패스워드:<%=pw%><br />
</body>
</html>
--------------------------------------------------------------------------
[계산 : forward.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<jsp:forward page="forward_param.jsp">
		<jsp:param name="id" value="abcdef" />
		<jsp:param name="pw" value="1234" />
		</jsp:forward>
		</body>
</html>
[결과값]


[쿠키]

어떤 정보를 지속적으로 유지하기 위한 수단으로 쿠키라는 방식을 사용한다.

웹 브라우저에 응답 후 관계를 끊는 것은 HTTP 프로토콜의 특징이다.  
쿠키는 서버에서 생성하여, 서버가 아닌 클라이언트 측에 특정 정보를 저장하고, 서버에 요청 할 때 마다 쿠키의 속성값을 참조 또는 변경 할 수 있다.
쿠키는 4kb로 용량이 제한적이며, 300개까지 데이터 정보를 가질 수 있다.  
클라이언트 쪽에서 연결한 증거를 남기는 것(웹 브라우저는 쿠키를 갖고 있다/연결성 유지를 위한 꼼수)
1.forward

2.redirect : 유저로 하여금 다시 welcome.jsp로 접속하게 하는 것
[계산 : login.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="loginOk.jsp" method="post">
		아이디 : <input type="text" name="id" size="10"><br />
		패스워드 : <input type="password" name="pw" size="10"><br />
		<input type="submit" value="전송">
	</form>
</body>
</html>
--------------------------------------------------------------------------
[계산 : welcome.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		Cookie[] cookies = request.getCookies();
		for (int i = 0; i < cookies.length; i++) {
			out.print(cookies[i].getValue() + "<br>");
		}
	%>
<%-- 	<%
		if (cookies != null) {
			for (int i = 0; i < cookies.length; i++) {
				// 쿠키 유지시간은 0으로 설정
				cookies[i].setMaxAge(0);

				// 변경된 쿠기 정보를 다시 클라이언트에 전달
				response.addCookie(cookies[i]);
			}
		}
	%> --%>
</body>
</html>
--------------------------------------------------------------------------
[계산 : loginOk.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%String id, pw;%>
	<%
		id = request.getParameter("id");
		pw = request.getParameter("pw");

		if (id.equals("abcd") && pw.equals("1234")) {

			Cookie cookie = new Cookie("id", id);
			cookie.setMaxAge(60); // 60분 뒤에 쿠키 삭제됨

			response.addCookie(cookie); // 클라이언트 웹 쿠키에 심어놓는 작업 ⇒  동일 서버를 접속하면 무조건 심어놓은 쿠키를 같이 전달함
			response.sendRedirect("welcome.jsp"); // redirect : 유저로 하여금 다시 welcome.jsp로 접속하게 하는 것

		} else {
			response.sendRedirect("login.jsp");
		}
	%>
</body>
</html>
[결과값]


[세션]

[계산 : login_session.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="loginOk_session.jsp" method="post">
		아이디 : <input type="text" name="id" size="10"><br />
		패스워드 : <input type="password" name="pw" size="10"><br />
		<input type="submit" value="전송">
	</form>
</body>
</html>
--------------------------------------------------------------------------
[계산 : welcome_session.jsp]
<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>웰컴 jsp 입니다</h1>
	<%
		/* Cookie[] cookies = request.getCookies();

		for(int i=0; i < cookies.length;i++){
		   out.print(cookies[i].getValue() + "<br>");
		} */

		String id = (String) session.getAttribute("id");
		String pw = (String) session.getAttribute("pw");
	%>
	환영합니다 :<%=id%>님
	<br> 당신의 패스워드는 :<%=pw%>입니다.
	<br>
	<hr>
	<%
		Enumeration enumeration = session.getAttributeNames();

		while (enumeration.hasMoreElements()) {
			String sName = enumeration.nextElement().toString();
			String sValue = (String) session.getAttribute(sName);

			out.print(sName + ":" + sValue + "<br>");
		}

		out.println("=========================<br/>");
		// 세션 특정 데이터 삭제
		session.removeAttribute("pw");

		enumeration = session.getAttributeNames();

		while (enumeration.hasMoreElements()) {
			String sName = enumeration.nextElement().toString();
			String sValue = (String) session.getAttribute(sName);

			out.print(sName + ":" + sValue + "<br>");
		}

		out.println("=========================<br/>");
		// 모든 데이터 삭제
		session.invalidate();

		// 유효한 세션 아이디 존재 여부
		if (request.isRequestedSessionIdValid()) {
			out.print("session valid");
		} else {
			out.print("session Invalid");
		}
	%>
</body>
</html>
--------------------------------------------------------------------------
[계산 : loginOk_session.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		String id, pw;
	%>
	<%
		id = request.getParameter("id");
		pw = request.getParameter("pw");
		if (id.equals("abcd") && pw.equals("1234")) {
			session.setAttribute("id", id);
			session.setAttribute("pw", pw);
			response.sendRedirect("welcome_session.jsp"); // redirect : 유저로 하여금 다시 welcome.jsp로 접속하게 하는 것
		} else {
			response.sendRedirect("login_session.jsp");
		}
	%>
</body>
</html>
[결과값]


0개의 댓글