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 버튼을 누르면 값이 전달되어 출력되는 걸 확인할 수 있다.
'BE > Java' 카테고리의 다른 글
[Java] DTO 설계 시 고려사항 (0) | 2025.01.10 |
---|---|
[Java] multipart/form-data란? / form 태그로 서버에 파일 전달하기 (0) | 2025.01.09 |
[Java] SQL Injection, PreparedStatement (2) | 2025.01.09 |
[Java] Servlet 프로젝트 구조 / 로그인, 회원가입 기능 구현 (0) | 2025.01.08 |
[Java] IntelliJ + MariaDB 연동, SQL 실행 (0) | 2025.01.08 |