2018년 3월 23일 금요일

mac 에서 Intellij maven web 프로젝트 에서 Servlet 구현

1. Maven 프로젝트 생성하기

1.1. new Module에서  'Create from archetype ' 체크 박스를 선택하고 'maven-archetype-webapp' 을 선택한다.

1.2. Maven 경로를 설정한다.

1.3. 원하는 모듈명을 입력하여 생성한다.

1.4. 아래와 같이 프로젝트가 생성된다.

1.5. Tomcat에서 'Edit Configurantions' 를 선택 후 'Artifact' 를 선택하고 'war exploded'를 선택한다.



1.6. 'Build'항목을 선택후 ' Build Artifacts..' 를 선택하고 해당 프로젝트의 'Build'를 선택하여 Build 실행 

1.7. Tomcat을 실행하여 브라우저에서 접속시 아래와 같은 화면이 나오면 성공

2.  Maven이란

2.1. 폴더 구조

작성 예정

3.  Servlet 소스 실행 해보기

3.1. web.xml 수정

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <servlet>
    <servlet-name>simpleServlet</servlet-name>
    <servlet-class>exam.SimpleServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>simpleServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
</web-app>

3.2. pom.xml 수정

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example.mvnproject</groupId>
  <artifactId>mvn-project</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>mvn-project Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.0</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>mvn-project</finalName>
  </build>
</project>

3.3. Maven Update

pom.xml 을 수정 했으니 Maven을 Update 한다.


3.4. Java 폴더 및 파일 생성

main 폴더에서 'JAVA' Directory를 생성하고 'java' 폴더에서 오른쪽 버튼 선택 후 'Mark Directory as > Sources Root' 를 선택한다.

3.5. Serlvet Class 파일 생성

JAVA 디렉토리에서 SimpleServlet 파일을 만들고 HttpServlet을 상속받아 메소드를 Override 하여 구현한다.

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SimpleServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest reqest, HttpServletResponse response)
            throws ServletException, IOException {
        response.getWriter().println("Hello World!");
    }

    @Override
    public void init() throws ServletException {
        System.out.println("Servlet " + this.getServletName() + " has started");
    }

    @Override
    public void destroy() {
        System.out.println("Servlet " + this.getServletName() + " has stopped");
    }

}

어노테이션으로 구현하면 아래와 같이 Web.xml에 설정없이 아래와 같이 구현이 가능하다.

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("");
            out.println("<html><head></head><body>");
            out.println("<h1>Hello</h1>");
            out.println("</body></html>");
        } finally {
            out.close();
        }
    }
}

3.6. 작동여부 확인

아래와 같은 폴더 구조일 것이다.


Tomcat를 재시작 하여 브라우저에서 아래의 주소를 입력해 본다.
http://localhost:8080/hello -> 화면에 Hello world! 가 보이면 정상
http://localhost:8080/HelloServlet -> 화면에 Hello 가 출력되면 정상

3.7. Tomcat을 Maven으로 변경하여 구동해보기

web.xml에서 'org.apache.tomcat.maven' 플러그인을 추가한다.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example.mvnproject</groupId>
  <artifactId>mvn-project</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>mvn-project Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.0</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>mvn-project</finalName>

    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
      </plugin>
    </plugins>
  </build>
</project>

Run/Debug Configurations 설정 하는곳에서 'Edit Configuration..'를 선택하고
Maven 을 추가하여 아래의 그림과 같이 'Name'과 'Command Line'을 설정한다.

설정한 Maven을 선택하고 ▶를 클릭하고 접속했던 주소에 재접속을 시도한다.
http://localhost:8080/hello -> 화면에 Hello world! 가 보이면 정상
http://localhost:8080/HelloServlet -> 화면에 Hello 가 출력되면 정상

* GitHub
https://github.com/lalwr/FastCampusJavaWebMaster/tree/master/ExamMvnProject

Share:

0 개의 댓글:

댓글 쓰기