56. 웹 애플리케이션 자바 표준 기술 JavaEE 도입
-JavaEE 기술 소개
-JavaEE 버전 별 하위 기술 버전
-JavaEE 구현 서버 및 Servlet 컨테이너 관계
-Servlet API 사용법
JavaSE || JavaEE || JavaME
Java 제품 |
Java SE (Standard Edition) | JRE(Java Runtime Environment) -> 자바 App 실행과 관련된 S/W : JVM + 자바 라이브러리 + 문서 + .. |
Server JRE = JRE - 데스크톱 관련 기능 + 서버쪽에서 필요한 기능 | ||
JDK(Java Developoment Kit) = JRE + 개발도구 개발도구 : 컴파일러 ,디버거, 프로파일러 |
||
Java EE (Enterprise Edition) | 기업용 App 제작과 실행에 필요한 도구와 라이브러리 , API 제공 -> 많은 수의 동시사용자 처리: C/S 기술이 필요 -> Servlet/JSP, JSTL,JSF -> 자원을 효율적으로 관리 : 자원관리, 풀링기술 -> 트랜젝션관리, DB커넥션풀 -> 시스템 확장에 용이: 분산 시스템 기술 -> EJB, WebService |
|
Jave ME (Micro Edition) | 임베디드(embedded) 시스템 개발 |
JavaEE : 웹 애플리케이션, 분산 App 등과 관련된 표준 API 제공
1. JavaEE 이전
회사 별 프로토콜이 달라 회사간 상호호환이 안 됐음.
문제점:
1. 회사 별로 프로토콜이 다르다 -> 상호 호환 운영을 할수없다, 유지보수가 어렵다. 다른 회사로 옮기면 다시 배워야한다.
2. 회사별로 App 제작 방법이 다르다 - > App 호환되지 않는다. 즉 다른 서버에서 실행할 수 없다.
2. JavaEE 등장
JavaEE 명세에 따라 Application server 및 Java Component(App) 구현
Application server : 서버 교체가 쉽다.
Java Component(App) : 앱 개발이 일관성이 있다. -> 회사나 서버에 구속 받지 않는다.
Java EE와 Application Server 의 관계
Java EE | ||||
웹 APP 제작기술 |
Servlet JSP JSF JSTL |
웹 App 기술명세만 구현 (=Servlet Container) *tomcat(Apache)(유) Jetty(유) Resin(유/무) *undertow(무) |
JAVA EE 기술 명세를 100% 구현하는 서버 (Java EE Implements(구현체) | |
분산 컴포넌트 제작기술 |
EJB JMS JTA Java Persistence Java Mail |
분산 컴퓨팅 기능 *RPC->RRM - COBRA->SWESERVICE *RPC->RMI->EJB->REST API (XML/JSON/HTTP) |
(유료) *JEUS(TmaxSoft) *WebLogic(Bea->Oracle) *WebSphere(IBM) *JBoss(RedHat) (구현한 app 테스트용으로 사용) GlassFish(Oracle) Geronemo(Arpache) |
|
웹서비스제작기술 | JAX-RS JAX-WS JAX-RPC |
. . "Web Application Server(WAS)" |
https://www.oracle.com/java/technologies/javaee/javaeetechnologies.html#javaee7
Java EE 버전- 하위 기술 버전 - 서버 버전
Java EE와 Jakarta EE
Java EE : Oracle에서 유지보수 하던 것을 Eclipse재단에 넘김, JakartaEE로 이름 바뀜 (2017.9)
구글이 오라클이랑 자바로 10년 싸웠었음 ...
글고 구글이 코틀린이 자바컴파일파일 100% 호환가능
Web Application과 Jakarta EE
Web Application 개발 준비 - Servlet Container 설치
1. Servlet Container 설치 - > tOMCAT 9.X 설치 (10D은 자카르타여서, 시중은 아직 10까지 안감) zip파일 압축풀기 -> ~/server/apache-tomcat-.../ (유저 밑에 서버폴더)
https://tomcat.apache.org/download-90.cgi
2. tomcat 서버 설정
- 관리자 등록 : config/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="1111" roles="manager-gui,admin-gui"/>
3. PATH 환경 변수(시스템)에 bin 폴더 등록
window -> 시스템 환경변수 편집
mac OS -> .zshrc 편집
**유닉스는 확장자 개념이 없고 통으로 파일 이름으로 봄, 파일 앞에 ./도 붙여야함
tomcat 시작 ~~~
Web Applilcation 개발 준비 - web app 프로젝트 생성
1. 프로젝트 폴더 생성
bitcamp-study/eomcs-servlet
2. Maven 표준 디렉토리 구조로 전환
> gradle init
PS C:\Users\bitcamp\git\bitcamp-study\eomcs-servlet> gradle init
Starting a Gradle Daemon, 4 busy Daemons could not be reused, use --status for details
Select type of project to generate:
1: basic
2: application
3: library
4: Gradle plugin
Enter selection (default: basic) [1..4] 2
Select implementation language:
1: C++
2: Groovy
3: Java
4: Kotlin
5: Scala
6: Swift
Enter selection (default: Java) [1..6] 3
Generate multiple subprojects for application? (default: no) [yes, no]
Select build script DSL:
1: Groovy
2: Kotlin
Enter selection (default: Groovy) [1..2]
Select test framework:
1: JUnit 4
2: TestNG
3: Spock
4: JUnit Jupiter
Enter selection (default: JUnit Jupiter) [1..4]
Project name (default: eomcs-servlet):
Source package (default: eomcs.servlet):
Enter target version of Java (min. 7) (default: 17):
Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no]
> Task :init
Get more help with your project: https://docs.gradle.org/8.1.1/samples/sample_building_java_applications.html
BUILD SUCCESSFUL in 54s
2 actionable tasks: 2 executed
3. eclipse 프로젝트로 전환하기
build.gradle 파일 편집
id "eclipse"
plugins {
id 'java'
id 'eclipse'
}
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1'
implementation 'com.google.guava:guava:31.1-jre'
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
tasks.named('test') {
useJUnitPlatform()
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
sourceCompatibility = '17'
targetCompatibility = '17'
}
eclipse {
project {
name = "servlet-app"
}
jdt {
sourceCompatibility = 17
targetCompatibility = 17
javaRuntimeName = "JavaSE-17"
}
}
cd servlet-app gradle eclipse
eclipse import (app까지 가서)
4. Servlet/JSP API 추가
build.gradle 편집
gradle eclipse 다시 하기
HelloServlet 클래스 추상 클래스 구현다하기
Web Application 제작
-HelloServlet 클래스 추상 클래스 구현
Web Application 빌드 -> 배포 (deploy)
5. war 생성 플러그인 추가 및 설정
build.gradle 편집 후(war) gradle build
Web Application 실행
http://localhost:8888/servlet-app/hello
servlet-app : context path = web app.root path
/hello: servlet path
프로젝트
빌드파일 수정
마이앱 서버 지울거 지우고 dao에 애노테이션 지우기
InitServlet 클래스 생성
56. JavaEE 도입
스트링부트는 resouce 밑에 static (또는 templetes) 밑에 index.html 두는거고
일반적인 웹프로젝트는 webapp 밑에 indes.html 두는거고
init servlet
*톰캣 서버 디렉토리 구조
CATALINA_HOME/
bin/ 톰캣서버 실행 파일(.abat, .sh ...)
conf/ 설정파일
lib/ 자바 라이브러리파일(.jar)
logs/ 실행 중 출력하는 내용을 보관하는 파일(.log)
temp/ 실행 중 업로드 파일을 임시 보관하거나 임의의 임시파일을 두는 폴더
webapps/ 웹애플리케이션 배포 폴더
work/ JSP파일을 가지고 서블릿 소스를 만들 때 사용하는 폴더
*Eclipse IDE에서 톰캣 서버 테스트 환경 구축하기
서버의 gradle 수정
plugins {
id 'java'
id 'eclipse-wtp'
id 'war'
}
// 자바 웹 개발 도구에서 사용할 값을 설정한다.
wtp {
facet {
facet name: 'jst.java', version: '17'
facet name: 'jst.web', version: '4.0'
}
component {
//contextPath = '/web'
//deployName = 'web'
}
}
}
war {
archiveBaseName = "myapp"
}
'[네이버클라우드] 클라우드 기반의 개발자 과정 7기 > 웹프로그래밍' 카테고리의 다른 글
[NC7기-74일차(8월8일)] - 웹프로그래밍 55일차 (2) | 2023.08.08 |
---|---|
[NC7기-73일차(8월7일)] - 웹프로그래밍 54일차 (0) | 2023.08.07 |
[NC7기-71일차(8월3일)] - 웹프로그래밍 52일차 (0) | 2023.08.03 |
[NC7기-70일차(8월2일)] - 웹프로그래밍 51일차 (0) | 2023.08.02 |
[NC7기-69일차(8월1일)] - 웹프로그래밍 50일차 (0) | 2023.08.01 |