묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MVC와 템플릿엔진 강의 실습에서 계속 Whitelabel Error Page가 뜹니다
hello-template에 3번째줄에 문제가있는건지 계속 에러페이지가 뜹니다Recieved[]가 수신받은게 없다는 뜻이라던데 저것도 무슨 문제가 있는걸까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
errno 5 라는것이 계속 뜹니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Could not set process working directory to 'C:\[안전폴더]demo\demo': could not set current directory (errno 5) 프로젝트를 만들면 계속 이런식으로 뜨는데 무슨문제인가요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
TEST오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요 회원가입에서 오류가 떠요aused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springDataJpaMemberRepository' defined in com.example.hello_spring.repository.SpringDataJpaMemberRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Could not create query for public abstract void com.example.hello_spring.repository.MemberRepository.clearStore(); Reason: Failed to create query for method public abstract void com.example.hello_spring.repository.MemberRepository.clearStore(); No property 'clearStore' found for type 'Member'이런식으로 뭐가 정의되있다는데 뭐죠 ㅠㅠ
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
http://localhost:8080/front-controller/v1/members/new-form 페이지를 찾을 수 없음
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]위 주소로 들어갔는데 404오류가 나타나서 어디서 문제인지 잘 모르겠어서 질문 남깁니다..
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ControllerV3의 ModelView 클래스
modelView 클래스의 model의 경우 MemberFormControllerV3, MemberSaveControllerV3, MemberListControllerV3 객체가 모두 사용해야 하므로@Getter @Setter public class ModelView { private final String viewName; private static final Map<String, Object> model = new HashMap<>(); public ModelView(String viewName) { this.viewName = viewName; } public static Map<String, Object> getModel() { return model; } }이와 같이 private static final로 선언한 후 모델 객체를 사용할 때 하기 코드와 같이 ModelView.getModel()형식으로 불러와도 될까요?public class MemberListControllerV3 implements ControllerV3 { private final MemberRepository memberRepository = MemberRepository.getInstance(); @Override public ModelView process(Map<String, String> requestParamMap) { List<Member> members = memberRepository.findAll(); ModelView modelView = new ModelView("members"); ModelView.getModel().put("members", members); return modelView; } } ModelView의 viewName의 경우 호출하는 객체마다 다르게 들어올 수 있으니 static 없이 final로만 선언하면 될까요? 감사합니다:)
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@ModelAttribute 사용 질문
안녕하세요 !강의 잘 듣고 있습니다 감사합니다 ! 제가 만약 html 폼 에이름과 나이를 작성해서 전송하고내가 작성한 값을 다시 보여주는 응답을 받는다고 한다면이렇게 코드를 짜도 될까요 ? <p th:text="${username}">empty</p> <p th:text="${age}">empty</p>@PostMapping("/response-view-v3") public String responseViewV3(@ModelAttribute HelloData helloData, Model model) { model.addAttribute("username",helloData.getUsername()); model.addAttribute("age",helloData.getAge()); return "response/hello"; } 폼 데이터도 파라미터 형식이니까@ModelAttribute 로 요청파리미터를 받고helloData 객체를 생성한 후 요청 파라미터 이름으로프로퍼티를 찾아서 ( username,age)값을 넣어준다 (setUsername() , setAge() ) model.addAttribute : 데이터를 model 에 담고파라미터로 참조값을 전달한다 @RequestParam String username,@RequestParam int age그냥 이렇게 하는거랑 결과는 똑같은거죠?첫번째 방식 @ModelAttribute 는 helloData 객체를 생성하기 때문에메모리 성능면에서 안좋나요? 서포터즈분들 항상 친절한 답변 주셔서 감사합니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
경로문제
몇시간쨰 해매고 있네요 재설치 하고 계속 spring boot 실행해도 이게 뜨는데 왜그런지 알수 있을까요
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
1강 듣고 환경설정 하고 있는데 지정된 경로를 찾을 수 없다고 뜨네요
(사진)
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
404에러
안녕하세요. 다름이 아니라 나프1탄,2탄 때 잘만 구동되던 게 갑자기 404 에러가 떠서요 ㅠㅠ 중간에 인텔리제이에 톰캣 연동하느라 따로 톰캣을 다운받았었는데 그게 문제가 되는 걸까요? 구글링 하면서 웬만한 건 다 따라해봤는데 해결이 안돼서 여쭤봅니다..
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프1탄]
MySQL table 만들기중
"member" 테이블은 안만들어지고"members" 테이블은 만들어지는데둘다 쿼리는 똑같습니다 왜 그런건지 알려주실수있나요..?
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
52번 사진이 올라가지가 않습니다.
10MB를 절대 넘지 를 않는데 무슨 이유 때문인지 계속 실패 메시지만 뜨네요 무슨 이유 인지를 잘 모르겠습니다. porm.xml과 tomcat에도 넣어줬으며 폴더도 다시 한번 새로 만들어서 해보았으나 사진이 업로드가 되지 않습니다.
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
eGov 와 Intellij 둘쓰고 싶은데?
eGov 와 Intellij 둘쓰고 싶은데?안녕하세요 강의 잘듣고 연습하고 있습니다^^.eGovframe속에 내장된 mysql과 Intellij와 새로운mysql설치후 실행해보니 자꾸에러나는데어떻게하면 좋을까요? eGov속 mysql를 삭제해야하나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Number 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 코드 보다가 이해가 안가는 부분이 있어 질문드립니다!Number key 부분에서 key에 왜 타입으로 Number 타입이 쓰였는지 잘 이해가 안갑니다..모든 기본 자료형이 들어오게 Number 타입으로 받고 그걸 long 형으로 반환하도록 longValue()를 쓴건가요..?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의 들으면서 영한님께 여쭤보고 싶은게 있습니다!
강의 너무 잘 듣고 있습니다.강의 들으면서 영한님께 여쭤보고 싶은게 있습니다!MVC의 내부동작이나 스프링 프레임워크의 내부 동작은 어떤 방식으로 파악하시는지 궁금합니다.스프링 프레임워크가 너무 방대하다고 생각되서 디버깅으로 파악하기도 힘들다고 생각하는데, 어떤 방식으로 세세한 내부 구조를 파악하셨는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 연결
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]h2로 웹사이트 들어가려는데 오류가 떠요 ㅠㅠ 왜이런거죠?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
PKIX path building failed
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]Spring Initilizr 을 통해 project generating 한 후 Intellij 에서 실행하니 초기 빌드 과정에서 아래와 같이 에러가 뜨는데요, 찾아보니 제가 지금 사내 pc 및 네트워크를 사용 중이어서 뜨는 인증서 오류인 것 같습니다. 혹시 관련하여 해결책을 주실 수 있으실까요?PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
index.html 사이트 연결할 수 없음
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.webapp 아래 index.html 파일 잘 위치해 있습니다.http://localhost:8080/index.html 주소로 들어가면 사이트 연결할 수 없음이라고 뜨고IDE에서 run하면 뜨는 브라우저 아이콘 4개 중 크롬을 누르게 되면 http://localhost:63342/servlet/servlet.main/webapp/index.html?_ijt=gol0djjmpsd9cm9s9v6ag90urr&_ij_reload=RELOAD_ON_SAVE위 주소로 index.html 파일이 잘 열립니다.혹시 어떤 문제 때문에 이러는 건가요?이와 연관된 문제인 건지는 모르겠으나 위에 긴 주소로 열린 index.html 파일에서 jsp 회원가입, 회원목록을 눌렀을 때도 404에러만 납니다.알려주신 위치에 디렉토리 생성하고 파일 제대로 만들었음에두요.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
DI 적용해보기
안녕하세요. 항상 좋은 강의 감사합니다.FrontController에서 어댑터들을 DI로 적용할 수 있다고 하셔서 이를 구현해보고자 하였습니다.@WebServlet(name = "frontControllerServletV5", urlPatterns = "/front-controller/v5/*") public class FrontControllerServletV5 extends HttpServlet { ... @Autowired private Map<String, Object> handlerMappingMap; ... }처음에 컬렉션 객체들을 Bean으로 등록하여 주입받고자 HandlerMappingConfig클래스를 만들었습니다.@Configuration public class HandlerMappingConfig { @Bean public Map<String, Object> handlerMappingMap() { Map<String, Object> handlerMappingMap = new HashMap<>(); // V2 Controller handlerMappingMap.put("/front-controller/v5/v2/members/new-form", new MemberFormControllerV2()); handlerMappingMap.put("/front-controller/v5/v2/members/save", new MemberSaveControllerV2()); handlerMappingMap.put("/front-controller/v5/v2/members", new MemberListControllerV2()); // V3 Controller & V4 Controller ... return handlerMappingMap; } }그리고 제대로 주입을 받았는지 테스트하기 위해 FrontControllerServletV5 클래스의 service() 메소드에서 handlerMappingMap을 출력하도록 작성하였습니다.@WebServlet(name = "frontControllerServletV5", urlPatterns = "/front-controller/v5/*") public class FrontControllerServletV5 extends HttpServlet { ... @Autowired private Map<String, Object> handlerMappingMap; ... @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 정상적으로 주입되었는지 테스트하기 위해 출력 System.out.println("handlerMappingMap = " + handlerMappingMap); ... } }서버를 실행시켜 확인해보니 아래 그림과 같이 handlerMappingMap에 마치 컨테이너의 빈들이 다 들어온 것처럼 출력된 것을 확인할 수 있었습니다.왜 이런 현상이 나타나는지 모르겠습니다. 혹시 타입이 Map<String, Object>라 그런걸까요?감사합니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터의 호출 순서 질문입니다.
강의를 따라가다 문득 preHandle, postHandle, afterCompletion 의 순서를 알고 싶어서 LoginCheckInterceptor 에 해당 메서드를 추가하여 로그를 찍어보았습니다.질문은 맨 밑에 있으며, 코드는 이해를 돕기 위해 첨부했습니다.LogInterceptor@Slf4j public class LogInterceptor implements HandlerInterceptor { public static final String LOG_ID = "logId"; @Override public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler ) throws Exception { String requestURI = request.getRequestURI(); String uuid = UUID.randomUUID().toString(); request.setAttribute(LOG_ID, uuid); // @RequestMapping: HandlerMethod // 정적 리소스: ResourceHttpRequestMethod if (handler instanceof HandlerMethod) { // 호출할 컨트롤러 메서드의 모든 정보가 포함되어 있다. HandlerMethod hm = (HandlerMethod) handler; } log.info("[{}][{}] LogInterceptor preHandle", requestURI, uuid); return true; } @Override public void postHandle( HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView ) throws Exception { String requestURI = request.getRequestURI(); String uuid = (String) request.getAttribute(LOG_ID); log.info("[{}][{}] LogInterceptor postHandle", requestURI, uuid); } @Override public void afterCompletion( HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex ) throws Exception { String requestURI = request.getRequestURI(); String uuid = (String) request.getAttribute(LOG_ID); log.info("[{}][{}] LogInterceptor afterComplete", requestURI, uuid); if (ex != null) { log.error("LogInterceptor afterComplete Error: ", ex); ex.printStackTrace(); } } }LoginCheckInterceptor@Slf4j public class LoginCheckInterceptor implements HandlerInterceptor { @Override public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler ) throws Exception { String requestURI = request.getRequestURI(); String uuid = (String) request.getAttribute(LogInterceptor.LOG_ID); log.info("[{}][{}] LoginCheckInterceptor preHandle", requestURI, uuid); HttpSession session = request.getSession(); if (session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null) { log.info("미인증 사용자 요청 {}", requestURI); response.sendRedirect("/login?redirectURL=" + requestURI); return false; } return true; } @Override public void postHandle( HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView ) throws Exception { String requestURI = request.getRequestURI(); String uuid = (String) request.getAttribute(LogInterceptor.LOG_ID); log.info("[{}][{}] LoginCheckInterceptor postHandle", requestURI, uuid); } @Override public void afterCompletion( HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex ) throws Exception { String requestURI = request.getRequestURI(); String uuid = (String) request.getAttribute(LogInterceptor.LOG_ID); log.info("[{}][{}] LoginCheckInterceptor afterCompletion", requestURI, uuid); } }InterceptorConfig@Configuration public class InterceptorConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LogInterceptor()) .order(1) .addPathPatterns("/**") // 모두 허용 .excludePathPatterns("/css/**", "/*.ico", "/error"); // BlackList registry.addInterceptor(new LoginCheckInterceptor()) .order(2) .addPathPatterns("/**") .excludePathPatterns( "/", "/members/css", "/login", "/logout", "/css/**", "*.ico", "/error" ); } }결과 1 - 미인증 사용자 요청// /items 요청 [/items][45e50a37-57a0-4298-b50e-e42141005426] LogInterceptor preHandle [/items][45e50a37-57a0-4298-b50e-e42141005426] LoginCheckInterceptor preHandle 미인증 사용자 요청 /items [/items][45e50a37-57a0-4298-b50e-e42141005426] LogInterceptor afterComplete // Redirect - /login [/login][18f052ab-b849-4690-83ec-43866660f570] LogInterceptor preHandle [/login][18f052ab-b849-4690-83ec-43866660f570] LogInterceptor postHandle [/login][18f052ab-b849-4690-83ec-43866660f570] LogInterceptor afterComplete로그상으로 LoginCheckInterceptor의 afterComplete가 누락되었습니다.결과2 - 정상 처리// /login 요청 [/login][19bad338-e02d-4bbe-8b3a-5dfc55ad4428] LogInterceptor preHandle LoginService: 'test', 'test!' login? Member(id=1, loginId=test, name=테스터, password=test!) [/login][19bad338-e02d-4bbe-8b3a-5dfc55ad4428] LogInterceptor postHandle [/login][19bad338-e02d-4bbe-8b3a-5dfc55ad4428] LogInterceptor afterComplete // Redirect - /items [/items][679dc279-ff3a-4ee3-a424-26b18ac8dbbd] LogInterceptor preHandle [/items][679dc279-ff3a-4ee3-a424-26b18ac8dbbd] LoginCheckInterceptor preHandle [/items][679dc279-ff3a-4ee3-a424-26b18ac8dbbd] LoginCheckInterceptor postHandle [/items][679dc279-ff3a-4ee3-a424-26b18ac8dbbd] LogInterceptor postHandle [/items][679dc279-ff3a-4ee3-a424-26b18ac8dbbd] LoginCheckInterceptor afterCompletion [/items][679dc279-ff3a-4ee3-a424-26b18ac8dbbd] LogInterceptor afterCompletepreHandle은 order의 순위대로 로그가 찍히는데, postHandle과 afterCompletion의 경우 order의 순위와 반대로 호출이 됩니다. 혹시 위 2개의 결과에 대한 이유를 설명해주실 수 있을까요..? 그냥 로직때문에 그런 것인지 궁금합니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
서버 단에서 input 태그의 type 속성을 확인하는법
서버는 http요청을 통해 form 태그를 이용한 데이터가 들어올 때, form 태그 내부에 있는 input 태그의 type 속성 값을 어떻게 알 수 있나요? 인코딩되는 과정에서 type 속성 값이 어딘가 저장되는 건가요?