①Select의 원리 톰캣
②forward VS redirect
③쿠키와 세션
④scope : Application / request / session / page
⑤MVC2 모델 개념
JSP페이지 내에서 어떤 동작을 하도록 지시하는 태그
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 : 중간에 태그를 넣으면 중단(주소도 바뀌지 않음)
[계산 : 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>
[결과값]