JSP - 1. OT

갓김치·2020년 11월 18일
0

JSP+Spring

목록 보기
1/43

공부법

  • 원리와 구조에 집중 : 코드 짜는 방식에 집착하지말고 이 코드가 어떤 구조 하에 동작하고있는지 전체구조를 볼 것
  • 용어 정리하는 습관 : 자기만의 문장으로 정리할 것
    • 의사소통: 팀단위 개발에서 가장 중요한 것
    • 잘 의사소통하려면 필드에서 사용하는 용어를 잘 알아야함

개념 비교

라이브러리 vs. 프레임워크

  • 대부분 라이브러리나 프레임워크는 비슷한 원리나 구조로 작동한다
  • 원리나 구조를 미리 익혀놓으면 어느 프레임워크나 api를 만나도 크게 당황할 게 없다
  • 어떤 프레임워크가 주어지더라도 동작원리만 안다면 매뉴얼북 하나만 있어도 쓸 수 있다

라이브러리

  • When you use a library, you are in charge of the flow of the application.
  • 예: jQuery

프레임워크

  • When you use a framework, the framework is in charge of the flow.
  • 예: 부트스트랩 (CSS 플랫폼), ibatis, log4j (로깅 프레임워크)

웹서버 vs. WAS

  • 정적 프로그래밍과 동적 프로그래밍을 할 때 어떤 언어를 써야할까?
  • 클라이언트와 서버단을 만들때 무슨 차이가 있을까?

쿠키, 세션

  • 서버사이드 방식으로 세션과 쿠키를 사용할때 사용할 수 있는 스펙은 무엇이 있을까?
    • 서블릿
    • JSP

서블릿컨테이너 vs. JSP컨테이너

  • 어떤 경우에 서블릿컨테이너를 사용하고 어떤 경우에 JSP컨테이너를 사용할까?????
  • 서블릿이 있는데 왜 굳이 JSP를 써야할까?

서블릿컨테이너

JSP컨테이너

쌤이 하신 질문 및 기타 내용

왜 톰캣을 설치할까?

수업 진행 순서

1. 개발환경 구축하기

2. 서버프로그램 구현하기

2-1. 서버프로그램 구현 기술

서블릿프로그래밍

JSP 표준구성요소

  • 서블릿의 문제점, 단점, JSP사용을 통한 보완법
  • JSP 스펙 뜯어보기

2-2. 서버 프로그램 개발

모델1 vs. 모델2

mvc

EL, JSTL, 커스텀태그

  • 커스텀태그를 사용해서 jsp내에서 코드의 가독성을 높인다
  • 스크립틀릿 없이 서버사이드 코드 사용가능

필터

  • 역할: 요청과 응답의 전후처리
    • 요청을 중간에 인터셉트해서 요청에 대한 전처리를 함
    • 서버사이드에서 일을마치고 응답 후처리도 함
  • 요청의 일반적특성 전처리를 wrapper로 대체
  • 보안

이벤트처리

  • 클라이언트사이드 이벤트 : 버튼누르고 뿅
  • 서버사이드 이벤트 : 웹 어플리케이션 이벤트

단위 테스트

  • 계층형구조의 핵심: 레이어 사이의 의존관계
    • Dao를 사용하기위해 DAO를 의존하는 Service가 있어야함
    • Service를 사용하려면 Service를 의존하는 Servlet
    • Servlet 사용하려면 jsp가 있어야하고.......
    • -> 단위테스트 프레임워크 junit이 필요한 이유임

3. 공통모듈 구현하기

3-1. 공통모듈 구현 기술

Maven

  • maven: xml로 코드한줄짜놓으면 우리가 jar를 일일이 다운받지않아도 알아서 해줌
    • 빌드관리툴
    • 의존성 관리: A가 B를 사용한다 = A는 B에 의존한다, jar파일 관리를 말함

SVN

  • SVN은 중앙집중형
    • 분산관리형 프로토콜 GIT
    • GIT으로 보강하실 예정

3-2. 공통모듈 개발

결합도와 응집도

AOP: OOP 단점 개선

  • 자바는 객체지향적프로그래밍을 지원하는 언어이지 객체지향 ONLY 언어는 아니다
    • -> 그럼 자바로 비객체지향적 개발도 가능하다는 것

4. 배치 프로그램 구현하기

  • 실시간처리
    • 커맨드와 처리를 같이
  • 배치처리
    • 아니면 커맨드와 별개로 일괄처리를 하면서 실시간처리를 방해하지않고,, 데몬스레드로,, 스케쥴러랑같이,, 처리할것이냐
    • ex) 사이트 탈퇴 후 탈퇴 시점으로부터 1주일 후에 db에서 자료가 삭제되어야함, 관리자가 일일이 체크하지 않아도 자동으로 삭제될 수 있게 개발.

개발 환경 구축

  • 지금은 jdk1.7인데 jdk1.8로 셋팅할것
  • 톰캣8은 jdk1.8 (톰캣7,8둘사이의 차이는 없으나 필요한 jdk 버전의 차이)

환경변수 설정

  • 탐색기에서 sysdm.cpl

JDK1.8을 JAVA_HOME 으로 설정


톰캣 위치 CATALINA_HOME 으로 설정

윈도우 cmd

  • bin 폴더 내의 bat파일 이용한서버 시작, 종료
    • startup.bat (st+TAB) : 시작
    • shutdown.bat (sh+TAB) : 종료

톰캣 cmd

  • 8080 포트넘버가 이미 다른 곳에 할당되어 있어서 서버 시작때 예외발생

톰캣 폴더 뜯어보기

bin: binary file

  • st, sh같은 명령어를 실행시킬수있는 파일이 존재하는 곳
    • bat: 윈도우
    • sh: 리눅스, 유닉스

config: 환경설정값

  • 대부분 xml인 이유
    • xml은 언어를 타지않는다 (c언어, 자바, 파이썬 등에서 공용으로 사용 가능)
  • xml과 json: 자바와 js사이에 데이터 교환을 위한 공용어 (한국어, 일본어 사이의 영어)
    • json
      • xml보다 가벼워 데이터타입으로 주로 사용하나, 아직도 xml로 퍼블리싱하고 있는 곳도 많다
      • json에 집착하기보다는 json의 장점이나 사용하는 이유에 집중하는 것이 중요
    • 오라클 관리자 모듈에서 이미 8080을 쓰고있기때문에 우린 80으로 수정할것

여기서 잠깐~~ 포트넘버란 뭘까요

  • 0~65535: 포트넘버의 범위
  • 0~1023: well-known port 이미 할당되어있는 기본번호
    • 기본번호이기때문에 생략 가능함
    • 80은 http에 할당되어있음
  • 기본 포트넘버 예시
    • 클라이언트가 서버에 있는 s1이라는 서비스를 찾고싶다.
    • s1은 기본포트넘버(80), s2는 기본아닌 포트넘버(1521)를 쓰고있다면?
    • s1을 찾기위해 IP:80라고 써야하지만 80은 기본 포트기때문에 :80을 생략하고 쓸 수 있음 - 80을 써도 다시 사라지고 ip주소만 남음
    • s2를 찾기위해서는 IP:1521를 꼭 사용해야함. 기본아니라 포트넘버 생략불가능
  • IP: 물리적 주소 체계
  • PORT: 논리적 주소 체계

lib

  • 톰캣도 자바로 만들어진 녀석
  • servlet-api.jar, jsp-api.jar -> 이 두개 파일 지우면 톰캣 구동 불가

log

  • 로그파일

temp

  • 임시

webapps ★★

  • was가 구동할 어플리케이션이 들어있음
  • 폴더날리면 동작하지않음
    • 다섯개의 어플리케이션(컨텍스트)가 운영되고 있음
    • server.xml을 보면 기본베이스가 webapps로 설정되있는 것을 볼 수 있음
  • (URL) localhost/examples/
    • 모든 자원은 파일로 되어있고 파일시스템상의 path를 통해 접근해야함
    • 하지만 localhost에 이미 webapps(DOC 베이스)까지 포함시켰음
      • 이유: 클라이언트에게 전부 다 개방할 수 없기때문에 가짜주소체계(localhost)를 보여줌
      • URL: 가상의 주소체계, 클라이언트에게 개방할수있는 파일시스템 주소

클라이언트가 되어서 톰캣으로 테스트하기

  • 브라우저 (웹에이전트) : 클라이언트가 유일하게 사용하는 툴
  • 클라이언트가 브라우저를 통해 요청시
    • 도메인(naver.com) 으로 요청 -> dns 서버 (ip로 변환) -> 다시 브라우저 -> 받은 ip주소로 브라우저가 서버로 요청 전달

IP 개념잡기

  • IP: 물리적 주소체계 (PORT: 논리적 주소 체계)
  • ipv4
    • 192.168.405.21
    • 각자리 8비트, 2^8-1까지해서 255까지 숫자가올라감, 8비트4자리 32비트 그래서 2의32승-1개의 ip밖에 못만듬)
  • ipv6
    • 4:4:4:4:4:4:4:4
    • AF: ... 16진수도 들어갈 수 있음 16진수 1개 4비트 2개 8 비트 필요 4개의 16진수 표현하기위해서 16비트 필요?
    • 전체섹션 다 표현하려면 16비트 X 8 자리 = 128비트
    • 표현범위 2^128 -1 개 까지
  • localhost == 127.0.0.1(loopback주소) == 192.168.45.28 (cmd - ipconfig)
  • 우리가 쓰는 ip는 A클래스, A클래스는 동일클래스내에서만 요청가능
profile
갈 길이 멀다

0개의 댓글