“웹 브라우저 클라이언트로부터 HTTP 요청을 받아드리고 HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램”
정적 컨텐츠를 제공하는 서버(HTML, CSS, javascript, 이미지, 파일 등 즉시 응답가능한 컨텐츠)
대표적인 웹 서버: Apache
“인터넷 상에서 HTTP 프로토콜을 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서, 주로 동적 서버 컨텐츠를 수행하는 것으로 웹 서버와 구별이 되며, 주로 데이터베이스 서버와 같이 수행”
데이터베이스의 조회나 다양한 로직 처리가 필요한 동적 컨텐츠를 제공한다.
대표적인 WAS 종류: Tomcat
finder 폴더에서 command + option + c 폴더 경로 복사
cd /Users/bang-yeeun/Downloads/apache-tomcat-9.0.64/bin
// Tomcat 서버 실행
./startup.sh
// Tomcat 서버 끔
./shutdown.sh
자바 웹 서버로 웹 페이지를 제공할 때, 동적인 데이터를 제공하는 것을 도와준다.
서블릿의 사용 이유
서블릿을 사용하지 않고 직접 HTTP 통신으로 오고가는 문자열을 파싱해 서블릿과 같은 기능을 구현해도 무방하지만, 편리하게 사용할 수 있는 서블릿이 있기 때문이다.
자바 빈의 프로퍼티, 값을 JSP표현식이나 액션태그를 사용하는 것 보다 쉽고 간결하게 꺼낼 수 있게 하는 기술
${}
#{}
jsp:include → 내 서버 내의 jsp 파일만 가능
c:import → 외부 jsp 파일 접근 가능
<c:import> 는 유연성 및 기능 향상 제공
웹 서버뿐만 아니라 다른 웹 애플리케이션, 컨텐스트의 콘텐츠를 지정할 수 있다.
성능 향상은 미미하다.
<jsp:include>보다 무겁기 때문에 필요하지 않다면 <jsp:include>를 사용하는 게 좋다고 말하는 사람도 있다.
서블릿의 화면처리 어려움을 해결하기 위해 나왔으며 HTML과 데이터를 조합하기 위해 다음과 같은 주요 기능적 특징을 가진다.
jsp사용은 서블릿에 손을 대지 않겠다는 것이고 결과물은 결국 서블릿이다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*" errorPage="error.jsp"%>
웹과 관련 없는 데이터는 META-INF에 두자.
WAS가 실행 될 때 DB연결을 위해 미리 일정수의 connetion 객체를 만들어 Pool에 담아 뒀다 사용자의 요청이 발생하면 Pool에서 생성되어 있는 Connection객체를 넘겨주고 사용자가 사요이 끝나면 Connection 객체를 다시 Pool에 반환하여 보관하는 기법이다.
자바용 프로젝트 관리도구
자바 프로그램이 데이터베이스와 연결되어 데이터를 주고 받을 수 있게 해주는 프로그래밍 인터페이스
응용프로그램과 DBMS간의 통신을 중간에서 번역해주는 역할을 한다.
*DBMS(DataBase Management System) Oracle, Mysql등등
tree 명령어 사용해 확인
/Users/bang-yeeun/.m2/repository/org
자바에서 데이터베이스 프로그래밍을 할 때 JDBC API를 사용하는데, JDBC를 이용하려면 작성해야 할 코드가 많다.
MyBatis는 SQL Mapper를 통해 자바의 메서드와 SQL을 맵핑재누고 사용하기 쉽게 만든다.
폴더구조
src > main > resources > static에 정적파일 작성.
templates폴더에서 jsp는 작동하지 않는다.

jsp 사용 https://antdev.tistory.com/27
Maven을 사용한다면 pom.xml에 추가하고, Gradle을 사용한다면 build.gradle에 추가

id auto_increment 1로 초기화
ALTER TABLE [테이블명] AUTO_INCREMENT=1;
이미 만들어진 table auto_increment 설정 추가하기
ALTER TABLE [테이블명] MODIFY [컬럼명] [자료형(int)] AUTO_INCREMENT;
이미 만들어진 table에 created_at 추가하기
ALTER TABLE [테이블명] MODIFY COLUMN [컬럼명] timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP;
다른연동 방법
https://velog.io/@ghd64845/Spring-boot-MyBatis를-이용하여-MySQL-연동하기
java type VS sql type
https://honsal.blogspot.com/2017/04/mysql-java.html
성공한 블로그
https://limjunho.github.io/2021/08/11/spring-mysql.html