maven, tomcat, java, intellij 사용
Gradle 도구도 있음 선택의 차이!
API : Application Programming Interface, 어떠한 모듈이라던가 어떤 프로그램 같은 것들을 어떻게 사용하기 위해서 제공되는 방법이나 필요한 파라미터, 결과값이라던가 이런 것들을 알려줄 수 있는 것
프로그래밍 개발(코드) -> 빌드(컴파일) -> 테스트 -> 패키징(테스트 끝난 파일을 압축해서 배포 파일로 만드는 작업) -> 배포(디플로이먼트) -> 운영
프로그래밍을 시작하면서 프로그래밍이 운영될 때까지 모든 사이클, 모든 작업을 다 관리해주는 것을 Maven 도구
의 종류가 있는데, 자바에서 만들어지는 웹 어플리케이션 결과물은 WAR이라는 형태로 압축이 되어 배포가 된다.(웹 아카이브 파일) 해당 형태로 파일을 가지고 있다면 위 소프트웨어 모든 곳에서 배포하고 실행 가능하다.
비동기 -> 사용자가 요청을 한 다음에 서버에서 그 결과가 실행되기까지 다른 작업을 계속 진행하고 있다가 마지막에 결과 값을 우리가 이벤트 형식으로 받아서 쓸 수 있는 것
[윈도우_아래 링크에서 설치]
[맥_아래 블로그들 참고하여 설치]
맥북 maven 설치 및 환경 변수 방법 아래 블로그 참고(최고다)
https://m.blog.naver.com/sthwin/221165219790
내가 겪은 에러
https://hbase.tistory.com/425
https://stackoverflow.com/questions/16348459/error-the-goal-you-specified-requires-a-project-to-execute-but-there-is-no-pom
https://donggu1105.tistory.com/46
https://geonho96.tistory.com/112
eclipse : Workspace라는 개념이 존재, 작업 단위가 프로젝트가 됨 -> 독립적으로 실행할 수 있는 어플리케이션
IntelliJ IDEA : Workspace라는 개념 사용 X, Projeck라는 개념 사용 -> 모든 프로젝트를 실행할 때마다 윈도우가 하나씩 열리게 됨(하나의 윈도우에서 하나의 프로젝트만 사용 가능!)
-외부 프로젝트 또는 큰 단위의 하나의 그룹을 만들어 놓고 서브 프로젝트를 묶어 개발하려는 경우 서브 프로젝트의 개념을 모듈(Module)이라는 단위로 쪼개서 관리
3가지 프로젝트를 실행한다고 했을 때 eclipse 는 하나의 창에서 3가지 프로젝트 진행, IntelliJ 는 3가지 윈도우로 개별적으로 실행
이클립스에서 인텔리제이로 마이그레이션 할 때 차이점 비교
https://www.jetbrains.com/help/idea/migrating-from-eclipse-to-intellij-idea.html

Archetype 변경!

자알 확인하기

라이브러리 관련 코드 위치 -> 필요할 때 해당 위치 추가 할 수 있음.

기본 구성
smart tomcat 설치 및 서버 설정

context path는 어플리케이션 단위라고 생각하면 된다. 컨텍스트 단위로 우리가 어플리케이션들을 구분하는 게 가장 일반적인 방법. 위에 캡쳐 내용은 서버 이름과 동일한 myweb으로 지정했다는 얘기임
JSP와 Servelt 예제
‹dependency> 추가
java라는 이름의 그룹 생성
org.example 패키지 등록

HelloServlet 클래스 생성

package org.example;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
// Servlet에 대한 URL 매핑 설정
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
// GET 요청 처리
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 응답 Content Type 설정
response.setContentType("text/html");
// 응답 출력 스트림 가져오기
response.getWriter().println("<h1>Hello, Servlet!</h1>");
}
}
@WebServlet("/hello"): 이 어노테이션은 이 서블릿이 /hello 경로로 들어오는 요청을 처리한다는 것을 나타냄doGet 메서드: 클라이언트가 GET 요청을 보냈을 때 실행됨,response.getWriter().println()을 통해 HTML 응답을 반환JSP 파일 생성
index.jsp
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>My Web Application</title>
</head>
<body>
<h1>Welcome to My Web Application</h1>
<p>This is a JSP page.</p>
<!-- Servlet으로 이동하는 링크 -->
<a href="hello">Go to HelloServlet</a>
</body>
</html>
index.jsp는 기본 웹 페이지로 설정할 수 있으며, JSP에서 기본적인 HTML을 포함할 수 있다.a href="hello"는 서블릿의 URL 매핑인 /hello로 이동할 수 있는 링크web.xml 설정 (Optional)
web.xml은 서블릿의 매핑을 설정하는 방법이지만, 위에서 어노테이션(@WebServlet)을 사용했기 때문에 생략해도 된다.
프로젝트 구조 예시
아래와 같이 구성되어 있다고 가정
src/main/java
└── org/example
└── HelloServlet.java
src/main/webapp
├── index.jsp
└── WEB-INF
└── web.xml (Optional)
Tomcat 서버에서 실행
Tomcat 서버 실행:
IntelliJ 또는 Eclipse에서 Smart Tomcat을 선택하여 Tomcat 서버를 실행
웹 브라우저에서 확인:
http://localhost:8080/myweb/index.jsp로 접근하여 JSP 페이지를 확인
http://localhost:8080/myweb/hello로 접근하여 HelloServlet이 정상적으로 작동하는지 확인
이렇게 하면 JSP와 Servlet이 함께 동작하는 간단한 웹 애플리케이션을 Tomcat 서버에서 실행할 수 있다.
따라하기만 하는데도 에러가 왜이렇게 많이 나는걸까... 다음에 더 제대로 해봐야겠다 🥲🥲