멀티캠퍼스/주차별 정리

[26.05.26-26.05.29] TIL 9주차 정리

buckwheat 2026. 5. 30. 13:31

1. 이번 주 학습 흐름

이번 주부터, 백엔드 공부를 하게 되었다. 웹 통신개요, Servlet, JSP 개념들을 배우고, Dynamic Web Project 실습을 시작했다.

Jsp01부터 Jsp03까지 세 개의 프로젝트를 하면서 웹 프로젝트 개발에 대한 이해도가 올라간 것 같다.

HTML, CSS, JavaScript를 배웠을 때는 너무 기초적이라는 느낌이 들었는데 Java, Oracle DB, JDBC, JSP까지 배우고 활용하니 이제야 본격적으로 개발하는 느낌이 든다.

 

프로젝트 3개 모두 CRUD를 구현하는데,

CRUD는 Create, Read, Update, Delete의 줄임말이다. 게시판이나 회원 관리처럼 데이터를 다루는 대부분의 웹 서비스는 결국 CRUD 흐름을 기본으로 가진다.

 

용어를 정리하고 가자면,

DAO : Data Access Object의 줄임말로, 데이터베이스에 접근해 SQL을 실행하는 역할을 하는 객체이다.

DTO : Data Transfer Object의 줄임말로, DB에서 가져온 데이터를 Java 객체로 담아 전달하는 역할을 한다.

MVC : Model, View, Controller의 줄임말이다. Model은 DB, View는 화면, Controller는 사용자의 요청을 받아 어떤 기능을 실행할지 결정하는 역할을 한다.

 

Jsp01은 JSP 파일이 직접 DAO를 호출하여 게시판 CRUD를 구현했다.

Jsp02는 Controller 역할을 하는 JSP를 따로 두고 MVC 흐름에 맞춰 게시판을 구현했다.

Jsp03에서는 로그인, 세션, 권한 분기, 회원 관리 기능을 구현하면서 실제 웹 서비스에 가까운 구조를 학습했다.

 

처음에는 JSP마다 직접 처리 로직이 들어갔지만 Jsp02부터 Controller 중심 구조로 바뀌었다.

오히려 코드가 더 복잡해진 느낌이 들었지만, 기능이 많아질수록 작업을 분류하는 이유를 이해할 수 있었다.

 

mycontroller.jsp는 JSP 파일이지만 사용자의 요청을 command 값으로 구분하고 DAO를 호출한 뒤 화면 이동을 결정했기 때문에 Controller 역할을 했다.

반면 boardlist.jsp, boarddetail.jsp, boardinsert.jsp, boardupdate.jsp는 사용자가 보는 HTML 화면을 출력하는 역할이 중심이었기 때문에 View 역할로 볼 수 있다.

DB 작업은 DAO가 담당하면서 전체 구조를 파악하기 쉬워졌다.

 

https://buckwheat0.tistory.com/47

 

[2026.05.26] - TIL 37일차 웹 통신, Servlet, JSP 정리

목차1 웹 통신 구조2 Servlet3 JSP 1 웹 통신 구조1) 웹 통신의 기본 흐름 (1) 웹 통신 웹 통신은 클라이언트가 서버에 요청을 보내고, 서버가 그 요청을 처리한 뒤 응답을 돌려주는 구조이다. 사용자가

buckwheat0.tistory.com

2. Jsp01 게시판 CRUD 학습

Jsp01에서는 게시판 테이블 생성, 목록 조회, 상세 조회, 작성, 수정, 삭제 기능을 구현했다.
게시판의 기본 기능인 CRUD를 직접 만들어보면서 웹 화면과 데이터베이스가 어떻게 연결되는지 이해할 수 있었다.

Jsp01의 특징은 JSP 파일이 직접 DAO 객체를 생성하고 메소드를 호출했다는 점이다.
사용자가 목록 조회, 글 작성, 수정, 삭제 같은 요청을 보내면 JSP가 그 요청을 처리하고, DAO가 SQL을 실행한 뒤, 다시 JSP가 결과를 화면에 보여주는 구조였다.

이 방식은 구조가 단순해서 처음 게시판 CRUD 흐름을 이해하기 좋았다.
다만 JSP 안에 화면 코드와 Java 처리 코드가 함께 들어가기 때문에, 기능이 많아질수록 코드가 복잡해질 수 있다는 점도 느꼈다.

 

 

https://buckwheat0.tistory.com/48

 

[2026.05.27] - TIL 38일차 JSP 게시판 CRUD 구현 정리

목차1 MYBOARD 테이블2 JDBCTemplate3 MyBoardDto4 MyBoardDao5 JSP 게시판 전체 흐름6 index.jsp7 mylist.jsp8 selectone.jsp9 myinsert.jsp와 myinsert_res.jsp10 myupdate.jsp와 myupdate_res.jsp11 mydelete.jsp12 JSP 게시판 CRUD 흐름 정리 1 MYBO

buckwheat0.tistory.com

3. Jsp02 MVC 게시판 CRUD 실습


Jsp02는 Jsp01에서 더 나아가 Controller 역할을 하는 JSP를 사용했다.
mycontroller.jsp가 모든 요청을 먼저 받고, command 값을 이용해 사용자가 어떤 기능을 요청했는지 구분하는 구조였다.

Jsp01에서는 각 JSP 파일이 직접 DAO를 호출했다면, Jsp02에서는 mycontroller.jsp가 요청을 처리하고 DAO를 호출한 뒤 알맞은 화면으로 이동시켰다.
나머지 JSP 파일들은 글 목록, 상세 화면, 작성 화면, 수정 화면처럼 사용자가 보는 화면을 출력하는 역할에 집중했다.

Jsp02에서도 글 목록 조회, 상세 조회, 작성, 수정, 삭제 기능을 구현했다.
다만 Jsp01과 달리 요청 처리 흐름이 Controller에 모였기 때문에, 전체 기능이 어떤 순서로 실행되는지 더 구조적으로 볼 수 있었다.
이 과정에서 MVC 구조의 기본 흐름을 배웠고, forward의 필요성도 이해했다.


Controller에서 조회한 데이터를 View로 넘기기 위해 request.setAttribute를 사용했고, pageContext.forward를 통해 JSP 화면으로 이동했다.
forward는 request 객체가 유지되기 때문에 Controller가 담은 데이터를 다음 JSP에서 사용할 수 있었다.
또한 redirect와 forward의 차이도 학습했다.
request에 담은 데이터를 유지해야 할 때는 forward를 사용하고, 단순히 새로운 페이지로 이동할 때는 redirect를 사용할 수 있다는 점을 알게 되었다.
Jsp02를 통해 Controller 중심 구조가 요청 흐름을 한 곳에서 관리하기 좋다는 점을 배웠다.

https://buckwheat0.tistory.com/49

 

[2026.05.28] - TIL 39일차 JSP MVC 게시판 CRUD 구조 정리

목차1 MVCBOARD 테이블2 JDBCTemplate3 MVCBoardDto4 MVCBoardDao5 JSP MVC 게시판 구조6 mycontroller.jsp7 boardlist.jsp8 boarddetail.jsp9 boardinsert.jsp10 boardupdate.jsp11 result.jsp12 forward와 redirect13 command 방식14 JSP MVC 게시판 CRUD

buckwheat0.tistory.com

4.Jsp03 로그인과 회원 관리 실습

 

Jsp03에서는 회원 테이블을 생성하고 로그인, 세션 저장, 권한별 페이지 이동, 관리자 기능, 일반 회원 기능, 회원 정보 수정, 회원 탈퇴 기능을 구현했다.
Jsp01과 Jsp02가 게시판 CRUD 중심이었다면, Jsp03은 로그인과 회원 관리를 다루면서 실제 웹 서비스에 더 가까운 흐름을 배울 수 있었다.

가장 중요하게 배운 개념은 session이었다.
session은 로그인 상태를 유지하기 위한 객체이다.
로그인 성공 후 session에 회원 정보를 저장하면, 다른 JSP에서도 로그인한 사용자의 정보를 사용할 수 있었다.
이를 통해 웹에서는 요청이 바뀌어도 로그인 상태를 유지하기 위해 session이 필요하다는 것을 이해했다.

로그인 여부를 체크하는 방법도 배웠다.
adminmain.jsp, usermain.jsp, userlistall.jsp 같은 주요 페이지에서는 session에 저장된 dto가 있는지 확인했다.
dto가 null이면 로그인하지 않은 사용자이므로 index.jsp로 이동시켜 접근을 막았다.
이 과정을 통해 로그인하지 않은 사용자가 주소를 직접 입력해서 페이지에 접근하는 것을 방지할 수 있었다.

권한 분기도 학습했다.
같은 로그인 기능을 사용하더라도 회원 등급에 따라 이동하는 페이지와 사용할 수 있는 기능이 달라졌다.
ADMIN 회원은 관리자 페이지로 이동해 전체 회원 조회와 회원 등급 변경을 할 수 있었고, USER 회원은 일반 사용자 페이지로 이동해 내 정보 조회, 정보 수정, 회원 탈퇴를 할 수 있었다.
이를 통해 웹 서비스에서 권한 관리가 왜 필요한지 이해할 수 있었다.

논리 삭제도 새롭게 배운 개념이었다.
회원 탈퇴를 실제로 DB에서 삭제하는 것이 아니라, MYENABLED 값을 Y에서 N으로 변경하는 방식으로 처리했다.
데이터는 DB에 그대로 남아 있지만, 서비스 이용 가능 여부만 바뀌는 구조였다.
탈퇴한 회원은 로그인 조건에서 제외되기 때문에 다시 로그인할 수 없었다.
데이터를 완전히 삭제하지 않고 상태값으로 관리한다는 점이 신기했고, 실제 서비스에서도 필요한 방식이라는 생각이 들었다.

 

https://buckwheat0.tistory.com/50

 

[2026.05.29] - TIL 40일차 JSP 로그인, 세션, 권한별 회원 관리 정리

목차1 MYMEMBER 테이블2 MyMemberDto3 MyMemberDao4 로그인 화면과 로그인 처리5 Session을 이용한 로그인 유지6 관리자 페이지 흐름7 회원 목록 조회8 회원 등급 변경9 일반 회원 페이지 흐름10 마이페이지 조

buckwheat0.tistory.com