묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
session
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1. 세션이 무엇인지 정확히 이해하지 못하고 있습니다. 저장소 정도로 이해하면 될까요?2. HttpSession session = request.getSession(); 세션이 있으면 세션 반환, 없으면 신규 세션을 생성한다고 하셨는데 request의 어떤 정보를 보고 세션을 반환하는 건가요?다른 호스트 100명이 호출하면 새로운 세션 100개를 생성하는 건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
요청 마다 쓰레드 생성이라는게 정확히 어떤 의미인가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]요청 마다 쓰레드 생성이라는게 어떤 의미인가요?예를 들어, 자바 스프링에서 메소드1을 실행하고 메소드2를 실행하고 메소드3을 실행하는 등의 새로운 실행이 필요한 순간마다 쓰레드를 생성한다는 의미도 되나요?아니면 서로 다른 사용자(유저)들이 WAS에 요청을 할 때 마다 생성되는게 쓰레드인것인가요??
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
request.setAttribute vs model.addAttribute
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]request.setAttribute vs model.addAttribute두개의 차이점이 뭘까요?A. request.setAttribute해당 http 요청이 끝나기 전까지 임시 저장소 기능B. model.addAttribute뷰에서 값을 사용할 수 있도록 저장 컨트롤러에서 뷰로 값을 넘겨줄 때 Model 을 사용하고 있는데굳이 request 를 사용할 필요가 없는 상황들이라서 Model 을 사용하고 있는거죠? 이렇게 이해하고 있는데 사용 범위에서 차이가 있는건가요?
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
어그리거트 설계
jpa를 활용해서 어그리거트를 만들고 있습니다. 게시글 (post 어그리거트)게시자 (member 어그리거트)로 어그리거트를 나눴습니다. 그리고 프로젝트 패키지 구조는 이런 식 입니다.controller- post- memberservice- post- memberdomain (entity와 repository 인터페이스)- post- memberinfra (repository 구현체)- post- member 만약 같은 데이터베이스임에도 post엔티티가 member엔티티를 간접참조(Long memberId를 통한 참조)를 하고 있다면, post 상세페이지에서 member의 이름을 띄워주는 것을 어떻게 구현해야 좋을까요? 현재 고려하고 있는 방법은 두 가지 입니다.service/post 패키지에 PostDetailService 객체를 만든다. 그리고 이 객체가 postRepository와 memberRepository를 di 받은 다음에 두 엔티티를 가져오고 responseDto로 합쳐서 PostDetailController에게 리턴한다.이유는 member 어그리거트가 다른 서버로 분리될 경우, memberRepository의 구현체만 변경하면 될 것 같아서 입니다. (member의 서버가 다른 서버가 되면 member 정보를 api로 받아와야 할 것 같아서 그렇게 하였습니다.) 또 다른 방법으로는 현재는 같은 rdb에 저장되어 있으니 Dao객체를 만들어서 조인으로 responseDto를 직접 만드는 방법이 있을 것 같습니다. jpa 연관관계는 없으니 조인으로 쿼리를 날려야 할 것 같습니다. 어느 방법이 더 좋은 방법인가요? 혹은 더 좋은 방법이 있을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
게시글 구현에 대한 질문
현재 게시글과 댓글에 대한 프로젝트를 만들고 있습니다.만들던 도중에 질문이 생겨 글을 올리게 되었습니다. 게시글과 댓글은 각각 다른 어그리거트인거 같은데,게시글 상세페이지를 보여주는 서비스에서다른 어그리거트인 댓글repository를 di해서 사용해도 문제가 없나요? 그리고게시글 댓글의 연관관계를 양방향으로 하지 않고단방향으로 manyToOne만 해놓았습니다.게시글 상세페이지 서비스에서는 댓글repository를 활용하여댓글 10개를 가져옵니다. (manyToOne로 엮인 게시글은 fetch join)이 댓글 10개를 게시글상세responseDto로 넘겨서 dto로 변환합니다.이 방식도 문제가 없을까요 패키지 구조는 이렇습니다.controller - post - comment service - post (게시글 상세 페이지를 보여주는 서비스 위치) - comment domain - post - comment repository - post - comment (댓글repository 위치)
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 mvc2 - api예외처리 - @ExceptionHandler 강의 관련 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@ExceptionHandler 강의에서 @ResponseStatus(HttpStatus.BAD_REQUEST)를 지정했으므로 HTTP 상태코드 400으로 응답한다고 하셨는데 또 @ResponseStatus 는 HTTP 응답 코드를 동적으로 변경할 수 없다고 하시는데 @ResponseStatus(HttpStatus.BAD_REQUEST)는 동적으로 상태코드를 변경한거 아닌가요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
오류 코드 Validation과 메세지 처리 과정
@PostMapping("/add") public String addItemV4(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { //검증 로직 if(!StringUtils.hasText(item.getItemName())) { bindingResult.rejectValue("itemName","required"); } if(item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000) { bindingResult.rejectValue("price", "range", new Object[]{1000,1000000}, null); } if(item.getQuantity() == null || item.getQuantity() > 9999) { bindingResult.rejectValue("quantity", "max", new Object[]{9999}, null); } //특정 필드가 아닌 복합 룰 검증 if(item.getPrice() != null && item.getQuantity() != null ) { int resultPrice = item.getPrice() * item.getQuantity(); if(resultPrice < 10000){ bindingResult.reject("totalPriceMin", new Object[]{10000, resultPrice}, null); } } if (bindingResult.hasErrors()) { log.info("errors={}", bindingResult); return "validation/v2/addForm"; } ... }제가 생각하는 error 메세지 출력 과정(검증과정)이 맞는 것인지 확인부탁드립니다..!! (addItemV4 기준) 스프링 부트가 errors 메시지 파일을 인식…HTML 폼에서 넘어온 데이터가 검증로직에 걸리면 rejectValue를 통해 bindingResult에 에러 내용을 담는데 MessageCodesResolver을 통해 다음과 같은 오류 코드도 자동으로 생성한다. 예) required.item.itemName, required.itemName, required.java.lang.String, required 또한 사용자 입력 값을 저장해준다.bindingResult에 에러사항이 있으면 bindingResult의 에러 내용이 자동으로 model에 포함되고 다시 validation/v2/addForm으로 돌아간다.타임리프 화면을 렌더링 할 때 th:errors가 실행되면서 오류가 있다면 위에서 생성된 오류 메시지 코드를 순서대로 돌아가면서 메세지 파일과 만족하는 값을 찾아 나타내고(세부적인 것이 더 우선) 없으면 디폴트 메시지를 출력한다. 그리고 th:field는 정상 상황에서는 모델객체의 값을 보여주지만 에러가 있다면 FieldError에서 보관한 값을 꺼내어 나타낸다.추가적으로 만약 타입 오류와 같은 바인딩 오류라면 스프링은 FieldError 를 생성하면서 사용자가 입력한 값을 넣어둔다. 그리고 해당 오류를 BindingResult에 담아서 컨트롤러를 호출한다. 감사합니다!
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Validator
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1. V3dp ItemValidator 클래스를 적용하는 코드가 보이지 않는데 적용되는 이유가 궁금합니다.Validation이 데이터의 유효성을 검사하는 걸로 알고 있습니다. @ModealAttribute에서 타입 변화가 되지 않는 것들에 대해 ValidationBean이 적용되어야 하는 것이 아닌가요? 왜 타입 변화가 실패한 것에 대해서 ValidationBean 적용을 하지 않는지 궁금합니다. 제가 반대로 이해하고 있는 것 같은데 무엇을 잘못 이해하고 있는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hello.html 404 에러가 나옵니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]개인적인 사정으로 인해 인텔리제이가 아닌 codespace ide를 사용해서 수강중입니다.controller 파일과 hello.html 파일 둘 다 pdf 에서 그대로 복사하여 실행했는데 404에러가 나옵니다.문제가 무엇일까요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링mcv2 - 로그인처리2 - 스프링 인터셉터 요청 로그
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링mvc2 강의에서 로그인처리2 - 스프링 인터셉터 요청 로그 강의에서 LogInterceptor 가 싱글톤처럼 사용된다고 했는데 왜 그런건가요??빈으로 등록이 안됐는데 어떻게 싱글톤으로 관리되는건가요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
File, Resource 차이점이 궁금해요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 업로드 할땐 new File() 을다운로드와 조회할땐 new URLResouce()를 사용하셨는데둘의 차이점이 뭔지 설명은 없어서요.검색해봐도 명확한 답변이 안 나와 올려봅니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
수업자료 오타 문의
========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]교재 '6장 스프링 MVC - 기본기능' 의 20페이지에서 @Conroller로 표기되어 있는데 혹시 @Controller 아닌가요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
게시글 만들기 구현
안녕하세요. 질문이 있어서 글을 올립니다. 게시글을 타임리프로 구현할 때,게시글 상세화면에서 댓글들을 가져와야 하는 상황입니다.댓글은 페이징이 필요합니다. 댓글 첫 페이지 부터 무조건 ajax로 만드는 게 맞는 건가요?처음에는 최신 댓글 10개를 보여줄건데,게시글상세 요청 -> 게시글 랜더링 -> ajax로 댓글 첫페이지 요청게시글상세 요청 -> 게시글과 댓글첫페이지 랜더링 -> 댓글 두번째페이지부터 ajax로 요청 어느 방법이 맞는 건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
view에 대한 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. public FrontControllerServletV1() { // 해쉬맵은 키와 값으로 저장됨 => URI는 키, 객체는 값임 controllerV1Map.put("/front-controller/v1/members/new-form", new MemberFormControllerV1()); controllerV1Map.put("/front-controller/v1/members/save", new MemberSaveControllerV1()); controllerV1Map.put("/front-controller/v1/members", new MemberListControllerV1()); } WEB-INF는 외부에서 들어오지 못하니 webapp 폴더 밑에 jsp 폴더 안에 있는 파일로 먼저 호출한 다음 컨트롤러로 WEB-INF 하위 파일들을 RequestDispatcher 객체을 통해 서버 단에서 이동하는 게 맞나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
responseEntity
return new ResponseEntity<>("OK",HttpStatus.OK); // response.setStatus(200);위 두개가 무슨 차이 인가요??
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
섹션 01 8강 질문입니다
8강 스프2탄_Junit리스트보기 Controller테스트 강의 중 질문입니다.테스트코드 BoardControllerTest.java에서@Testpublic void testList() throws Exception{log.info(mockMvc.perform(MockMvcRequestBuilders.get("/board/list")).andReturn().getModelAndView().getModelMap());} 굵은 글씨 get이라고 하셨는데BoardController.java에서@GetMapping("/list")public String getList(Model model) {List<Board> list=boardService.getList();// 객체바인딩model.addAttribute("list",list);return "board/boardList";}굵은 글씨 @GetMapping이라고 해줘서 테스트코드에서 get인 것은 알겠는데왜 get이라고 해 줬는데 이해가 잘 안되서요..특별한 거 없으면 그냥 get이라고 해주면 되는 건가요? 두번째 질문은다음 강의 언제 나오나요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MemberRepository test에서 객체생성
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]스프링 MVC 1편 - 회원 관리 웹 애플리케이션 요구사항 강의를 듣다 질문이 생깁니다. 이 때 test를 하면서 MemberRepository를 싱글톤으로 유지한다 하셨는데 테스트 코드에서 바로 MemberRepository.getInstance를 사용할 수 있는 이유가 MemberRepository 클래스에서 static으로 new를 해서 맞나요?? 제 이해로는 코드가 실행이 되면 모든 static 부분 코드를 읽어 실행하는데 이 때 new MemberRepository가 실행되어 객체가 생성되었다 이해했습니다. 제 이해가 맞을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Item -> ItemSaveForm 교체하는 과정에서 질문 있습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네[질문 내용]여기에 질문 내용을 남겨주세요.Item 도메인 객체 대신 폼 데이터 전달을 위해서 ItemSaveForm으로 교체해서 사용을 했는데Post요청으로 폼 데이터 불러오는 부분 말고 Get요청으로 상품 추가 폼 불러오는 부분에서model.addAttribute("item", new Item()); 대신model.addAttribute("item", new ItemSaveForm()); 으로 변경해야 하는 것이 아닌지 궁금합니다!이 부분에 대한 언급이 없으셔서 혹시 바꾸지 않은 특별한 이유가 있으실까요?
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
github repository 어떤 것일까요?
현재 스프1탄 mvc01버전 듣고 있는데 hikari관련 오류가 나서 깃허브가서 소스코드를 가져오려고 합니다.깃 들어가니 레포지토리가 정리가 잘 안되어있어서 찾지를 못하겠는데어떤 레포지토리를 봐야하나요???
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
데이터 전송 시 보안 방법
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]위 그림과 같이 전송한 데이터를 다 볼 수 있는데 만약 민감한 데이터를 전송하는 경우에는 어떤 방식으로 전송을 하게 되나요?