#24 Servlet과 JSP에서 request는 어떻게 사용될까
·
Project/Memo Evolution
Servlet/JSP를 공부하면서 가장 헷갈렸던 부분은 request와 response였다.처음에는 단순히 이렇게만 이해했다.request→ 브라우저가 서버로 보내는 메시지response→ 서버가 브라우저로 보내는 메시지큰 방향에서는 맞는 설명이다.하지만 Servlet/JSP를 실제로 사용하다 보면 request가 단순히 브라우저가 보낸 정보만 담는 객체가 아니라는 것을 알게 된다. request는 요청 처리용 객체다브라우저가 서버에 요청을 보내면 Tomcat이 request와 response 객체를 만든다.브라우저 요청→ Tomcat→ request 생성→ response 생성그리고 이 둘을 Servlet에게 넘긴다.doGet(request, response)여기서 HttpServletRequest는 ..
#23 Servlet에서 JSP로 forward하기
·
Project/Memo Evolution
이번 단계에서는 Servlet이 직접 HTML을 출력하던 방식에서 JSP로 화면을 분리했다.처음에는 Servlet 안에서 브라우저에 직접 HTML을 보냈다.response.setContentType("text/html;charset=UTF-8");response.getWriter().println("Servlet 메모장");response.getWriter().println("Servlet이 정상적으로 실행되었습니다.");이 방식은 Servlet이 요청 처리와 화면 출력을 모두 담당하는 구조다.간단한 확인용 화면에서는 문제없지만, 화면이 길어질수록 Java 코드 안에 HTML 문자열이 계속 들어가게 된다.그래서 이번 단계에서는 역할을 나누기 위해 JSP를 사용했다.Servlet→ 요청 처리 담당JSP→ ..
#22 Tomcat으로 Servlet 실행하기
·
Project/Memo Evolution
이번 단계에서는 Java 콘솔 메모장에서 한 단계 넘어가, 브라우저 요청을 Java Servlet이 처리하도록 만들었다.먼저 Servlet이 정상적으로 실행되는지 확인하겠다.지금까지는 콘솔에서 Java 프로그램을 실행했다.사용자 입력→ Main→ MemoService→ 콘솔 출력이번 단계부터는 브라우저에서 요청을 보내고, Tomcat이 그 요청을 받아 Servlet을 실행하는 구조로 넘어간다.브라우저 요청→ Tomcat→ Servlet→ 브라우저 응답 즉, 콘솔에서 직접 실행하던 Java 코드가 아니라, 브라우저 요청을 Java 서버가 받는 구조를 처음 확인하는 것이 목적이었다. Servlet/JSP 프로젝트 생성Memo Evolution 프로젝트 안에 새 Maven 모듈을 만들었다.servlet-jsp..
#21 Java 콘솔 메모장: MemoService로 로직 분리하기
·
Project/Memo Evolution
이번 단계에서는 Main.java에 있던 메모 관리 로직을 MemoService 클래스로 분리했다.기능을 새로 추가한 것은 아니다.이미 구현되어 있던 메모 작성, 목록 보기, 수정, 삭제 기능의 위치를 나누는 작업이다.기존에는 Main.java 안에서 입력 처리와 메모 데이터 관리가 모두 이루어졌다.이번에는 Main은 사용자 입력과 출력 흐름을 담당하고, MemoService는 메모 데이터를 관리하도록 역할을 나누었다. 기존 구조의 문제기존에는 Main.java가 너무 많은 일을 하고 있었다.메뉴 출력사용자 입력 받기메모 저장메모 목록 출력메모 수정메모 삭제즉, Main이 사용자 입력 흐름도 처리하고, 메모 데이터 관리도 직접 하고 있었다.예를 들어 이전에는 Main.java 안에서 직접 리스트를 가지고..
#20 Java 콘솔 메모장 : String 배열에서 Memo 클래스로 변경하기
·
Project/Memo Evolution
이번 단계에서는 메모 하나를 String[] 배열이 아니라 Memo 클래스로 표현하도록 변경했다.이전 단계에서는 Java 콘솔에서 메모 작성, 목록 보기, 수정, 삭제 기능을 구현했다.그때 메모 하나는 다음처럼 문자열 배열로 저장했다.String[] memo = {title, content};그리고 값을 꺼낼 때는 배열 인덱스를 사용했다.memo[0] // 제목memo[1] // 내용이 방식도 동작은 한다.하지만 코드를 볼 때 memo[0]이 제목인지, memo[1]이 내용인지 계속 기억해야 한다.그래서 이번 단계에서는 메모 하나를 더 명확하게 표현하기 위해 Memo 클래스를 만들었다. 기존에는 메모 하나를 String[] 배열로 다뤘다.String[] memo = {title, content};전체 메..
#19 Java 콘솔 메모장: CRUD기능 구현하기
·
Project/Memo Evolution
이번 단계에서는 Java 콘솔 메모장에 실제 CRUD 기능을 붙였다.이전 단계에서는 메뉴만 출력하고, 각 메뉴를 선택했을 때 “아직 구현되지 않았습니다.”라는 안내 문구만 출력했다.이번에는 사용자가 콘솔에서 직접 메모를 작성하고, 목록을 보고, 수정하고, 삭제할 수 있도록 만들었다. 현재 프로그램 흐름현재 콘솔 메모장은 다음과 같은 메뉴를 가진다.===== 메모장 =====1. 메모 작성2. 메모 목록 보기3. 메모 수정4. 메모 삭제0. 종료메뉴 선택:사용자는 번호를 입력해서 원하는 기능을 실행한다.1 → 메모 작성2 → 메모 목록 보기3 → 메모 수정4 → 메모 삭제0 → 프로그램 종료이전에는 메뉴만 있었고 실제 기능은 없었다.이번 단계부터는 각 메뉴가 실제로 메모 데이터를 처리한다. 메모를 저장할 ..
#18 Java 콘솔 메모장 시작 중 만난 IntelliJ 설정 문제
·
Project/Memo Evolution
Java 콘솔 메모장을 시작하면서 IntelliJ에서 이상한 문제가 생겼다.sout을 입력했을 때 System.out.println() 자동완성은 되는데, Scanner에는 빨간줄이 뜨지 않고 import java.util.Scanner; 추천도 나오지 않았다.처음에는 JDK 문제라고 생각했지만, 확인해보니 단순히 JDK만의 문제는 아니었다. 문제 상황작성한 코드는 다음과 같았다.public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); }}정상이라면 Scanner에 빨간줄이 뜨고, IntelliJ가 다음 import를 추천해야 한다.import java.u..
#17 Java 콘솔 메모장 시작하기
·
Project/Memo Evolution
React로 메모장 기능을 다시 구현한 뒤, 다음 단계로 Java 콘솔 메모장을 시작했다.지금까지는 브라우저 안에서 메모장을 만들었다.JavaScript→ 브라우저 안에서 배열로 메모 관리React→ state로 메모 배열 관리이번에는 같은 메모장 기능을 Java 코드로 다시 구현해보려고 한다.목표는 웹 화면을 만드는 것이 아니라, Java에서 메모 데이터를 어떻게 다룰 수 있는지 연습하는 것이다. 왜 Java 콘솔부터 시작했나바로 Servlet/JSP나 Spring으로 넘어가면 한 번에 봐야 할 개념이 너무 많아진다.HTTP 요청ServletJSPTomcatDBControllerServiceDAO그래서 먼저 콘솔 환경에서 Java 문법과 CRUD 흐름을 잡아보기로 했다.콘솔 메모장은 화면은 단순하지만,..