BE/Java

[Java] IntelliJ + Tomcat 연동, Servlet 설정 (파라미터)

셰욘 2025. 1. 8. 11:47
728x90

IntelliJ로 자바 프로젝트를 생성한다.

 

Tomcat 연동

1. Add Framework Support

생성한 프로젝트를 클릭한 다음 오른쪽 위에 돋보기 모양 버튼을 누른다.

 

 

오른쪽 위에 include non-project items 체크 후 검색창에 Add Framework Support 검색 - 클릭

(위에서 생성한 프로젝트를 클릭하지 않았으면 Add Framework Support 클릭해도 아무 일도 안 일어남)

 

 

Java EE에서 Web Application 을 선택 후 OK를 클릭한다.

OK를 누르면 web 폴더가 생성되어 있는 걸 확인할 수 있다.

 

 


2. Add New Configuration

오른쪽 위에 Current File 오른쪽 화살표 클릭 -> Edit Configurations.. 클릭

 

 

 

왼쪽 위 + 버튼 -> Tomcat Server - Local 클릭

 

 

Name을 입력해주고, Application server 오른쪽 Configure를 누른 다음 

Tomcat Home에 tomcat을 설치한 파일 경로를 넣어준다.

 

 

VM options에 한글이 안 깨지게 인코딩 방식을 넣어준다.

-Dfile.encoding=UTF-8

 

 

위쪽 Deployment 탭 -> 왼쪽 + 버튼을 누른 후 Artifact를 클릭한다.

 

아래 Application context 경로를 다 지워주고 /로 남겨준다.

 


3. Tomcat 실행

오른쪽 위에 아까 만든 톰캣 Configuration 을 선택 후 실행 버튼을 눌러준다.

실행 버튼 누른 후 Restart server -> OK 클릭

 

 

localhost:8080 으로 가보면 잘 나오는 것을 확인할 수 있다.

 

 


Servlet 설정

Servlet 템플릿 설정

import 문을 편하게 만들기 위해 템플릿을 설정해준다.

 

Settings -> Editor -> File and Code Templates

탭에서 Other -> Web -> Servlet Class.java를 선택한다.

 

 

붙여넣기 후 자동으로 Import 되게 import문에 있는 if else 조건문만 없애준다.

=> import javax 문 없애주기

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")

import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.io.IOException;

public class ${Class_Name} extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

 

 

수정해준 다음에 OK 

 


Maven 으로 톰캣 서블릿 dependancy 추가

Maven Repository 주소 :  https://mvnrepository.com/

 

 

 

오른쪽 위 돋보기 모양 클릭 후 Add Frameworks Support 클릭 (Tomcat 연동 - 1번에 정리되어 있음 )

Maven 선택

 

 

 

선택하고 나면 pom.xml 파일이 만들어지는데,

pom.xml 우클릭 -> Maven -> Sync Project 로 한 번 업데이트 해주기

 

 

 

https://mvnrepository.com/ 에 접속해서 tomcat 검색

Tomcat Servlet API 클릭

 

 

 

 

원하는 버전 선택 후 Maven 탭에 있는 코드 복사

나는 tomcat 10 버전을 사용하고 있기 때문에 10버전 제일 위에 있는 10.1.34 버전을 선택해주었다.

 

 

코드 복사 후 pom.xml 파일 안에 <dependencies> 태그 안에 붙여넣기

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-servlet-api -->
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-servlet-api</artifactId>
        <version>10.1.34</version>
    </dependency>
</dependencies>

 

 

 

코드 복사 후 맨 오른쪽을 보면 세로로 탭이 나열되어 있는데,

여기서 Maven 아이콘 클릭하면 Maven 탭이 뜬다.

왼쪽 위 새로고침 버튼을 누르고 Reload All Maven Projects

 

 

Reload + Sync 하면 Main 폴더 안에 파일들이 들어간 걸 확인할 수 있다.

 

 

 


Servlet 테스트 (TestServlet)

src > java > TestServlet.java

 

 

HttpServlet : http 프로토콜로 통신하는 코드들이 들어있다.

 

GET 방식과 POST 방식 차이점 (데이터 전달 방식)

  • GET : 데이터를 URL에 넣음
  • POST : 데이터를 body에 넣음
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.*;

import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name="TestServlet", value="/test")
public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("클라이언트가 HTTP GET 방식으로 접속했다.");

        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.println("서블릿 코드를 GET으로 실행함");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

 

 

web > index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    System.out.println("서버에서 실행되고 클라이언트한테는 보이지 않는 코드");
%>
<%-- 아래 코드를 클라이언트한테 보내준다. --%>
<html>
<head>
    <title>Title</title>
</head>
<body>

</body>
</html>

 

 

http://localhost:8080/test 로 들어갔을 때 실행되는 걸 확인할 수 있다.

 

 


Servlet 파라미터 가져오기

src > java > TestServlet.java

 

doGet 메소드의 매개변수로 들어온 request => 여기서 클라이언트가 보낸 데이터들이 들어온다.

URL 파라미터로 데이터를 넣어서 보내면 request로 가져올 수 있다.

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.*;

import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name="TestServlet", value="/test")
public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 서블릿에서 데이터를 받는 법
        String data01 = request.getParameter("data01");
        String data02 = request.getParameter("data02");

        System.out.println(data01);
        System.out.println(data02);

        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        out.println("서블릿 코드를 GET으로 실행함");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

 

 

 

 

http://localhost:8080/test?data01=abcd&data02=qwer

=> 이렇게 보내면 파라미터에 data01 이라는 key에 abcd 라는 값이 넣어서 보내지고, data02 라는 key에 qwer 라는 값이 넣어서 보내진다.

 

 

Send 버튼을 누르면 값이 전달되어 출력되는 걸 확인할 수 있다.

 

728x90