inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

http://localhost:8080/front-controller/v1/members/new-form 페이지를 찾을 수 없음

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 위 주소로 들어갔는데 404오류가 나타나서 어디서 문제인지 잘 모르겠어서 질문 남깁니다..

  • mvc
  • spring
  • MVC
nvm7588 댓글 1 좋아요 0 조회수 931

ControllerV3의 ModelView 클래스

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

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
  • spring
  • MVC
fauuuuupie 댓글 1 좋아요 0 조회수 576

@ModelAttribute 사용 질문

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요 ! 강의 잘 듣고 있습니다 감사합니다 ! 제가 만약 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
  • spring
  • MVC
두용 댓글 1 좋아요 1 조회수 669

경로문제

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

몇시간쨰 해매고 있네요 재설치 하고 계속 spring boot 실행해도 이게 뜨는데 왜그런지 알수 있을까요

  • MVC
  • mvc
  • spring-boot
  • spring
  • java
마이클 댓글 2 좋아요 0 조회수 633

404에러

미해결

스프링 프레임워크는 내 손에 [스프2탄]

안녕하세요. 다름이 아니라 나프1탄,2탄 때 잘만 구동되던 게 갑자기 404 에러가 떠서요 ㅠㅠ 중간에 인텔리제이에 톰캣 연동하느라 따로 톰캣을 다운받았었는데 그게 문제가 되는 걸까요? 구글링 하면서 웬만한 건 다 따라해봤는데 해결이 안돼서 여쭤봅니다..

  • MVC
  • spring
  • mvc
  • jquery
  • jpa
  • spring-security
  • Spring Security
  • JPA
댓글 1 좋아요 0 조회수 447

MySQL table 만들기중

미해결

[NarP Series] MVC 프레임워크는 내 손에 [나프1탄]

"member" 테이블은 안만들어지고 "members" 테이블은 만들어지는데 둘다 쿼리는 똑같습니다 왜 그런건지 알려주실수있나요..?

  • pojo
  • mvc
  • ajax
  • mysql
  • jsp
  • MVC
JEHYUNG KIM 댓글 1 좋아요 0 조회수 426

52번 사진이 올라가지가 않습니다.

미해결

스프링 프레임워크는 내 손에 [스프1탄]

10MB를 절대 넘지 를 않는데 무슨 이유 때문인지 계속 실패 메시지만 뜨네요 무슨 이유 인지를 잘 모르겠습니다. porm.xml과 tomcat에도 넣어줬으며 폴더도 다시 한번 새로 만들어서 해보았으나 사진이 업로드가 되지 않습니다.

  • MVC
  • jsp
  • mvc
  • spring-security
  • Spring Security
  • spring
댓글 1 좋아요 0 조회수 488

eGov 와 Intellij 둘쓰고 싶은데?

미해결

스프링 프레임워크는 내 손에 [스프2탄]

eGov 와 Intellij 둘쓰고 싶은데? 안녕하세요 강의 잘듣고 연습하고 있습니다^^. eGovframe속에 내장된 mysql과 Intellij와 새로운mysql설치후 실행해보니 자꾸에러나는데 어떻게하면 좋을까요? eGov속 mysql를 삭제해야하나요?

  • jquery
  • spring
  • mvc
  • MVC
  • jpa
  • Spring Security
  • spring-security
  • JPA
kwshong7 댓글 2 좋아요 0 조회수 630

Number 질문

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 코드 보다가 이해가 안가는 부분이 있어 질문드립니다! Number key 부분에서 key에 왜 타입으로 Number 타입이 쓰였는지 잘 이해가 안갑니다.. 모든 기본 자료형이 들어오게 Number 타입으로 받고 그걸 long 형으로 반환하도록 longValue()를 쓴건가요..?

  • spring
  • mvc
  • MVC
  • spring-boot
  • java
김예진 댓글 1 좋아요 0 조회수 365

강의 들으면서 영한님께 여쭤보고 싶은게 있습니다!

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

강의 너무 잘 듣고 있습니다. 강의 들으면서 영한님께 여쭤보고 싶은게 있습니다! MVC의 내부동작이나 스프링 프레임워크의 내부 동작은 어떤 방식으로 파악하시는지 궁금합니다. 스프링 프레임워크가 너무 방대하다고 생각되서 디버깅으로 파악하기도 힘들다고 생각하는데, 어떤 방식으로 세세한 내부 구조를 파악하셨는지 궁금합니다.

  • mvc
  • MVC
  • spring
YOGURT 댓글 1 좋아요 0 조회수 530

h2 연결

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예 [질문 내용] h2로 웹사이트 들어가려는데 오류가 떠요 ㅠㅠ 왜이런거죠?

  • MVC
  • spring
  • mvc
  • spring-boot
  • java
댓글 1 좋아요 0 조회수 1002

PKIX path building failed

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 템플릿] 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
  • spring
  • mvc
  • java
  • spring-boot
볶음밥 댓글 1 좋아요 0 조회수 728

index.html 사이트 연결할 수 없음

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 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
  • MVC
  • spring
댓글 1 좋아요 0 조회수 605

DI 적용해보기

해결됨

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요. 항상 좋은 강의 감사합니다. 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
  • MVC
  • spring
이승훈 댓글 1 좋아요 0 조회수 718

인터셉터의 호출 순서 질문입니다.

해결됨

스프링 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 afterComplete preHandle 은 order 의 순위대로 로그가 찍히는데, postHandle 과 afterCompletion 의 경우 order 의 순위와 반대로 호출 이 됩니다. 혹시 위 2개의 결과에 대한 이유를 설명해주실 수 있을까요..? 그냥 로직때문에 그런 것인지 궁금합니다.

  • mvc
  • MVC
  • spring
김회민 댓글 1 좋아요 1 조회수 639

서버 단에서 input 태그의 type 속성을 확인하는법

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

서버는 http요청을 통해 form 태그를 이용한 데이터가 들어올 때, form 태그 내부에 있는 input 태그의 type 속성 값을 어떻게 알 수 있나요? 인코딩되는 과정에서 type 속성 값이 어딘가 저장되는 건가요?

  • spring
  • mvc
  • MVC
세승 댓글 1 좋아요 0 조회수 333

7:50 api 호출시 exception이 발생하면 WebServerCustomer 클래스 호출하는 이유

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요 선생님~ 단순한 질문이 하나 있는데요! 컨트롤러에서 Exception이 발생하면 반대로 인터셉터 -> 서블릿 -> 필터 -> WAS로 예외를 넘겨주고 WAS에서 에러 페이지를 찾는다는 것에 대해서는 이해를 했는데, WebServerCustomizer 클래스를 호출한건 WebServerFactoryCustomizer라는 인터페이스를 구현했기 때문에 해당 클래스를 스프링 컨테이너가 인지하고 호출한건가요?

  • mvc
  • MVC
  • spring
dingding2 댓글 1 좋아요 0 조회수 446

*.jsp 주소로 이동하면 jsp파일 다운로드가 됩니다

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

안녕하세요. /jsp/members/new-form.jsp 경로로 이동하면 페이지 이동이 안되고 new-form.jsp 파일을 다운로드 하는 창이 나타납니다. 영한님이 작성하신 코드를 복붙했는데도 이런 현상이 나타 납니다. 왜 이러는지 이유를 모르겠습니다 ㅠㅠ

  • spring
  • mvc
  • MVC
Dopot 댓글 1 좋아요 1 조회수 1287

Spring boot 없이 thymeleaf 사용못하나요?

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

스프링 부트없이 Spring 사용하려하는데 jsp로 작업했던 파일을 thymeleaf로 변경하기 위해 html파일도 만들고 suffix도 변경해주었는데 아래와 같은 에러가 나옵니다. No mapping for GET /WEB-INF/view/register.html jsp로 바꿔서 하면 잘되는데 suffix만 html로 바꾸면 페이지를 찾지를 못하네요ㅠㅠ 원래 thymeleaf가 spring boot에서만 사용가능한 것 일까요?

  • mvc
  • MVC
  • spring
백엔드 주니어 개발자 댓글 1 좋아요 0 조회수 1082

인기 태그

인프런 TOP Writers

주간 인기글