Servlet 개념
- 웹서버 : 정적인 웹 컨텐츠를 처리하는 서버
- 동적 웹 컨텐츠를 처리하기 위해 사용하는 방법 : CGI
- CGI 가 Java 에서 사용하기 불편하고 CGI의 특성(프로세스를 만들었다 죽임) 때문에 Servlet 사용
- Servlet은 spec(API) 이고 servlet을 생애주기에 맞춰 실행시켜주는 것이 Servlet Container이다.
- Servlet Container = Tomcat = Web Application Server
- Proxy
Servlet 구현
- Servlet 생애주기 : init -> service -> destroy
- service() 메서드는 굳이 override 할 필요 없음 : doGET(), doPost() 로 사용
- doGET()
- ServletContext
- ServletRequest -> HttpServletRequest
- ServletResponse -> HttpServletResponse
web.xml
- 웹 어플리케이션의 배치 정보를 담고있는 XML 파일
- servlet 태그 : 서블릿 이름, init-param, load-on-startup 지정
- servlet-mapping 태그 : servlet 과 URL 맵핑 정보 (경로에 와일드 카드 * 지정가능)
- context-param : ServletContext의 초기 파라미터
- welcome-file-list , error-page , filter, filter-mapping, listener
Cookie
- 사용자가 웹사이트를 방문할때 웹서버에 의해 생성되어 브라우저에 저장되는 데이터 블록
- 쿠키를 다 읽어올수는 있지만 어떤 쿠기가 있는지는 쿠키 이름으로 직접 찾아야함
- 쿠키 저장은 response.addCookie를 사용
- 도메인 마다 쿠키가 저장되는게 다름
- maxAge가 0이면 삭제, 음수면 브라우저 닫으면 삭제(세션)
Session
- 상태가 없는 http 프로토콜상에서 같은 사용자로 부터의 여러 요청을 하나의 상태로 유지시키는 기술
- 서버에 저장됨
- 쿠키에 세션의 ID를 저장시켜 브라우저에서 request 할때 쿠키를 달고 온걸로 ID를 조회해 필요한 데이터를 사용한다.
RequestDispatcher
- 현재의 요청에대한 정보를 저장했다가 다른 자원으로 전달하는 기능
- req.getRequestDispatcher({url}) 으로 사용가능
- rd. Forward() vs response.sendRedirect()
Filter
- 공통적으로 적용할 수 있는 작업을 수행하는 객체
- 필터 체인 형태로 제공
- filterChain.doFilter()를 실행 안시키면 의미 없음
Listener
- ServletContext와 관련된 리스너
- HttpSession
- ServletRequest
File Upload
- form 태그에서 enctype 을 multipart/form-data 로 정해주고 사용
- application/x-www-form-urlencoded는 대용량 바이너리 데이터 전송에 맞지않음
- multipart/form-data의 컨텐츠는 multipart MIME 데이터의 규칙을 따름
- MIME의 메세지 바디는 multipart로 구성되어 있음
- @MultipartConfig
Sevlet3.0 Annotations
- @WebServlet : name / urlPatterns
- @WebInitParam : name / value
- @WebFilter : filtername / urlPatterns
- @WebListener
- initializer.webAppInitializer : context-param / welcome-file-list / error page 구현 가능
JSP ( = Java Server Pages = Jakarta Server Pages)
- HTML, XML등을 기반으로 자바코드를 삽입하여 웹서버에서 동적으로 웹페이지를 생성할 수 있도록 해주는 서버 사이드 스크립트 언어
- 서블릿이라고 생각하면 됨
- <%@ %> (directive) : 페이지, 다른 html, jsp , 태그 라이브러리
- <%= %> : 출력
- <%! %> : 변수 선언
- <% %> (scriptlet): 기본 문법
JSP 내장 객체
- page : page의 서블릿 인스턴스
- request : 서블릿-jsp 사이에서 서블릿의 요청(jsp)을 처리하고 결과를 전달해줄 때 사용
- session
- application : ServletContext
JSP action Tag : <jsp:useBean>
JSP EL(Expression Language)
- 자바 빈의 프로퍼티나 컬랙션(자료구조)의 값을 쉽게 꺼낼 수 있게 해주는 표현식
- ${~~}
- 검색 범위
JSTL(JSP Standard Tag Library)
- c ,fn , fit, x, sql 등 여러 상황에서 사용
MVC 패턴
- 장점
- MVC 패턴을 써서 servlet을 나눠 만들더라도 공통적인 처리 부분들이 여러곳 생긴다
FrontServlet
- 모든 요청을 FrontServlet이 다 받아서 요청 분배도 하고 응답도 처리 서블릿에서 받아 include 해서 사용자한테 응답
- 이렇게 FrontServlet이 응답, 요청 다 하면 처리 서블릿이 굳이 서블릿일 필요가 없음
- Command 패턴을 사용해서 추상화 가능
- Command.excute 메서드를 통해서 반환값을 {jsp 파일 이름}으로 주면 굳이 서블릿일. 필요 없는 객체들이 생김 -> Controller라고 칭함
FrontController 패턴
- 웹 사이트의 모든 요청을 처리하는 컨트롤러 (보안, 국제화 , 뷰 제공 등 )
반응형
'개발 > JAVA' 카테고리의 다른 글
[JAVA] 직접 구현해보는 ArrayQueue 와 LinkedQueue (0) | 2022.09.13 |
---|---|
[JAVA] 배열 - Binary search (이분 탐색) (0) | 2022.09.03 |