본문으로 건너뛰기

IntelliJ IDEA로 JSP 프로젝트 생성


IntelliJ IDEA 로 JSP Project를 생성해 보도록 하겠다.

프로젝트 요구사항

  • IntelliJ
  • JDK
  • Tomcat

Java 프로젝트 생성

IntelliJ를 실행 후 새 프로젝트를 클릭해 준다.

Java 모듈 선택 후 다음으로 넘어간다.

템플릿을 따로 설정하지 않으므로 다음으로 넘어간다.

프로젝트 이름과 프로젝트 위치를 지정 후 완료를 눌러준다.

info

IntelliJ의 경우 프로젝트 이름으로 작성된 디렉토리가 생성되지 않기 때문에 프로젝트 위치에 프로젝트 생성 경로\프로젝트 이름 으로 지정하게되면 IntelliJ가 알아서 프로젝트 위치에 서술된 프로젝트 이름으로 변경시켜준다.

위에서 프로젝트 위치에 강제로 디렉토리 위치를 지정했음으로 해당 이름으로 디렉토리를 생성한다는 컨펌창이다 Create를 눌러주면된다.

info

C:\Users\ruddms936\Desktop 경로에 JSP 디렉토리가 생성된다.

Web Services 추가

현재 생성된 프로젝트는 일반 Java 프로젝트이다. 여기에 Java EE의 Web Services를 추가해줘야 한다.

모듈에서 오른쪽 클릭 후 프레임워크 지원 추가 클릭.

  1. Java EE에서 웹 서비스 체크
  2. Generate sample server code 체크 해제
    • 샘플 서버 코드를 생성할 필요가 없음
  3. Version에서 Apache Axis 선택
    • Apache 서버를 사용함
  4. Libraries에서 Set up library later 선택
    • Tomcat이 설치되어 있음으로 굳이 필요하지 않음
    • 추후, 필요한 라이브러리만 설치하는 전략으로 진행

이후 확인 버튼 클릭

그럼 아래 구조와 같이 프로젝트가 생성된다.

필요 없는 파일 제거

server-config.wsdd 는 사용되지 않는 파일이므르 삭제합니다.

생성된 웹 서비스 프로젝트의 .\WEB-INF\web.xml 파일에는 IDE에 의해 굳이 필요하지 않은 스키마를 내장하고 있습니다.

추후, 유지보수를 저렴하게 하기 위해 아래와 같이 바꾸어 줍니다.

info

만약, 아래와 같이 수정하게 되면 기능 동작에는 문제가 없지만 web.xml 에서 servlet-mapping 등에 대한 자동완성 지원이 안되며 IntelliJ에서 Servlet 생성 시 자동으로 web.xml 에 servlet-mapping 해주는 기능 등 제약을 받게 됩니다.

Tomcat 설정

오른쪽 상단의 구성 추가... 클릭

좌측 상단의 + 버튼을 눌러 Tomcat Server로컬 을 선택해준다.

IntelliJ에서 Tomcat을 최초 설정하는 경우 Tomcat의 경로가 지정되어 있지 않기 때문에 경로를 지정해줘야한다. 구성 버튼을 클릭.

로컬 PC에 설치된 Tomcat의 경로를 지정해 주도록 한다.

Tomcat Home만 지정하면 Tomcat base directory은 자동으로 할당된다. 이후 확인을 클릭한다.

  1. 해당 Run 이름이다.
  2. -Dfile.encoding=UTF-8 를 추가해야한다.
    • IntellJ VM Option에서 하는건 JVM의 인코딩 설정이고 Tomcat내부에서 한글이 깨지지 않고 출력하기 위해서는 위와 같이 설정해 줘야 합니다.

      ex: System.out.println("안녕"); 의 코드가 깨지지 않고 출력됨

    • 202.7319.50에서 하는 인코딩은 services에서 나오는 인코딩을 모두 담당하는것이고 IntellJ의 Tomcat 실행구성에서하는 인코딩은 Tomcat안에서 뱉는 문자를 UTF-8으로 인코딩 해주는 것이다.
  3. 해당 Run 에서 사용되는 Tomcat의 포트번호 이다.

현재까지는 Tomcat Service의 트리거만 작업했을 뿐 IDE에서 작업한 코드의 결과물을 Tomcat에 배포작업을 구성해야 실제로 작성된 코드가 Tomcat을 이용하여 실행된다.

배포 탭을 클릭 후 오른쪽의 + 버튼에서 아티팩트를 클릭한다.

여기서 나오는 아티팩트란?

IntelliJ 내부 인코딩을 통해 산출되는 Build Files를 의미한다. 현재 프로젝트는 Web Service 이므로 *.war 확장자로 배포되면 된다.

똑똑한 IDE가 알아서 *.war 형식의 아티팩트를 만들어 줍니다.

해당 아티팩트가 궁금하면 Shift + Ctrl + Alt + S 를 눌러 상세히 조회가 가능합니다.

info

애플리케이션 컨텍스트는 Tomcat에 배포되는 경로를 의미합니다.

현재 naming 대로 이면 아래와 같이 파일이 생성된다고 가정할 수 있습니다.

만약 Tomcat 실행 후 작업한 파일은 바로 보고 싶으시면 애플리케이션 컨텍스트에 / 만 입력하면 됩니다.

caution

IntelliJ에서 실행되는 Tomcat은 실제 Tomcat과 경로를 공유하지 않습니다.

모두 지정 후 확인 버튼을 클릭 후 Tomcat을 실행 해봅니다.

포트번호 8080의 JSP_war_exploded의 경로로 정상적으로 출력됨을 확인할 수 있습니다.

Servlet 생성

src는 Java 코드 및 서블릿이 저장되는 경로이다. src 우클릭후 새로작성 → 새 서블릿 생성을 클릭한다.

Name을 지정후 확인 버튼을 클릭한다.

info

Create Java EE 6 annotated class를 체크하면, annotation방식을 사용하겠다는 뜻이다. 귀찮게 web.xml 에 servlet-mapping을 하지 않을 것이므로 체크하도록 한다.

생성된 Servlet에서 오류를 출력하고 있는데 이유는 Jave EE가 추가되지 않았기 떄문이다.

Java EE 추가 이유
PrintWriter out = response.getWriter();
out.println("<html><head></head><body></body></html>");

response.getWriter() 는 javax에 포함되는 함수입니다.

Java EE를 라이브러리로 추가하지 않고 사용시 IDE상에서는 오류를 뱉지만 Tomcat내부에는 해당 함수가 있기 떄문에 실제 동작에서는 문제가 없습니다.

하지만, IDE에서 제공하는 자동완성과 오류체크를 위해서는 해당 라이브러리를 IDE에 추가하는 방법이 옳습니다.

빨간색 Servlet 부분에 마우스를 가르킨 후 나오는 벌룬 UI에서 Java EE 추가를 클릭한다.

확인을 클릭한다.

Java EE가 추가되므로 더이상 에러가 출력되지 않는 것을 확인할 수 있다.

Java EE가 추가되기전의 Servlet이라 import를 사용하여 코드가 정리되지 않은것을 확인할 수 있다.

최적화된 Default Servlet코드를 위해서 삭제했다가 다시 만들기로 한다.

재생성된 Servlet의 경우 import으로 정리된 코드를 확인할 수 있다.

Servlet Test

생성된 Servlet에 아래의 코드를 입력한다.

import java.io.PrintWriter;

@WebServlet(urlPatterns = "*.test")

PrintWriter out = response.getWriter();
out.print("<p>Hello, Servlet!</p>");

jsp에 아래의 코드중 하나를 입력한다.

note

두 코드 동일한 Action을 한다.

<a href="./Hello.test" methods="get">Servlet으로 넘어갑니다.</a>

OR

<a href="Hello.test" methods="get">Servlet으로 넘어갑니다.</a>

Servlet으로 넘어갑니다. 를 클릭하니 정상적으로 Servlet이 동작하는 것을 확인할 수 있다.

tip

Servlet은 jsp와 달리 변경사항이 있으면, 서버를 재시작해 주어야 한다.

최종 프로젝트 구조

tip

만약 배포시 Java EE를 포함하고 싶으면 오른쪽 사용 가능한 요소에서 Java EE를 더블클릭하여 아래와 같이 추가하면 된다.


parkgang