• Home
  • About
    • Young's Github Pages photo

      一日不作一日不食

    • About
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

Java EE 정리 01

25 Feb 2019

Reading time ~3 minutes

Java EE 정리 01 - Java EE, Servlet


Java EE의 등장 배경

01

  • 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(필수)로 배포
    • 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
  • 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

02

Servlet

  • CGI(Common Gateway Interface)의 일종
    • 일반 언어에서 웹서비스가 가능하도록 공통규약을 정의해 놓은 것
    • 느리다
  • Java의 CGI는 Servlet
    • 속도 개선한 FAST CGI
  • HTML과 언어가 혼합되어 복잡도가 상승한다.
    • 디자이너와 개발자의 업무구분이 안되는 단점이 존재.
    • 개발 속도가 느려 개발 기간이늘어난다.
  • 개발자를 생산하는 시간이 오래 걸린다.
  • Thread로 처리하기 때문에 안정적
    • 접속자가 많아도 안정적인 서비스가능
    • 대규모 시스템에서 주로 도입
    • 웹 컨테이너가 필요(Tomcat)
  • Java SE에서 제공하는 모든 클래스를 쓸 수 있다.
  • Java EE에서 배포하는 servlet-api.jar가 존재해야 Servlet 개발이 가능
    • tomcat에 포함되어 있다.

03

  • 주 사용 package는 javax.servlet, javax.servlet.http

04

Servlet 작성법

  1. Servlet파일을 생성, 작성
  2. 배포(Web Container)
  3. 일반 경로에 존재하는 앱을 웹 서비스가 가능하도록 Web Container(Server.xml)에 등록
  4. 제작되어 배포된 Servlet을 브라우저에서 호출할 수 있도록 DD(web.xml)에 등록
  5. Web Container 실행
  6. Web Browser를 열고 url을 입력하여 Servlet을 요청

Servlet 작성법 1

05

// 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

06

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)

07

Servlet 작성법 6

  • Web Browser를 열고 url을 입력하여 Servlet을 요청(GET)
localhost:8080/[Server.xml에 정의된 Path]/[DD에 정의된 url 패턴]
  • eclipse를 사용하면 2~6작업은 자동으로 수행된다..


Java EEServlet