JSP 독학 (3) JSP 구조, 기본 문법/구문분석, 오류 해결 TIP, 라이프사이클

productuidev·2023년 2월 15일
0

BE Study

목록 보기
8/9
post-thumbnail

JSP 독학 (3) JSP 구조, 기본 문법/구문분석, 오류 해결 TIP, 라이프사이클

출처 - Youtube IT핥기!


TIP : GitHub - Eclipse 연동 (간단한데 은근 귀찮은 것...)

7. 프로젝트(Dynamic Web Project) 구조와 동적서비스 개념

Dynamic Web Project 구조

예제 jsp02/ex02.jsp
1부터 10까지의 합

동적 서비스 이해 : 요청할 때마다 응답값이 변경된다
새로고침하여 요청할 때 console에서 응답을 보내주는 것을 확인 가능

JAVA 코드로 1부터 10의 랜덤한 숫자 합계를 처리한 것을 요청 시 응답
동적이다라는 개념이 명확하게 이해할 수 있음 (기본적인 정적 HTML을 이해한 후 JSP에서 톰캣과 연동하여 동적으로 처리된다)


8. 기본 문법 및 구문 분석 오류 해결 TIP

  • Scriptlet : Java 코드를 작성할 수 있는 영역(연산, 처리 기능 정의)
  • Expression : 표현식. 값을 출력 (처리, 연산 코드는 사용 불가)
  • Declaration : 선언문(멤버필드, 멤버 메서드 정의)

  • 서버에서 클라이언트로 동적 처리 시 연산, 처리되어 요청받은 것에 대해 출력하고자 하는 값들만 브라우저에 응답해줌

  • 구문 오류 시 해결 TIP : 작성한 코드에 문제가 없는데 빨간 줄(에러)가 뜬 경우에는 AXSVS
    전체선택 > 잘라내기 > 저장 > 붙여넣기 > 저장하면 정상적으로 나옴


9. JSP 파일이 처리되는 과정 / 실습

JSP Life-Cycle

JSP 파일이 클라이언트에서 요청을 받아서 처리하게 되기까지 처리해서 응답을 주는 그 과정들을 이해

  • JSP > Java 파일로 생성 > class 파일로 컴파일 > 컴파일 후에는 메모리에 Load (톰캣이 새롭게 객체 생성)
  • 기존의 JSP 파일이나 Java에 변경이 있으면 그 파일을 다시 메모리에 올려야 되기 때문에 메모리에 올라간 기존 객체를 삭제해야 함 (jspDestroy를 호출한 다음에 메모리에서 객체가 사라진다)
  • 서블릿 객체 제거 후 최초 요청과 동일하게 진행
  • 변경사항이 없이 요청할 때는 중간 컴파일 과정이 생략 (서비스만 동작)
  • 컴파일하게 되면 새로운 객체 생성 (변경이 없다면 과정 생략)

톰캣이 JSP 파일에 대해 서비스하는 과정 이해

서버(톰캣)과 클라이언트(브라우저)의 관계 및 역할 이해

정리할 내용

  • 최초 요청 시 동작과정
  • 최초 요청과 동일한 요청 시 동작과정
    기존 파일에 변경사항이 있을 때 (JSP파일이 수정된 경우) / 기존 파일에 변경사항이 없을 때
  • 서버 종료 시 톰캣의 동작과정

참고자료

JSP 동작원리 (간단히 정리된 버전)


  • 웹 브라우저가 웹 서버에 JSP를 요청
  • 웹서버는 JSP 확장자를 발견해서 JSP 컨테이너에 전달
  • JSP컨테이너는 .jsp 파일을 서블릿 프로그램(.java)으로 변환
  • JSP 컨테이너가 서블릿 프로그램을 .class로 만들고 이를 웹 서버에 전달
  • 웹 서버는 .class의 실행 결과를 웹 브라우저에 응답함. 웹 브라우저는 응답을 받고 동적으로 처리한 결과를 보여줌

출처 - https://hi5june.tistory.com/40 / https://jaehoney.tistory.com/41

JSP와 서블릿의 차이점은?

  • JSP의 내부 동작 과정
    1) JSP 파일이 실행되면 WAS는 (Web Application Server)는 내부적으로 JSP파일을 서블릿 파일로 변환
    2) WAS는 변환한 서블릿 파일을 동작하여 필요한 기능을 수행
    3) 생성된 데이터를 웹 페이지와 함께 클라이언트로 응답

  • JSP 문법 (위에 내용이 잘 정리된 자료)

1) 스크립 트릿 : <% %>

  • JSP 문서 안에 JAVA 코드를 넣기 위해 사용. JSP는 모든 것을 태그화하여 쓰는 것이 목적이므로 줄여가는 것이 좋다.
    2) 표현식 : <%= %>
  • 웹 브라우저에 결과 값을 출력하기 위해 사용
    3) 선언문 : <%! %>
    선언문에는 변수 선언이나 메소드를 선언하여 사용한다. 이 변수와 메소드는 JSP 페이지로부터 변환된 서블릿 클래스 멤버로 변환한다.
    4) 지시자 : <%@ %>
    JSP 페이지의 전체적인 환경 설정을 할 때, 즉 문서의 종류와 인코딩 방식을 지정하기 위해 사용한다.

출처 - https://sunnyroad.tistory.com/21


정리하고 서칭하다보니 자세하고 길어진 내용...

JSP 요즘 누가 사용하냐, 스프링부트 쓰면 JSP 안 쓴다, 레거시 등등의 말이 많지만.. 그러기 위해서는 읽어보면 좋은 자료 (프리랜서나 SI-금융,공공 쪽을 다녀본 사람들은 대부분 알 것이다..)

그러나 핀테크같은 서비스들은 대체로 자바스크립트 프레임워크들을 많이 도입한 거 같다. 현재 회사 서비스와 방향성이 얼추 비슷해보이는 뱅크몰이나 핀다 같은 사이트가 접속해보니 React나 Next.js로 만든거 같다.. (업권은 다르지만 대체로)

방향성처럼 쿨한 기술을 쓸 수 있었으면 좋았을텐데 어느 시점에 재구조화되면 가능할 이야기같지만,
과거 나이스나 VP에서 했던 B2B 제휴 서비스 경험들을 비추어볼 때... 만약 회사에서 무언가 변경되면 코어 서비스부터 변경될 가능성이 클 거 같다고 생각한다.
(현재 하는 서비스는 뱅킹과 합쳐지지 않는 한 제휴 서비스에 가까워서... 그 때 맡았던 서비스들도 코어보다 매출은 크지만 락인된 서비스들이다보니 몇년된 레거시를 그대로 가지고 갔었고 다시 만들기보다 새로운 신규 제휴처 위주로 확장되거나 사업적으로 계약이 연장될 경우에 리뉴얼하는 경우가 많았었다. 물론 같은 구조, 기능에서 화면만...)
그래서 사실 이전 경험 때문에 난 사실 회사에서 내가 하고 싶었던 업무는 하게 될 가능성은 없을 거 같고, 개인적으로 공부나 준비를 해서 그 다음 직장에서 할 수 있게 되지 않을까라 내심 생각중이다.….

당시에 IT서비스나 사업에 대한 이해가 없이 회의에서 디자인이나 퍼블리싱만 주장하던 나에게 우스갯소리로 임원분께서 "정대리는 김밥집을 해보라"고 하셨었는데.. 아마도 그건 창업을 해보면 알 것이다 이런 의미 아니었을까 싶기도 하다. JSP가 김밥천국이라면 React는 바르다김선생 같은 느낌이려나....

profile
필요한 내용을 공부하고 저장합니다.

0개의 댓글