[Toy Project] Java로 구현한 러시안 룰렛
·
Project/Toy Project
날씨가 너무 더워 신나는 노래라도 듣자는 생각으로 플레이 리스트를 재생했더니 레드밸벳의 러시안 룰렛이 나왔다.공부는 하기 싫지만 아무것도 안하긴 뭐해서 간단한 러시안 룰렛을 만들어보았다..친구 왈 : 무슨 스타 1 유즈맵 같네ㅋㅋ클래스는 리볼버, 플레이어, 메인 클래스 3가지로 구현하였다.플레이어를 따로 구분한 이유는, 나중에 리팩토링할 때 money 같은 변수를 추가해서 내기하면 재밌을 것 같아서 따로 클래스로 구현하였다.ClassPlayerpackage domain.player;public class Player { private final int id; private boolean alive = true; public Player(int id) { this.id = id..
[Spring] 메시지와 국제화 - 어떻게 국제화가 자동으로 일어날까요?
·
Spring/MVC
메시지가 뭐고 왜 필요하냐면요예를 들어 이런 필드가 있다고 할 때, 상품명 이라는 라벨을 모두 상품 이름으로 변경해달라고 하면 어떻게 할 것인가?모든 코드를 까서 ctrl F 로 라벨을 찾아 수정하는 방법이 가장 단순한 방법일 것이다.근데 만약 수정해야하는 파일의 개수가 1000개면 하루종일 그것만 하고 있을 것인가? 기존 코드는 다음과 같이 상품명 이라는 텍스트가 하드코딩 되어 있기 때문에, 모두 까서 수정하기 힘들다. 상품명 그래서 이러한 메시지를 Key - value 형태로 저장해두고 관리하도록 하는 기능을 메시지 기능이라고 한다.hello=안녕hello.name=안녕 {0}label.item=상품label.item.id=상품 IDlabel.item.itemName=상품명label.it..
[Thymeleaf] 타임리프와 스프링의 통합 4 - 멀티 체크박스
·
Spring/Thymeleaf
지난번 단일 체크박스를 응용하여 멀티 체크박스도 만들어보자.컨트롤러 수정 - @ModelAttribute 사용@ModelAttribute("regions")public Map regions() { Map regions = new LinkedHashMap(); regions.put("SEOUL", "서울"); regions.put("BUSAN", "부산"); regions.put("JEJU", "제주"); return regions;}해당 코드는 등록, 상세, 수정 등에서도 등장해야하는 데이터들인데, 늘 모든 코드에서 중복해서 작성해야할까?스프링에선 해당 귀찮음을 해결하기 위해 @ModelAttribute의 기능을 지원한다.해당 에노테이션이 있는 컨트롤러가 호출될 때, 항상 모델..
[Thymeleaf] 타임리프와 스프링의 통합 3 - 단일 체크박스
·
Spring/Thymeleaf
기존에 요구 사항을 반영하기 위해 체크 박스를 추가해보자.단일 체크박스 추가하기@PostMapping("/add")public String addItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes) { log.info("item.open={}", item.getOpen()); log.info("item.regions={}", item.getRegions()); Item savedItem = itemRepository.save(item); redirectAttributes.addAttribute("itemId", savedItem.getId()); redirectAttributes.addAttribute("..
[Thymeleaf] 타임리프와 스프링의 통합 2 - 담장자님 이것 좀 추가해주세요 ~
·
Spring/Thymeleaf
만약 이전 프로젝트에서 요구 사항이 추가되었다고 가정하자.이번 포스팅에선 단순하게 요구 사항이 추가 되었을 때, 어떤 식으로 확장할지 아이디어만 간단하게 내보자. [Spring] MVC 패턴 웹 페이지 9(完) - RedirectAttributes 적용리다이렉트까지는 완벽하게 적용했다.이제 사용자가 상품을 저장하면 "저장 되었습니다" 라는 메시지를 보여주도록 사용자 친화적 수정을 해보도록 하겠다 ! [Spring] MVC 패턴 웹 페이지 8 - PRG 패bdisappointed.tistory.com안녕하세요 담당자님, 이거 이거 추가좀 부탁드릴게요..판매 여부-판매 오픈 여부-체크 박스로 선택할 수 있다.등록 지역-서울, 부산, 제주-체크 박스로 다중 선택할 수 있다.상품 종류-도서, 식품, 기타-라디오..
[Thymeleaf] 타임리프와 스프링의 통합 1 - 입력 폼 처리하기
·
Spring/Thymeleaf
스프링와 통합을 위해 타임리프에서 다양한 편의 기능을 제공한다.타임리프는 그러한 기능으로 스프링과 밀접하게 통합될 수 있다. [Spring] MVC 패턴 웹 페이지 1 - 요구사항 분석상품을 관리할 수 있는 간단한 서비스를 구현 해보자 !이번에는 요구 사항을 분석하고, 어떤 흐름으로 개발할지를 먼저 살펴 본다.요구 사항 분석상품 도메인 모델상품은 다음 필드를 가져야 한bdisappointed.tistory.com이전에 진행했던 상품관리 프로젝트에서 이러한 기능을 추가하여 리팩토링해보자.입력 폼 처리하기타임리프에서는 다음과 같은 기능을 제공한다th:object : 커맨드 객체 지정*{..} : 선택 변수 식 -> th:object 애서 선택한 객체에 접근th:field : HTML 태그의 id, name,..
[Thymeleaf] 타임리프 기본 기능 4 - 템플릿 조각과 레이아웃
·
Spring/Thymeleaf
웹 페이지를 개발할 때 공통 영역이 상당 존재한다.만약 이런 공통 부분에 문제가 생겨서 수정을 해야한다면 모든 페이지에 다 수정해야할까? (참고로 메서드로 뽑아도 어차피 메서드를 호출 하는 부분을 모두 수정해야한다.)이런 문제점을 해결하기 위해 타임리프에서 템플릿 조각과 레이아웃 기능을 제공한다.컨트롤러부터 만듭시다package hello.thymeleaf.basic;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;@Controller@RequestMap..
[Thymeleaf] 타임리프 기본 기능 3 - 자바 스크립트 인라인
·
Spring/Thymeleaf
지난번에 이어 3번째 기능, 자바 스크립트 인라인 기능을 알아보자 !컨트롤러package hello.thymeleaf.basic;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import jakarta.servlet.http.HttpSession;import lombok.Data;import org.springframework.stereotype.Component;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.ann..
[Thymeleaf] 타임리프 기본 기능 2 - 속성 값 설정, 반복, 조건부 평가, 주석, 블록
·
Spring/Thymeleaf
이전 글에 이어 타임리프의 속성 값, 반복, 조건부 평가, 주석 및 블록에 대해 알아보자흐름을 따라가기 위한 컨트롤러package hello.thymeleaf.basic;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import jakarta.servlet.http.HttpSession;import lombok.Data;import org.springframework.stereotype.Component;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.sprin..