서블릿과 jsp는 결과적으로 동일한 바이트코드형태로 돌아간다.
기본적인 자바클래스에 웹 네트워킹을 위한 서블릿을 상속받은 것이라 서블릿은 자바와 동일함.
<jsp:useBean id="name" class="package.classname.java" />
<jsp:setProperty>
<jsp:getProperty>
page < request < session < application
이름을 중복으로 지으면 포함관계에 의해 의도가 달라질 수 있음.
해당 scope에 저장된 객체가 없으면 새로운 객체를 생성하고 객체가 있으면 해당 객체를 가져온다.
TestBean test=new TestBean();
test.setMsg("msg값이 변경됨");
out.write(test.getMsg());
new로 생성하는 방식
<jsp:useBean id="test" class="edu.java.jsp01.TestBean"></jsp:useBean>
useBean을 사용하는 방식. 둘의 동작은 동일하다
미리 클래스를 하나 생성하고 그 클래스의 객체선언 시 사용하는 것
name은 빈의 id와 같아야하며 property는 클래스의 변수명, value는 변수에 적용할 값.
getter/setter와 동일한 동작인데 비교적 옛날기술임.
<jsp:setProperty name="test" property="msg" value="msg값이 변경됨" />
<p>변경된 값 출력 : <jsp:getProperty property="msg" name="test" /></p>
getter/setter 사용
<% test.setMsg("getter/setter 사용"); %>
<p>변경된 값 출력 : <%=test.getMsg() %></p>
EL 표기법을 사용. 가장 많이 사용하는 방법이다.
<p>${test.msg}</p>
String name=request.getParameter("name");
String phone=request.getParameter("phone");
String email=request.getParameter("email");
기존에는 각각의 parameter값을 각각의 변수에 저장해주었다면
useBean을 사용하여 모든 parameter 값을 contact에 저장할 수 있다.
<jsp:useBean id="contact" class="edu.web.homework.ContactVO"></jsp:useBean>
<jsp:setProperty property="*" name="contact"/>
모든 파라미터*
를 contact라는 bean 안에 넣는다.
<p>이름 : <%=contact.getName() %></p>
생성된 bean은 클래스 객체처럼 사용한다.
request.getRemoteAddr()
request.getHeader("host")
request.getHeader("cookie")
request.getServletPath()
request.getMethod()
HttpServletResponse 클래스의 객체와 동일하다
HTTP 요청에 대응하는 정보를 저장하는 객체.
JSP에서 쓰는일은 적어서 그냥 참고~~
이용자가 로그인확인이 필요한 사이트를 이동할 때마다 매번 로그인을 해야만 하면 귀찮음. 그때 한번 로그인했다면 승인을 받게하여 로그인을 해야만 이용할 수 있는 기능들을 로그인없이 사용할 수 있게 한다.
이때 쿠키와 세션을 이용합니다.
HTTP는 HTML문서의 송수신을 위해 사용하는 프로토콜이다. 비연결지향, 무상태 프로토콜이라고도 함.
http는 요청을 넘겨주면 연결이 끝나는 프로토콜입니다.
HTTP 기본 특성
- connectionless : 클라이언트가 요청을 한 후 응답을 받으면 연결을 끊는 특성
- stateless : 통신이 끝나면 상태를 유지하지 않는 특성
(수정 21.09.14)
쿠키와 세션은 위 두가지 특징에서 http의 연결 상태를 유지하기 위해 사용한다.
쿠키는 필요한 정보를 클라이언트에서 저장함
세션은 필요한 정보를 웹 서버에서 저장함
정보저장이 목적이느냐 보안 목적이느냐에 따라 나뉨.
쿠키들은 해당 클라이언트에게 있기때문에 보안에 상관없는 정보들이 들어간다. 예를 들어 광고팝업창 체크 유무. 해제하기를 체크하면 해당 클라이언트한텐 팝업창이 뜨지않음.
세션은 id/pw를 입력해서 id회원 정보를 유지하기 위해서 사용함. 일정시간이 지나면 세션만료되면서 로그아웃되는 걸 볼 수 있음.
javax.servlet.http
웹 브라우저가 저장하는 데이터. key-value 형식.
필요한 정보나 브라우저에서 사용자가 선택한 내용(ex. 접속기록, 검색기록, 이미지)을 클라이언트(웹 브라우저)에서 저장하며 다양한 정보추적을 목적으로 데이터가 유지된다.
1) 서버 스크립트는 이름, 나이, 식별숫자 등 정보를 쿠키에 설정해 브라우저에 전송한다
2) 브라우저는 쿠키를 개인 PC에 저장한다
3) 다음 접속 시 브라우저에서 웹 서버에 특정 요청을 할 경우, 쿠키를 서버에 전송하고 서버는 사용자 식별 용도로 사용한다.
브라우저가 최초 요청 시 서버가 쿠키를 생성해서 응답함. 응답받은 쿠키를 브라우저가 저장하게 됨.
이미 한번 접속한 웹 브라우저에서는 저장된 쿠키를 요청에 담아 서버로 보내게 된다.
쿠키는 클라이언트에서 확인 할 수 있다.
언제만들어서 어떻게 쓰는지가 중요
//파라미터 값으로 쿠키 생성하기
Cookie firstNameCookie=new Cookie("first_name", firstName);
Cookie lastNameCookie=new Cookie("last_name", lastName);
//만료 시간 설정하기. (초단위) : 24시간
firstNameCookie.setMaxAge(60*60*24);
lastNameCookie.setMaxAge(60*60*24);
//response.header에 쿠키 추가하기
response.addCookie(firstNameCookie);
response.addCookie(lastNameCookie);
쿠키를 생성한 도메인에서 f12->application->Cookies
을 통해 브라우저가 종료되었다 다시 시작해도 쿠키가 유지되는 것을 확인 할 수 있다.
String.join("구분자", 배열) : 문자열 배열을 특정 구분자로 연결해주는 함수