톰캣 버전별 차이
톰캣의 버전별 차이
- 톰캣의 버전마다 Java, Servlet, JSP, EL, WebSocket 등의 스펙이 모두 다르다.
- EL을 쓰기 위해서 또는 DD를 무엇으로 할지 등등에 따라 달라진다.
JSP 1.2와 JSP 2.0의 차이
-
EL을 모든 표준/사용자 정의 컴포넌트에서 사용할 수 있다.
-
오류를 찾기 더 쉬워졌다.
-
web.xml에 DTD가 아닌 XML 스키마를 사용한다.
- Tomcat의 버전 별로 지원 스펙이 다르기 때문에 처음부터 WAS의 버전 확인을 잘 해야된다.
-
Tomcat 3.x : JSP 1.1, Servlet 2.2
-
web.xml에서 DTD 선언을 해줘야 함
-
ServletRequest.setCharacterEncoding(String) 메소드가 존재하지 않음
-
Filter와 Listener가 존재하지 않음
-
Servlet을 web.xml에서 매핑하지 않음.
-
Tomcat 4.x : JSP 1.2, Servlet 2.3
-
web.xml에서 DTD 선언을 해줘야 함
-
ServletRequest.setCharacterEncoding(String) 메소드가 존재함
-
Filter와 Listener가 존재함.
-
Servlet을 web.xml에서 매핑함.
-
Tomcat 5.x : JSP 2.0, Servlet 2.4
-
web.xml에서 DTD가 아닌 Schema를 선언해줘야 함.
-
filter, listener, Servlet 배포 방법, web.xml의 이해
-
filter
-
객체의 형태로 존재하며 클라이언트와 Servlet 컨테이너 안에 있는 최종 자원 사이에 위치하여 요청과 응답을 알맞게 변경할 수 있다.
-
필터 체인으로 인해 변경에 변경을 가할 수 있다.
-
필터를 사용하면 XML 문서를 변경한다든지, 사용자 인증을 한다든지 할 수 있다. JSP/Servlet같은 코드블럭은 회원 인증이 변할 경우, 모든 페이지를 변경해줘야 한다. 그러나 필터를 통과하게되면 로그인할 때 검사할 수 있다.
-
javax.servlet.Filter 인터페이스, javax.servlet.ServletRequestWrapper 클래스, javax.servlet.ServletResponseWrapper 클래스가 핵심 역할을 한다.
-
Filter 인터페이스 안의 init(), doFilter(), destroy() 메소드를 사용합니다. 서블릿 컨테이너는 사용자가 특정한 자원을 요청했을 때 그 사이 필터가 존재할 경우, 그 필터 객체의 doFilter() 메소드를 호출합니다. 그리고 응답했을 때도 필터링합니다.
-
필터의 설정은 web.xml 파일을 통해
태그와 태그를 사용해 설정할 수 있습니다.
- listener
-
다른 클래스의 어떤 메소드를 수행하기 위해서 직접 참조를 하게 되면 확장성도 떨어지고, 해당 메소드의 파라미터가 변경될 경우, 참조하는 모든 클래스의 호출자를 바꿔주어야 한다. 그래서 클래스 간 직접 참조 없이 이벤트 통신을 한다는 것은 꽤나 큰 의미가 있다.
-
이벤트를 받을 클래스에서 Listener 인터페이스를 구현한 뒤, 이벤트를 받겠다고 handler로 등록하면 다른 클래스에서 handler를 통해 listener들을 호출하는 방식입니다.
-
Servlet 배포 방법
-
WEB-INF
- 외부에서 클라이언트가 접근할 수 없도록 WAS에서 보호하는 디렉토리
- web.xml
-
배포서술자
-
서블릿 클래스를 등록하는 곳
-
WAS가 인식하는 각각의 웹 어플리케이션의 설정 파일
-
출처
나중에 게시판 만들 때 쓰임.