Java EE 정리 01
25 Feb 2019
Reading time ~3 minutes
Java EE 정리 01 - Java EE, Servlet
Java EE의 등장 배경
- Oracle은 데이터 저장, 처리 그러나 화면을 만들 수 없음
- 데이터를 저장할 수 없는 Java SE와 DB를 이용하여 데스크탑 Application을 만들 수 있었음.
- CS프로그램을 설치, 유지보수를 위해선 출장이 필수적이었다.
- 지리적 문제점이 존재
- Web의 발달로 지리적 문제를 해결할 수 있는 Java EE 등장
- 클라이언트는 Web Browser를 통해서 업무 처리된 HTML만 전달받음
- 직접 가서 문제점을 해결하는 지리적 문제를 해결
Java EE(Enterprise Edition)
-
기업에서 사용하는 업무용 프로그램을 작성하기에 알맞은 Java 개발버전
- 업무를 Module로 구분하여 작성
- 모듈로 만들게 되면 결합도가 낮아짐
- 업무를 모듈로 개발하기 적합한 기술 이었던 EJB(Enterprise Java Bean)
-
Jave EE는 EJB, Servlet, JSP 등의 기능을 제공
-
Servlet, JSP는 Web에서 서비스하는 기능
- 동적인 HTML을 생성가능
- 개인화 서비스가능
- .war로 묶여서 Web Container(필수)로 배포
- 동적인 HTML을 생성가능
-
EJB의 단점은 무겁고 서비스를 하기 위해서 별도의 프로그램이 필요(EJB Server)
- .ear 파일로 묶여져서 EJB Server로 배포
- Session Bean, Entity Bean, Message Driven Bean으로 구분
- Session Bean - DB를 사용하지 않는 업무를 처리할 때
- Entity Bean - DB를 사용하는 업무를 처리할 때
- Message Driven Bean - Message를 보내서 수신한 클라이언트가 업무 처리를 하도록 만든 Bean(분산처리용)
- 무거운 EJB를 단순화한게 Spring Framework
-
Servlet, JSP는 Web에서 서비스하는 기능
- Container에서 서비스 된다.
-
WAS : Web Application Server
- Java EE의 모든 Spec을 서비스할 수 있는 프로그램
- weblogic(BEA)이란 SW가 대표적인 WAS 프로그램
- 그 외 websphere(IBM), JBoss(), 제우스(TMAX), OC4J(Oracle), …
- 톰캣은 EJB를 지원 안하기 때문에 WAS가 아닌 Web Container
-
Web Container : Java EE 중 Servlet/ JSP만 서비스할 수 있는 프로그램
-
Web Browser의 요청을 받아, Servlet과 JSP가 요청되면 Servlet/JSP를 HTML로 변환하여 응답하는 프로그램
- Web Container는 웹서버의 기능을 갖고 있다.
- ApacheTomcat가 대표적인 Web Container
-
Web Browser의 요청을 받아, Servlet과 JSP가 요청되면 Servlet/JSP를 HTML로 변환하여 응답하는 프로그램
Servlet
-
CGI(Common Gateway Interface)의 일종
- 일반 언어에서 웹서비스가 가능하도록 공통규약을 정의해 놓은 것
- 느리다
-
Java의 CGI는 Servlet
- 속도 개선한 FAST CGI
-
HTML과 언어가 혼합되어 복잡도가 상승한다.
- 디자이너와 개발자의 업무구분이 안되는 단점이 존재.
- 개발 속도가 느려 개발 기간이늘어난다.
- 개발자를 생산하는 시간이 오래 걸린다.
-
Thread로 처리하기 때문에 안정적
- 접속자가 많아도 안정적인 서비스가능
- 대규모 시스템에서 주로 도입
- 웹 컨테이너가 필요(Tomcat)
- Java SE에서 제공하는 모든 클래스를 쓸 수 있다.
- Java EE에서 배포하는
servlet-api.jar
가 존재해야 Servlet 개발이 가능- tomcat에 포함되어 있다.
- 주 사용 package는 javax.servlet, javax.servlet.http
Servlet 작성법
- Servlet파일을 생성, 작성
- 배포(Web Container)
- 일반 경로에 존재하는 앱을 웹 서비스가 가능하도록 Web Container(Server.xml)에 등록
- 제작되어 배포된 Servlet을 브라우저에서 호출할 수 있도록 DD(web.xml)에 등록
- Web Container 실행
- Web Browser를 열고 url을 입력하여 Servlet을 요청
Servlet 작성법 1
// 1.HttpServlet을 상속받는다.
public class Test extends HttpServlet {
// 2.요청방식에 따른 처리할 method를 Override
// tomcat(컨테이너)이 요청방식에 따라 doGet()이나 doPost()를 호출
// get방식
// -url 쿼리스트링으로 데이터 전달(0~255자까지 소용량 데이터,보안 안됨)
// -a태그 이동, location.href로 이동, meta태그로 이동, form태그 method가 GET일 때
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
// HttpServletRequest req - 요청 처리
// HttpServletResponse resp - 응답 처리
}
// post방식
// -http 헤더로 정보를 전달(보안)
// -form태그의 method가 POST일 때
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
// 3. 응답방식을 설정한다.(MIME Types 설정)
// -접속자에게 제공할 서비스의 형태를 설정(Container의 역할)
// -거의 대부분 HTML을 응답해줌
resp.setContentType("text/html"); // 만들어지는게 HTML
// 4. 응답하기위한 출력스트림 얻기
PrintWriter out = resp.getWriter();
// 5. 응답할 내용을 생성
out.println("<html>....");
out.flush();
}
}
Servlet 작성법 2
-
배포(Web Container)
- Java Resources에 있는 내용들이 배포하면 classes로 들어가게 된다.
- 자바로 웹서비스를 하기 위한 폴더 구조
- DD(Deployment Descriptor) == web.xml
Servlet 작성법 3
- 일반 경로에 존재하는 앱을 웹 서비스가 가능하도록 Web Container(Server.xml)에 등록
-
server.xml
- Context의 path - 브라우저에서 호출할 경로
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
...
<Context docBase="html_prj" path="/html_prj" reloadable="true" source="org.eclipse.jst.jee.server:html_prj"/></Host>
Servlet 작성법 4
- 제작되어 배포된 Servlet을 브라우저에서 호출할 수 있도록 DD(web.xml)에 등록
<servlet>
<servlet-name>객체명</servlet-name>
<servlet-class>[객체화할 서블릿클래스(패키지명까지 기입)]</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>객체명</servlet-name>
<url-pattern>[서블릿을 브라우저에 호출할이름]</url-pattern>
</servlet-mapping>
Servlet 작성법 5
-
Web Container 실행
- Tomcat bin안에 있는 startup.bat을 실행(Windows)
Servlet 작성법 6
- Web Browser를 열고 url을 입력하여 Servlet을 요청(GET)
localhost:8080/[Server.xml에 정의된 Path]/[DD에 정의된 url 패턴]
- eclipse를 사용하면 2~6작업은 자동으로 수행된다..