본문 바로가기

교재 실습/자바 웹 프로그래밍 Next Step95

3.2 로컬 개발 환경 구축 모든 실습은 자바 8 버전과 이클립스 통합 개발 환경에서 진행한다. 모든 실습 코드는 GitHub을 통해 공유하고 있으며, 메이븐 빌드 도구를 활용해 빌드가 가능하도록 구성되어 있다. 실습을 하려면 먼저 GitHub에서 제공하는 소스코드를 이클립스로 가져와야 한다.이클립스는 Git과 연결할 수 있는 플러그인을 지원하고 있기 때문에 별도의 도구를 설치하지 않아도 GitHub 코드를 이클립스로 가져올 수 있다.실습으로 사용할 GitHub 저장소 URL은 다음 2개의 저장소를 사용한다.  3장 ~ 6장 실습에서 사용할 저장소 : https://github.com/slipp/web-application-server GitHub - slipp/web-application-server: 웹 애플리케이션 서버 실습을.. 2025. 1. 16.
3.1 서비스 요구사항 질문/답변 게시판의 요구사항을 사용자의 흐름 순으로 살펴본다. 질문 답변 게시판에 처음 접근하면 질문 목록을 볼 수 있다. 질문 목록 화면에서 회원가입, 로그인, 로그아웃, 개인정보 수정이 가능하며, 질문하기 화면으로 이동할 수 있다. - 질문 목록 구성Posts, 로그인, 회원가입, 로그아웃, 개인정보 수정 버튼페이징된 질문 목록질문하기 버튼 회원가입 버튼을 클릭하면 회원가입을 할 수 있다. - 회원 가입 구성Posts, 로그인, 회원가입, 로그아웃, 개인정보 수정 버튼사용자 아이디, 비밀번호, 이름, 이메일 입력박스회원가입 버튼 로그인 버튼을 클릭하면 회원가입한 사용자는 로그인이 가능하다. - 로그인 구성Posts, 로그인, 회원가입, 로그아웃, 개인정보 수정 버튼사용자 아이디, 비밀번호 입력박스로그.. 2025. 1. 15.
3장 개발 환경 구축 및 웹 서버 실습 요구사항 MVC 구조에 대한 이해도를 어떻게 하면 높일까 고민하다 내가 이해한 수준으로 MVC 프레임워크를 직접 구현해봤다. 정말 간단한 구조의 MVC 프레임워크였지만 MVC 구조의 핵심을 담고 있었기 때문에 나뿐만 아니라 초보 개발자들이 이해하는데 부담이 적었다고 생각한다. 이 일을 계기로 새로운 무엇인가를 학습할 때 내가 이해한 수준까지 직접 라이브러리 또는 프레임워크를 구현해봄으로써 학습에 대한 깊이를 더해가는 방식으로 학습을 하고 있다. 직접 구현해 봄으로써 자신이 이해하고 있는 부분과 모르는 부분을 명확히 알 수 있으며, 애플리케이션이 어떻게 동작하는지에 대해 깊이 있게 이해할 수 있는 계기가 된다.3장부터 12장까지 자바 기반으로 웹 애플리케이션 개발 학습을 목적으로 구현된 공통 라이브러리와 프레임워크.. 2025. 1. 14.
2.5.2 정규 표현식 정규 표현식(regular expression은 문자열 조작을 지원하는 도구이다. "손에 잡히는 정규 표현식" (벤 포터 저/김경수 역, 인사이트(insight), 2009년) 책은 정규표현식을 통해 해결할 수 있는 문제들을 정리하고 있다. 일부 상황을 인용해 본다. · 대소문자를 구별하지 않고 car라는 텍스트가 포함된 파일을 찾는데, 단어 중간에 car가 들어 있는 경우에는 제외하고 싶다(예 scar, carry, incarcerate). · 소스코드를 수정하다가 size라는 글자를 모두 iSize로 치환하고 싶다. 하지만 다른 단어 사이에 size라는 철자가 포함된 경우는 제외하고 오직 size라는 단어만 치환하고 싶다. · 컴퓨터 파일시스템에 존재하는 파일 목록을 모두 보다가 Application.. 2025. 1. 13.
2.5.1 테스트 주도 개발(Test Driven Development, 이하 TDD)과 리팩토링 테스트 관련 내용을 학습하면 반드시 등장하는 것이 TDD 이다. TDD를 바로 연습하는 것도 좋지만 그보다는 JUnit을 활용해 테스트를 검증하는 방식으로 진행하다 한 단계 더 성장하고 싶을 때 도전할 것을 추천한다.안정적으로 리팩토링을 하려면 반드시 견고한 테스트가 뒷받침하고 있어야 한다. 리팩토링의 첫 번째 단계가 프로덕션 코드에 대한 테스트 코드를 만드는 것인 만큼 두 주제를 같이 학습할 것을 추천한다. 이 두 주제를 학습하는 단계는 다음과 같이 할 수 있다. · 먼저 "테스트 주도 개발: 고품질 쾌속개발을 위한 TDD 실천법과 도구" 책의 1장 공개 자료인 https://goo.gl/2ny56W를 통해 TDD가 무엇인지, 등장 배경은 무엇이며, 어떤 효과가 있는지 검통해 본다. 이 문서를 읽고 실.. 2025. 1. 12.
2.4.4.6 문자열 계산기에 음수를 전달하는 경우 RuntimeException 예외를 throw 한다 HINT) 구글에서 "junit4 expected exception" 으로 검색해 해결책을 찾는다. public class StringCalculatorTest { ... @Test(expected = RuntimeException.class) public void add_ne() throws Exception { assertEquals(6, cal.add("//;\n1;2;3")); }}JUnit에서 기대하는 결과 값이 예외(Exception)인 경우 @Test 어노테이션의 expected 속성에 기대하는 Exception 클래스를 전달할 수 있다. import java.util.regex.Matcher;import java.util.regex.Pattern;publi.. 2025. 1. 11.
2.4.4.5 문자 사이에 커스텀 구분자를 지정할 수 있다 HINT)Matcher m = Pattern.compile("//(.)\n(.*)").matcher(text);if (m.find()) { String customDelimeter = m.group(1); String[] tokens = m.group(2).split(customDelimeter);} public class StringCalculatorTest { ... @Test public void add_custom_구분자() throws Exception { assertEquals(6, cal.add("//;\n1;2;3")); }} import java.util.regex.Matcher;import java.util.regex.Pattern;publi.. 2025. 1. 10.
2.4.4.4 구분자를 쉼표(,) 이외에 콜론을 사용할 수 있다 HINT)String[] tokens = text.split(",|:"); public class StringCalculatorTest { ... @Test public void add_쉼표_또는_콜론_구분자() throws Exception { assertEquals(6, cal.add("1,2:3")); }} public class StringCalculator { public int add(String text) { if (isBlank(text)) { return 0; } return sum(toInts(split(text))); } private boolean isBlank(.. 2025. 1. 9.
2.4.4.3 숫자 두개를 쉼표(,) 구분자로 입력할 경우 두 숫자의 합을 반환한다 HINT)String[] numbers = text.split(","); public class StringCalculatorTest { ... @Test public void add_쉼표구분자() throws Exception { assertEquals(3, cal.add("1,2")); }} public class StringCalculator { public int add(String text) { if (text == null || text.isEmpty()) { return 0; } if (text.contains(",")) { String[] values = tex.. 2025. 1. 8.