java 웹 수업 20211101
JSP
<%@ %> 지시자 : page/ include
<% %> 자바코드 영역
<%= %> 간단한 연산 결과 및 변수 값 즉시 출력
<%! %> 변수 / 메서드 선언
Servlet : extends HttpServlet
doget
dopost
Servlet 작동 순서
클라이언트가 Servlet 에게 요청 시 톰캣에서는 servlet 컨테이너를 생성하고 요청이 있을 때마다 스레드가 생성
서버(SW . HW) 는 기본적으로 다수에 대한 대응을 처리할 때 사용
Servlet 라이프 사이클
1. 최초 요청시 Servlet 객체 생성
2. init() 메서드를 호출 :서블릿 구동 직전 처리해야할 일들.
3.service() / doGet() , doPost() 호출 : 요청시 매번
4. destroy() : 맨 마지막에 한번 호출 : 불필요한 자원들 자원 해제 ( close())...)
HTML 태그와 Servlet (JSP) 간의 데이터를 주고 받을 경우.
POST 방식은 한글 설정을 아무리 잘 하더라도 꺠져서 전달됨.
따라서 한글 데이터를 전달 받는 쪽에서는 인코딩을 재설정 해야 한다.
request.setCharacterEncoding("UTF-8")
Servlet 등록 방법
1. @(어노테이션 이용) : @WebServlet("/hello")
: 이클립스 마법사를 이용하여 Servlet 클래스를 생성할 떄 설정 가능
: Servlet 클래스 생성 후 , @WebServlet("/hello") 를 추가하여 설정 가능
사용 방법 : @WebServlet("/hello")
< form action="hello" > </form>
2. web.xml 에 직접 등록
java 원본 코드를 변경하지 않고 유지보수 가능
단 매번 개발자가 등록, 문제가 생기면 프로젝트 구동이 안됨.
xml 문서 내에는 한글 주석을 사용하지 않는다.
데이터 공유 : ServletContext
여러 Servelt 에서 공통적으로 사용할 데이터를 공유할 경우,
context parameter 를 이용하여 web.xml 문서에 기술.
<context-param>
<param-name>이름</param-name>
<param-value>값</param-value>
</context-param>
공유 데이터 추출 : context 영역 데이터
String 변수 = getServletContext().getInitParameter("공유 파라미터 이름")
WEB_INF 폴더 내부는 외부에서 접근 못하도록 차단된 폴더임.
WEB.XML
~~.JSP / ~~.HTML 파일은 WEBCONTETN 영역에 존재해야함.
jsp 또는 서블릿으로 바로 이동 : response.sendRedirect()
response.sendRedirect("page.jsp?no=1&search=spring") no 값과 search 값을 따로 불러옴
액션 태그 : jsp 페이지 내에서 어떤 동작을 하도록 지시하는 내장 태그
1. forward : 다른 페이지로 이동할 때 사용
2. include : 다른 페이지를 현재 페이지에 내장 할 떄
<jsp:include page="내장할 페이지" flush="true">
3.param : forward / include 태그 내에서 전달할 값을 설정할 때 사용.
쿠키 : 웹 브라우저에서 서버로 어떤 데이터를 요청하면, 서버 측은 알맞은 로직을 수행한 후 , 데이터를 웹 브라우저로 응답함.
서버는 웹 브라우저와의 관계를 종료.
관계를 종료 : 연결을 끊는다.
데이터를 유지할 경우 웹 브라우저 저장소인 쿠키에 저장
쿠키는 서버에서 생성하며 저장은 클라이언트 측의 웹 브라우저에서 저장됨
쿠키 : 4kb / 300개 정도를 저장할 수 있음.
단 웹 브라우저내에서는 접속된 URL을 대표이름으로 쿠키를 저장하기 떄문에 초기 접속URL이 그대로 사용되어야 한다.
예 ) localhost:9000/test/test.jsp
쿠키 생성 : Cookie 클래스를 이용하여 객채화
쿠키 저장 : response.addCookie(쿠키객체명);
쿠키 주요 메서드
setMaxAge() : 쿠키의 유효기간 설정 ( 기본값은 웹 브라우저 종료시 자동 소멸)
setPath() : 쿠키의 유효 경로
서브 도메인
setValue() : 쿠키의 값을 설정 (쿠키는 수정 메서드 존재 x)
setVersion() : 쿠키 버전 설정
getName() : 쿠키 이름을 추출
getValue() ; 벨류 추출
쿠키는 보안성의 취약점. 중요하지 않은 데이터를 동일 브라우저에 사용하는 웹 애플리케이션 끼리 공유할 수 있는 데이터
세션 :
서버의 임시저장소에 저장되기 떄문에 쿠키처럼 시각적으로 확인 불가능
세션은 서버내에서만 접근이 가능
세션 사용방법.
1. JSP : session 내장 객체가 존재 / session 내장객체를 사용하지 않도록 설정도 가능
2. Servlet : getSession() 을 이용하여 세션객체를 얻어와야 함.
세션 주요 메서드
setAttribute() ; 세션에 데이터를 저장
getAttribute() 세션에 저장된 데이터를 추출
getAttributeNames() 세션에 저장되어 있는 모든 데이터의 이름을 반환
getID() 자동으로 생성된 세션의 ID 추출
isNew() 세션이 최초로 생성되었는지에 대한 boolean 값을 반환
getMaxInactiveInterval() 세션에 대한 유효기간 추출
Invalidate() : 세션의 모든 데이터를 삭제.