묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원목록 white label error (500) java.lang.NullPointerException
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 회원목록 조회시Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Wed May 31 00:06:03 KST 2023There was an unexpected error (type=Internal Server Error, status=500).No message availablejava.lang.NullPointerException at hello.hellospring.controller.MemberController.list(MemberController.java:40) 라고 뜨며 아래는 MemberController 코드입니다 package hello.hellospring.controller; import hello.hellospring.domain.Member; import hello.hellospring.service.MemberService; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @Controller public class MemberController { private final MemberService memberService; @Autowired public MemberController(MemberService memberService) { this.memberService = memberService; } @GetMapping("/members/new") public String createForm() { return "members/createMemberForm"; } @PostMapping("/members/new") public String create(MemberForm form) { Member member = new Member(); member.setName(form.getName()); memberService.join(member); return "redirect:/"; } @GetMapping("/members") private String list(Model model) { List<Member> members = memberService.findMembers(); model.addAttribute("members", members); return "members/memberList"; } }
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
41강 아이디 중복확인 Ajax 질문이 있습니다
안녕하세요 선생님41강 아이디 중복확인 섹션에서 Interface인 MemberMapper.java 에서public Member registerCheck(String memID);위처럼 선언해주었고,MemberMapper.xml 에서<select id="registerCheck" resultType="srv.ges.entity.Member">SELECT * FROM mem_tbl WHERE memID = #{memID} </select>위처럼 select문에 resultType만 작성하셨는데,'memID'를 Parameter로 넘기니 ParameterType도 작성해야 하는 것 아닌가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서버에서 css 적용이 안됩니다
강의 그대로 코드 받아 적었는데 캐시 삭제 등 여러 방법 찾아서 해봤는데도 안되네요;;로컬에선 적용이 됩니다. 해결했습니다<th:href>문을 빼고 실행했더니 제대로 나와서 다시 넣고 실행했더니 올바르게 적용이 되네요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
messages.properties 렌더링 오류 발생
hello=안녕 hello.name=안녕 {0} label.item=상품 label.item.id=상품 ID label.item.itemName=상품명 label.item.price=가격 label.item.quantity=수량 page.items=상품 목록 page.item=상품 상세 page.addItem=상품 등록 page.updateItem=상품 수정 button.save=저장 button.cancel=취소위에는 messages.properties의 코드입니다그리고 밑에는 application.peoperties 코드입니다spring.messages.basename=messages,config.i18n.messages 서버를 띄우고 실행한 결과 밑에와 같이 렌더링이 됩니다한글버전만 문제가 있는데 어떤 것 때문에 그런걸까요??messages.properties_en는 정상수행됩니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@BeforeAll 오류로 테스트가 무시되는 결과가 나옵니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의를 다 수강하고 테스트를 해보니 이런 오류가 뜨고 테스트가 다 무시되었습니다.어떻게 해결해야 할까요?코드도 함께 올립니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
RequestMappingHandlerAdapter 흐름 질문
안녕하세요.영한님 질문 드립니다. RequestMappingHandlerAdapter 동작 방식ArgumentResolver 호출컨트롤러 파라미터가 @RequestBody Object 인 경우에는 HttpMessageConverter 사용컨트롤러 파라미터가 @ModelAttribute, @PathVariable, @RequestParam 인 경우에는 ConversionService 사용 으로 이해하면 될까요? 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 MVC 구조에서 핸들러 어댑터는 어디 있나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 영한님. 강의 아주 재밌고 유익하게 보고 있습니다. 감사합니다!16분 25초에 스프링 MVC 구조가 완성되었다고 말씀하셨습니다.@Controller, @RequestMapping 애노테이션을 사용해서 빈 객체로 등록하고 해당 URL로 요청객체가 들어오면 해당 빈 객체의 process 메서드를 호출하는 과정 즉, 핸들러매핑이 된 것은 이해가 갔습니다.하지만 핸들러 어댑터 목록을 조회하고 그 어댑터가 핸들러를 지원하는지 확인하는 로직은 구현하지 않으신 것으로 이해했습니다. 심지어 V5처럼 List<MyHandlerAdapters> handlerAdapters를 사용하여 V3, V4 두 버전을 지원하기 위한 과정도 없었기 때문에 ModelAndView 참조타입으로 변환해주는 핸들러어댑터가 필요없다고 생각했습니다. 그럼에도 불구하고 영한님께서 왜 핸들러어댑터 그림을 포함시켜서 스프링 MVC 구조가 만들어졌다고 말씀하셨는지 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
자바 기본적인 두수 바꾸기 메소드 질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. public static void swap(int a, int b) {if (a > b) {int t= a; a = b; b = t; }}int x= 1000;int y= 100;swap(x,y);이렇게 코드작성하면x는 100나오고 y는 1000나와야정상아닌가요?? 왜 인텔리제이에서 돌리면 x값과 y값이 그대로일까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
서블릿 필터 에러 처리, 컨트롤러 에러 처리
안녕하세요 영한님영한님의 새로운 도전 응원하며강의 항상 잘 듣고 있습니다.!! 예외 처리 관련해서 강의를 듣고 제가 이해한것이 맞는지 확인차 질문 드립니다.일단 예외는 2가지 상황에서 발생 가능하다고 생각했습니다.서블릿 컨테이너에서 발생한 예외스프링 컨테이너에서 발생한 예외 서블릿 컨테이너에서 발생한 예외서블릿 컨테이너는 스프링 컨테이너가 직접 관리할 수 없기 때문에 @ControllerAdvice와 @ExceptionHandler을 사용하여 예외 처리를 할 수 없습니다. 따라서 필터에서 발생한 예외는 필터에서 처리해야 합니다. 예외 처리 방법예외가 발생하는 필터의 상위 필터에서 예외가 발생하는 필터의 예외를 처리하도록 한다.흐름서블릿 <- 필터1(필터2, 3 예외처리) <- 필터2 <- 필터3(예외 발생) 스프링 컨테이너에서 발생한 예외스프링 컨테이너에서 발생한 예외를 서블릿 컨테이너까지 보낼필요는 없다. 스프링 컨테이너에서 예외를 처리하고 서블릿 컨테이너에는 정상 호출인 것처럼 하면 된다. 예외 처리 방법@ControllerAdvice와 @ExceptionHandler을 사용하여 예외 처리를 한다. 흐름필터 <- 디스패처 서블릿 <- 컨트롤러 <- 인터셉터 <- ExceptionResolver(서비스 레이어 예외 처리) <- 서비스 레이어(예외 발생) 추가로 궁금한것이 있습니다.제가 보기에는 인터셉터에서 예외를 처리할 수 있을것 같습니다.그런데 인터셉터에서 예외를 처리하지 않는 이유는단일 책임 원칙을 지키기 위해서이다.따라서 컨트롤러(핸들러) 내부에서 발생한 예외 처리는 ExceptionResolver에 위임한다.정도로 이해 하면 될까요? 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원서비스테스트 강의에서 fail();이 동작안합니다
요런 에러가 뜹니다 package hello.hellospring.service;import hello.hellospring.domain.Member;import hello.hellospring.repository.MemoryMemberRepository;import org.junit.jupiter.api.AfterEach;import org.junit.jupiter.api.BeforeEach;import org.junit.jupiter.api.Test;import static org.assertj.core.api.Assertions.*;import static org.junit.jupiter.api.Assertions.*;class MemberServiceTest {//MemberService memberService = new MemberService(); //MemoryMemberRepository memberRepository = new MemoryMemberRepository(); MemberService memberService; MemoryMemberRepository memberRepository; // 동작하기 전에 MemberService에 넣어줌 @BeforeEach public void beforeEach(){// DI memberRepository = new MemoryMemberRepository(); memberService = new MemberService(memberRepository); }@AfterEach public void afterEach() {memberRepository.clearStore(); }@Test void 회원가입() {// given Member member = new Member(); member.setName("hello"); //member.setName("spring"); // when Long saveId = memberService.join(member); // then Member findMember = memberService.findOne(saveId).get(); assertThat(member.getName()).isEqualTo(findMember.getName()); }@Test void 중복_회원_예외() {// given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); // when //try-catch 방법 try {memberService.join(member2); fail(); } catch (IllegalStateException e){assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); }/*memberService.join(member1); IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));//예외가 발생해야 한다. assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");*/ }@Test void findOne() {}}해당 소스 입니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서로 다른 도메인을 가진 repository에 대해서
안녕하세요강의를 듣고 토이프로젝트를 진행 중인데 고민이 있어서 여쭤봅니다.한개는 고객을 담당하는 레포지토리고, 한개는 방명록을 담당하는 레포지토리입니다.// 고객 레포지토리 public class MemberRepository{ public void save(Member member){ sqlSession.insert("com.example.toy.mapper.MemberMapper.save", member); } } // 방명록 레포지토리 public class BoardRepository { public void save(Board board){ sqlSession.insert("com.example.toy.mapper.BoardMapper.save", board); } }서로 기능이 거의 비슷해서 추상화를 통해 의존성 주입을 받고 싶은데 파라미터의 타입이 달라서 못하는 상황입니다.여기서 파라미터의 타입을 아예 Object로 하는게 좋은지, 아니면 이런 경우에는 인터페이스로 추상화를 할수 없는 건지 궁금합니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
loginForm.html에서 form태그 action 속성에 관해 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 [질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 강사님 지금 loginForm.html에서 form태그 action 속성이 "item.html"로 되어 있는데 "/login"으로 해줘야 loginController에서 login post 요청으로 인식하여 loginService가 진행되지 않나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Mac 프로젝트 삭제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]프로젝트를 같은 이름으로 새로 생성해서 열려고 하는데 이전에 사용하던 프로젝트가 완전히 삭제가 안 된 거 같아요 .새 프로젝트를 여니까 build 에서 오류가 뜨는데 어떻게 해결해야 할까요
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인터페이스와 구현체 관련 질문 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]영한님 강의 중 회원 서비스 테스트까지 일단 습득을 하고 있는 중 @AfterEach 이과정에서 MemoryMemberRepository repository = new MemoryMemberRepository();이렇게 하셨지만 원래 인터페이스에서 가져와야한다고 하셔서 MemberRepository repository = new MemoryMemberRepository();인터페이스에서 가져와서 사용 하고 있습니다.돌아가기는 잘 돌아 가는데, 여기서 질문이 노란전구가 뜨면서 alt + enter 했더니 MemoryMemberRepository repository = new MemoryMemberRepository();이렇게 바꾸라고 권장? 하는데요.뭐가 맞는 것일까요??
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Handler와 Controller의 정확한 차이가 뭔가요?
Handler가 더 큰 범위라고 말씀해주셨는데 그럼 Handler 안에 Controller말고 다른 종류의 handler도 있나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
단순 Json 데이터 보내기와 ResponseEntity<>로 감싸는 차이점
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 mvc 1편 강의를 통해 Json형식으로 보내는 법에 대해 배웠는데요.1)public String xxmethod1() {return "보낼 데이터"}2)public 객체 xxmethod2(){ 객체 = new 객체(); 객체.setSometing('xx'); return 객체}3) public ResponseEntity<객체> xxmethod2(){return ResponseEntity<>(객체, 상태코드);} 위와 같은 예시를 들겠습니다.질문 1.만약 프론트가 CSR이라면 JSON으로 대부분 백으로 데이터 요청을 한다고 알고있습니다. CSR은 프론트 프레임워크로 만든 페이지 안의 빈칸에 그냥 데이터를 채워 넣는 것이라면 결과적으로 1번과 2번은 차이가 없는 것 아닌가요? 질문 2.3)은 ResponseEntity로 한 번 감싸서 객체를 보내는 것인데 위의 2번과 결과는 동일하지만 상태코드를 보내는 것인데, 상태코드를 개발자가 직접 조작하는 것이 좋은 일인가요? 질문 3. 질문2처럼 상태코드를 개발자가 직접 조작하였지만 200 OK가 아닌 요청 시 에러가 나도 서버에서 200 OK 상태코드를 전송하는 것 아닌가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
비밀번호가 틀렸을 때 사라지지 않게 하려면 어떻게 수정해야하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]password가 input에 들어가 있어서 사라진다고 하셨는데 틀렸을 때 사라지지 않고 남아있게 하려면 어떻게 해야하나요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 서비스 개발 단축키 에러 / .ifPresent부분이 에러
[질문 내용]회원서비스개발에서 2:18에1. 무슨 단축키를 누르면 Optional<Member> byName = 이 뜨나요? 저는 그냥 타이핑했는데 어떻게 하면 그렇게 생기죠?2.그리고 단축키 command option v 로 byName을 result로 변경했는데 그것도 단축키를 하면 왜 단축키를 했을 때 수업처럼 옵션이 안뜰까요 3.Optional<Member> byName = 부분 지우고result부분 지우고 코드 정리했을 때 저는.ifPresent부분이 에러가 납니다.4.강의에 4:56 부분 control + t 로 method입력해서 Extract Method 가 뜨는데 저는 안뜹니다.command option m 단축키로 Extract Method를 시도했는데 사용할수없다는데..어떻게해야되나요확인부탁드릴게요...
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ModelView 에서 Object 객체 질문
[질문 내용]안녕하세요 ModelView 의 model 에서 질문이 있습니다.지금 ModelView에서 model인 Map 의 value 값을 Object 형태로 저장하고있습니다. 이를 통해 MemberSaveControllerV3 에서 ModelView 의 model에 데이터를 저장할 때 Member 객체 형태로 저장할 수 있는 것 같은데,이 모델은 MyView 를 통해서 JSP 로 넘어가게될텐데, Object 객체에서 username, age 데이터를 꺼내는게 어떻게 가능한걸까요..? JSP 의 기능중에 이를 가능하게하는 기술이 있는걸까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@RequestParam 사용
안녕하세요여러개의 변수를 사용 할때는 @RequestParam으로 강의에서 알려 주신 것처럼 Map으로 List 형식으로 밖에 안되나요?감사합니다.