지난 복습
서버 등록
현업에서는 하나의 언어로 프로그래밍하는게 아니라 여러 언어를 같이 씀
spring: 자바 객체를 특별한 기술 없이 기본 기술로 자바객체를 만들자: pure java , +웹기술 접목
어떤 언어든지 http 요청만 하면 응답가능, EJB(분산컴포넌트)를 마니 안 씀 대신 sprinig을 씀.
고객사에 설치된 JAVA EE 버전을 확인해서 기술들을 맞는 버전 다운 받아서 써야함.
오라클에서 JavaEE를 이클립스 재단에 넘겨버림, 이클립에서 java ee 8버전을 jakarta로 이름바꿈.9로 넘어가면서 패키지까지 바꿈. 따라서 9에서는 JavaEE 와 호환이 안된다.
서버 추가하기
서브릿jsp 기술을 도입해서 우리 프로그램을 이전시키는것: migration
프로젝트
common에 build.gradle 내용 추가
publish 제대로 안 될 때:
gradle cleaneclipse
gradle eclipse
이클립스 서버에서 배포폴더빼고 폴더가서 빠졌는지 확인 후 다시 배포하기.
gradle cleaneclipse
gradle eclipse
기존에 있던거 리무브하고 publish
**project 폴더와 배포 폴더 구조
**ServletRequest와 ServeltResponse - service() 메서드
처음에 Servlet : 특정 프로토콜에 제한되지 않는 범용 기술 (서버와 엡 연결)
근데 http가 강세라 주로 servelt을 http 프로토콜에 사용함
httpServletrquest구현체 = httpServletrquest라는 인터페이스를 구현한 클래스의 객체
프로젝트
핸들러들 // migration
쿠키(session관련) 는 http프로토콜의 기술임 그래서 http서블릿 리퀘스트로 형변환 해야함
Servlep-app 도 마찬가지로 설정하기
리스너 만들기
Servlet 만들기
*톰캣서버 기본 구조
톰캣서버에는 내부적으로 엔진이 두 개 있음(mini web server & Servlet Container)
*서블릿 컨테이너와 서블릿 객체
Servlet의 Lifecycle과 관련된 메서드
init() 시작할 때 호출 - 요청이 들어왔을때 실행할 객체가 없을 때 객체 생성할 때 호출됨. // 서블릿 실행에 필요한 자원을 준비하는 코드 |
service() 클라이언트 요청 들어오면 호출 // 실제 클라이언트의 요청을 처리할 코드 |
destory() 종료할때 호출 // init()에서 준비했던 자원을 해제시키는 코드 |
* 서블릿 객체 제작 및 실행
1. 서블릿 객체 제작하기
- Servlet 인터페이스 규칙에 따라 클래스 생성
2. 서버에 배치
2-1 애노테이션 @WebServlet(서블릿경로)
2-2 DD File(web.xml)
/WEB-INF/web.xml
워크스페이스 플러그인 설치하다가 오류나면
기존 워크스페이스 다른 이름으로 바꿔서 저장 후 새로운 워크스페이스만들어서 이클립스 실행
3. 서블릿 실행
http:localhost:8888/ex01/first
(context path: 서버 루트 설정함)
서블릿 제작
// GenericServlet 추상 클래스
// => javax.servlet.Servlet 인터페이스를 구현하였다.
// => service() 메서드만 남겨두고 나머지 메서드들은 모두 구현하였다.
// => 따라서 이 클래스를 상속 받는 서브 클래스는 service() 만 구현하면 된다.
//@WebServlet(urlPatterns={"/ex01/s2","/ex01/ss2","/ex01/sss2"}) 이름 여러개
*Servlet 객체가 java.io.Serializable 인터페이스 구현하는 이유?
1. 실무에서는 서버가 중단되는 사태에 대비하기 위해 여러 대(서블릿컨테이너들)로 구성한다.
2. 한 서버에 문제가 발생하면 실행중인 서블릿을 다른 서버로 이전하여 사용자에게 문제 되지 않도록 해야한다.
=> 객체 직렬화를 활용하여 처리 => GenericServlet 클래스는 이런 상황을 고려하여 java.io.Serializible 인터페이스를 구현하였다,,!!! => 그래서 이 클래스를 상속 받은 서브 클래스로 serialVersionUID 를 설정해야한다.
private static final long serialVersionUID = 1L;
규칙은 서블릿이고 쓰기 편하려고 generic & http 서블릿쓰는 거임.
'[네이버클라우드] 클라우드 기반의 개발자 과정 7기 > 웹프로그래밍' 카테고리의 다른 글
[NC7기-75일차(8월9일)] - 웹프로그래밍 56일차 (0) | 2023.08.09 |
---|---|
[NC7기-74일차(8월8일)] - 웹프로그래밍 55일차 (2) | 2023.08.08 |
[NC7기-72일차(8월4일)] - 웹프로그래밍 53일차 (0) | 2023.08.04 |
[NC7기-71일차(8월3일)] - 웹프로그래밍 52일차 (0) | 2023.08.03 |
[NC7기-70일차(8월2일)] - 웹프로그래밍 51일차 (0) | 2023.08.02 |