JSP 2. 개발환경 구축

zhyun·2020년 11월 18일
0

JspSpring

목록 보기
3/39

수업내용 20.11.18(수)

  • C8/S 시스템 및 웹 프로그래밍 개요
  • 개발 환경 구축
  • WS와 WAS의 역할 및 N-tier 구조
  • 서블릿 스펙 개요

개발환경구축

  1. jdk 1.7을 1.8로 변경
    : 톰캣8은 jdk 1.8 (톰캣 7,8 차이는 없고 필요한 jdk 차이)
    : cmd창

http://tomcat.apache.org/whichversion.html


포트번호 80으로 바꿈

톰캣 폴더 (%catalina_home%)

bin

:binary file

  • st,sh 명령어를 실행시킬 수 있는 파일이 bin에 존재
  • bat파일 => 윈도우
  • sh파일 => 리눅스,유닉스

config

: 환경설정값

  • 설정파일을 왜 xml로 만들까?
    : c언어,자바,파이썬 등 언어를 타지않는다..
  • json
    : 왜때문에 비동기에 json을 사용할까?
    : 요청을 보내는쪽은 자바스크립트
    : 장점 -> 경량 (xml과 비교했을때)

lib

  • libaray 약자
  • 폴더 들어가보면 jsp-api.jar , servlet-api.jar(http서블릿있음) 파일존재 => 이두개파일을 지우면 톰캣구동이 안됨

log

  • 로그파일

temp

  • 임시

webapps★

  • 톰캣이 갖고있는 폴더중에서 제일 중요★
  • 서버안에 어플리케이션이 있어야하는데 webapps폴더에 존재
  • 안에 있는 폴더가 어플리케이션이면서 컨텍스트 운영
    : was(webapplicationserver)가 구동할 어플리케이션
    : 폴더들 없으면 작동불가

  • localhost뒤에 webapps 생략
  • server.xml에 기본베이스가 webapps로 설정
  • localhost는 webapps(DOC베이스)까지 포함
    => URL (가상의 주소체계, 클라이언트에게 개방가능한 파일시스템 주소)

WEB-INF

  • WEB-INF안에 있는것들은 클라이언트가 외부로부터 접근할수없다
  • 클래스패스 이후에 모든 경로가 나와야한다
  • 소스 수정하면 컴파일 다시해야하고 클래스패스 다시 잡아줘야함
  • 클래스를 검색할때 사용하는 위치
  • classes : 클래스패스

port

  • 사용범위
    : 0~65535
    : 0~1023 => well-known (이미 할당되어 있는 번호)
  • 기본포트넘버를 썼을때와 (none기본)기본아닌 포트번호 사용의 차이점
    : 예) IP:80(기본), IP:1521
  • 기본은 생략가능 (80) 기본이 아닌것은 생략불가능

IP(물리적체계주소) vs PORT(논리적주소체계)

서버

  • 80이라는 포트를 감지할 수 있는 데몬스레드를 개발해야한다
  • 서버의 역할은?
    : 클라이언트의 요청을 대기한다
    : 포트에 요청이 들어오면 응답을 보낸다 (요청분석, 컨텐츠 분석..)

웹서버

  • 웹서버계열(아파치톰캣등, 정적임)과 웹어플리케이션서버의 차이
  • 톰캣이 왜 필요한지? 정적인,동적인처리를 다 수용할 수 있다.
  • 정적 요청
    : 클라이언트가 image,mp3,html,js,css를 서버에 요청
    : 요청한 파일을 미리 처리할 수 있음
    : 종류 => 아파치 등등..
    : 요청이 들어오면 분석해서 파일이 있나없나 확인
    : 서버에 자원이 있으면 스트림으로 변환 => 응답 보냄
    : 서버에 자원이 없으면 404 NOT FOUND 응답

CGI

  • 동적요청
    : 클라이언트가 주가현황,멜론차트,날짜 등을 서버에 요청
    => 동적인 요청을 처리할 수 있는 기능(CGI방식)을 부여해야함
  • CGI방식
    : 요청 받는 순간 동적 요청 처리 가능한 어플리케이션 구동 => 응답 보냄
    : 1개의 요청당 1개의 프로세스 실행 (단점:자원낭비)
    : (ex) 동시접속자가 많아서..

확장CGI 방식

  • 요즘에 사용하는 방식
  • 1개의 요청당 1개의 스레드
  • 멀티쓰레드 (자원소모를 방지), 동시처리 요청개수 증가
  • 사용할수 있는 스펙이 다양함 (PHP, ASP, JSP..)
  • 동적인 요청이오면 웹서버가 처리할 수 없으니 뒤에 있는 was한테 위임
  • 스레드에서 응답코드 만들고 웹서버에게 전달 => 웹서버는 받아서 클라이언트에게 전달
  • (ex) KTX예매 => "앞에 0000명 대기한다 어찌구 저찌구"
  • 확장CGI를 위해 서블릿과 jsp 스펙을 사용하는 이유
    • 자바언어를 기반으로 운영
    • 자바언어 장점
      • 이식성이 좋다 (버츄얼머신때문에), 재사용성, 유지보수
      • 버츄얼머신만 있다면 똑같은 어플리케이션을 사용할 수 있다
      • 개발할때 필요한 소스들을 끌어다 쓰기 쉽다 (개발이 쉽다)
      • api 범위가 넓다

웹어플리케이션서버(WAS, WebApplicationServer)

  • 동적인 요청 (주가현황,멜론차트,베스트셀러 등..)
  • WAS 역할
    : 웹어플리케이션의 운영
  • 톰캣이 요청 확인하는 방법
    • url-pattern확인 => servlet-name확인
    • 클래스의 싱글톤 객체가 생성됐는지 확인 후, 없다면 객체생성
    • 콜백메서드 호출해서, doGet실행

티어 Tier

  • 클라이언트 서버시스템의 구조 (Peer 양끝단의 단말)
  • 정적인 요청 처리 : 2개의 Tier 필요 (요청,웹서버)
  • 동적인 요청 처리 : 3Tier 필요 (요청,웹서버,WAS)
  • 동적인 웹어플리케이션 요청 처리 : N-tier 필요 (요청,웹서버,WAS,DB)
    • (ex) 베스트셀러목록 => DB필요 DB까지 4가지
    • 위와 같은 경우 4Tier => N-Tier구조
  • 동적인 어플리케이션 구동을 위해 적어도 N-Tier이상이 필요함

어플리케이션

standalone application

  • 스탠드어론어플리케이션
  • 초급프로젝트, 네트워크 안씀
  • 메인클래스 -> 메인메서드 -> 메인쓰레드

웹어플리케이션

  • 서버가 있어서 웹개발자가 쉽게 개발
  • 메인쓰레드를 톰캣(was)을 통해서 시작할수있어야한다.

톰캣으로 테스트

  • 주소체계
    IP:port/depth

  • 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 => 16 * 8 = 128비트 필요
    16진수를 표현하기 위해 4개 비트가 필요함
    4개의 16진수를 표현하기위해서 16개 비트가 필요함

  • 루프백어드레스
    주소창에 입력
    localhost or
    http://127.0.0.1/ or
    http://192.168.45.42:80
    => 나의 ip주소 뒤에 포트번호 붙임


2020.11.19 목요일

  • 파이썬은 컴파일 단계 생략

클래스패스

  • 클래스 검색할 때 시작위치
  • 클래스패스 이후부터의 모든경로를 완전한 형태(qualified name)로 사용해야한다
  • 특정클래스를 찾아가는 경로
  • '-classpath' 사용

서블릿 vs jsp

  • 차이점?
    : 서블릿으로 개발하면 불편.. 해야될게 많아서
    : jsp는 라이프사이클만 하면되니까 나머지는 톰캣이 해줌
  • 서블릿 라이프 사이클
    : 작성하고, web.xml 매핑해서 컴파일 해야되고..
  • jsp 라이프 사이클
    : 개발자가 jsp를 작성하면 끝, 컴파일 안해도 됨 (톰캣이 해줌)
  • jsp는 곧 서블릿이다 (기본으로 깔고 가야댐)
    : JSP와 서블릿을 운영할때 톰캣의 차이??
  • 컨테이너 (서블릿컨테이너, jsp컨테이너)
    : 컨테이너안에서 관리되는 컨퍼런트를 표현하게하고 죽게하고 작업을 시키는것 (라이프사이클)
profile
HI :)

0개의 댓글