30%
69,300원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
상품 등록 처리 - @ModelAttribute 질문입니다.
1.빨간색 박스끼리 서로 데이터를 받고 초록색끼리 데이터를 받는거 맞나요? // @PostMapping("/add") public String addItemV2(@ModelAttribute("item") Item item, Model model) { itemRepository.save(item); // model.addAttribute("item", item); //자동 추가, 생략 가능 return "basic/item"; }2. 위에 코드에서 ModelAttribute로 모델을 받아오는데 Model model이 부분은 또 왜쓰는건가요? @Data public class Item { private Long id; private String itemName; private Integer price; private Integer quantity; public Item() { 아래 부터는 상품 도메인 개발 강의 질문입니다. 기본생성자는 왜만드는건가요? @Data public class Item { private Long id; private String itemName; private Integer price; private Integer quantity; public Item() { }3분36초에서 4분까지 싱글톤을 넣기 위해서 static을 사용하시는 이유를 말씀하셨는데요.그런데 스프링부트는 자동으로 싱글톤 지원하는거 아닌가요?New를 작성하여 객체를 생성한다는게 자세하게 설명을 들을 수 있을까요? 9분 16초에서 지금은 스프링을 안쓴다고 하셨는데요. 스프링을 쓰는데는 강의에서 언제인가요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
콘솔에 "]"가 계속 출력됩니다.
콘솔에 계속 "]"가 출력됩니다.두 번째 사진은 회원가입 파라미터가 넘어가는 과정인데 username=kim&age=22]이렇게 나오는데 username=kim&age=22 이 파라미터를 프린터 한 적이 없는데 어느 과정에서 나오는 건지 모르겠습니다.아마 username=kim&age=22와 ]가 같이 프린트 되게 되어 있는 것 같은데 어떻게 찾아야할지를 모르겠어요
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
getUsername 메소드
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]사진과 같이 메서드 적용이 안되는데 혹시 이유를 알 수 있을까요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
"MVC 패턴 - 적용" 강의에서 질문 있습니다.
localhost:8080/servlet-mvc/members/new-form으로 접속할 때는 잘 되는데 "전송"을 누를 시 자꾸 404 에러가 납니다.... 다른 분들 질문도 확인보았는데 도대체 뭐가 문제인지 모르겠습니다... ㅠㅠhttps://drive.google.com/file/d/1ewVIIKcmZ3zOXwJd2yXv-mYleVoPXYSo/view?usp=drive_link이 링크는 제 코드 작성한 링크입니다.이렇게 코드를 작성하고 http://localhost:8080/servlet-mvc/members/new-form 으로 접속 하면 아래와 같이 화면이 잘 나옵니다.그런데 여기서 kim ,20 을 입력하고 전송을 누르니 아래와 같이 WhiteLabel 페이지 뜨면서 404 에러가 납니다...제 코드에 오타가 있는 걸까요 ㅠㅠㅠ다른분들이 질문한것들 참고해봤는데 @ServletComponentScan 도 달려있고 스프링부트3.0 이상이 해야하는 의존성도 build.gradle에 추가해주었습니다. 오타는 진짜 제가 수없이 확인했는데 없는것 같은데...... 뭐가 문제인지 알려주시면 감사하겠습니다 ㅠㅠ
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
/request-param-v1 질문있습니다.
@Slf4j @Controller public class RequestParamController { @RequestMapping("/request-param-v1") public void requestParamV1(HttpServletRequest request, HttpServletResponse response) throws IOException { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); response.getWriter().write("ok"); } @ResponseBody @RequestMapping("/request-param-v2") public String requestParamV2( @RequestParam("username") String memberName, @RequestParam("age") int memberAge) { log.info("username={}, age={}", memberName, memberAge); return "ok"; } 왜 requestParamV1 메소드는 Controller와 을 사용하고 @RestController을 사용해도 작동되는데 requestParamV2은 Controller 사용시 @ResponseBody를 붙여야 하잖아요. 인터넷에 찾아보니 메소드가 데이터(예: 문자열 "ok")를 반환하는 경우 ResponseBody를 작성해야 한다고 하는데요.근데 둘다. response.getWriter().write("ok");/ return "ok"; 데이터 반환 아닌가요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
model.addAttribute시 질문!!
컨트롤러에서 model.addAtrtibute시 attributeName을 임의로 설정하면 왜 th:value="${attributeName.} ( 프로퍼티 접근) 시에 오류가 생기는건가요??attributeName을 어떤거랑 일치시켜야 하나요?!
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Model 추가 - v3 강의 질문있습니다.
https://drive.google.com/file/d/1DbDboH5w-KDhpsm6lCYzZyJ7sEAWVV3d/view?usp=drive_linkModel 추가 - v3 부분을 작성했는데 아래부분은 회원가입과 목록이 출력이 되어야 하는데 정상작동하지 않아서 코드 올립니다.FrontController - v3회원가입회원목록
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
감사합니다
감사합니다
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 MVC - 컨트롤러 통합 질문있습니다.
스프링 MVC - 컨트롤러 통합 3분 44초 오류 화면에서 springcontollerv1에 이미 맵핑이 되어있다고 하셨는데요. v1이 코드 어느 부분에서 맵핑되어 있는건가요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MVC 프레임워크 만들기-유연한 컨트롤러1 - v5 질문있습니다.
MVC 프레임워크 만들기-유연한 컨트롤러1 - v5 28분49초 위 사진처럼 get뒤에 url주소가 어떻게 호출되는건가요? put주소를 틀린거를 줬는데요.
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
브라우저에서 url로 접근할때
브라우저에서 url로 접근할때는 메소드 속성이 무조건 GET인가요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
인텔리제이 디버그 질문입니다.
디버그가 왜 안되나요? 바로 톰캣 실행되는데요. 예를들어 디버그 모드면 watch부분이랑 뷰네임이 뭐가 들어가는지 보여야 하는거 아닌가요? 해당 코드는 view모델3부분입니다. 추가질문입니다. 제가 아래 2번째 사진(빨간색 박스)를 클릭했을 때 디버깅이 시작됩니다. (그전까지는 안되요.) 보통 파이참같은 경우 코드에서 중단점 설정 후 디버그를 누르면 바로 디버깅 모드 전환이 되는데요. 인텔리제이는 코드 중단점을 설정해놓아도 톰캣 스타트 시켜놓고(첫번째사진처럼) html에서 화면을 클릭해야 해당 디버깅이 들어가지나요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Model 추가 - v3 질문입니다.
Model 추가 - v3 23분 질문입니다.FrontControllerServletV3 코드입니다.package com.example.servservlet.web.frontcontroller.v3;import com.example.servservlet.web.frontcontroller.MyView;import com.example.servservlet.web.frontcontroller.v3.ControllerV3;import com.example.servservlet.web.frontcontroller.ModelView;import com.example.servservlet.web.frontcontroller.v3.controller.MemberFormControllerV3;import com.example.servservlet.web.frontcontroller.v3.controller.MemberListControllerV3;import com.example.servservlet.web.frontcontroller.v3.controller.MemberSaveControllerV3;import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.*;import java.io.IOException;import com.example.servservlet.domain.member.Member;import com.example.servservlet.domain.member.MemberRepository;import com.example.servservlet.web.frontcontroller.v1.ControllerV1;import jakarta.servlet.RequestDispatcher;import jakarta.servlet.ServletException;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.List;import java.io.IOException;import java.util.HashMap;import java.util.Map;@WebServlet(name = "frontControllerServletV3", urlPatterns = "/front-controller/v3/*")public class FrontControllerServletV3 extends HttpServlet { private Map<String, ControllerV3> controllerMap = new HashMap<>(); public FrontControllerServletV3() { controllerMap.put("/front-controller/v3/members/new-form", new MemberFormControllerV3()); controllerMap.put("/front-controller/v3/members/save", new MemberSaveControllerV3()); controllerMap.put("/front-controller/v3/members", new MemberListControllerV3()); } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String requestURI = request.getRequestURI(); ControllerV3 controller = controllerMap.get(requestURI); if (controller == null) { response.setStatus(HttpServletResponse.SC_NOT_FOUND); return; } //MemberFormControllerV3,MemberSaveControllerV3 내용을 paramMap에 저장한다. Map<String, String> paramMap = createParamMap(request); ModelView mv = controller.process(paramMap); //질문1. 자식 controller를 부모 ModelView에 저장하는 다형성을 뜻하는건가요?ModelView에 .process함수가 없는데 왜 저장하는거에요? //질문2. 아래부분에서 for문(반복문)이 없고 한개의 뷰네임을 저장하면 나머지 2개의 뷰 처리는 어떻게 하는건가요? //아니면 원래 반복문은 없고 요청이 있는 get(requestURI)만 viewName에 저장하는건가요? // 예를들어 /front-controller/v3/members/save 이면 viewName에 MemberSaveControllerV3()이부분을 저장하는게 맞나요? String viewName = mv.getViewName();//MemberFormControllerV3,MemberSaveControllerV3 내용 중 한개의 뷰네임을 저장한다. MyView view = viewResolver(viewName);//물리적 주소 저장 view.render(mv.getModel(), request, response); } private MyView viewResolver(String viewName) { return new MyView("/WEB-INF/views/" + viewName + ".jsp"); } private Map<String, String> createParamMap(HttpServletRequest request) { Map<String, String> paramMap = new HashMap<>(); request.getParameterNames().asIterator() .forEachRemaining(paramName -> paramMap.put(paramName, request.getParameter(paramName))); return paramMap; //<-질문3. 이 부분이 강의에서 각각 파라미터 네임을 계속 꺼내서 저장한다고 하셨는데 반복을 의미하는건가요? }}
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
"HttpServletRequest - 기본 사용법" 강의 내용 중 질문
처음 http://localhost:8080/request-header?username=hello 로 URL 입력 후 콘솔을 확인하면 아래와 같이 Header 편의 조회가 출력되었습니다.이후에 Postman을 통해서 다음과 같이 hello! 라는 메시지를 POST 방식으로 전송을 한 후 콘솔을 확인해 보니 아래와 같이 출력되었습니다.이때 Postman을 통해 보낸 방식에서 cookie가 조회되지 않는 이유는 Postman을 사용해서 POST 요청을 할 때 쿠키 설정을 따로 해주지 않아서 그런거고 크롬에서 URL을 검색해서 GET 방식으로 조회할 때는 크롬이 자동으로 쿠키를 할당해준건거요...??
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
HTTP 요청 메시지 로그로 확인하기
HTTP 요청 메시지 로그로 확인하기 위해application.properties에 다음과 같이 작성하고spring.application.name=Servlet logging.level.org.apache.coyote.http11=debug재실행 후에 http://localhost:8080/hello?username=park으로 요청을 보내니 다음과 같이 로그가 찍혔습니다.HTTP Request를 파싱하는데 에러가 발생합니다.어떻게 해결해야 하나요?답변해주시면 감사하겠습니다.HelloServlet 코드는 다음과 같습니다!package com.example.servlet.basic; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet(name = "HelloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("HelloServlet.service"); System.out.println("request = " + request); System.out.println("response = " + response); String username = request.getParameter("username"); System.out.println("username = " + username); // header response.setContentType("text/plain"); response.setCharacterEncoding("utf-8"); // html 안에 들어간다. response.getWriter().write("hello " + username); } }
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿, JSP, MVC 패턴질문입니다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="/jsp/members/save.jsp" method="post"> username: <input type="text" name="username" /> age: <input type="text" name="age" /> <button type="submit">전송</button> </form> </body> </html> 서블릿, JSP, MVC 패턴 강좌 : JSP로 회원 관리 웹 애플리케이션 만들기 10분에서요.age를 숫자가 아닌 문자를 넣으면 에러 페이지가 뜨는데 위에 코드에 숫자만 넣으라는 부분이 없는데 어디에서 에러를 잡아주는건가요? 자바는 아닌것 같아서요.2.MVC 패턴 - 적용 5분 45초 질문있습니다. 데이터 저장은 MemberRepository 에서 하는걸로 이해했는데요. servlet/src/main/webapp/WEB-INF/views/new-form.jsp 이 파일에서 save가 상대경로를 의미하여, /servlet/members/new-form-> /servlet/members/save로 바뀐다고 하셨는데요.그럼 save 즉 아래 파일(코드)에서 저장한다는 말씀인가요? <%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <meta charset="UTF-8"> <title>Title</title></head><body><!-- 상대경로 사용, [현재 URL이 속한 계층 경로 + /save] --><form action="save" method="post"> username: <input type="text" name="username" /> age: <input type="text" name="age" /> <button type="submit">전송</button></form></body></html> package hello.servlet.web.servlet;import hello.servlet.domain.member.MemberRepository;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;@WebServlet(name = "memberFormServlet", urlPatterns = "/servlet/members/new-form")public class MemberFormServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter w = response.getWriter(); w.write("<!DOCTYPE html>\n" + "<html>\n" + "<head>\n" + " <meta charset=\"UTF-8\">\n" + " <title>Title</title>\n" + "</head>\n" + "<body>\n" + "<form action=\"/servlet/members/save\" method=\"post\">\n" + " username: <input type=\"text\" name=\"username\" />\n" + " age: <input type=\"text\" name=\"age\" />\n" + " <button type=\"submit\">전송</button>\n" + "</form>\n" + "</body>\n" + "</html>\n"); }}
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
members 500에러 jsp경로문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]jsp 버전별로뭐가 문제일까요? https://drive.google.com/drive/folders/15jLgIsX62wpySXl_Zw3PWlFiqCv-EMVx?usp=sharing
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 띄우고 404 에러는 뜨는데 인텔리제이에서는 아무런 로그도 나오지 않습니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]v4 버전까지는 정상적으로 작동됐습니다이 챕터에서 강의 그대로 진행은 했지만, 아래의 오류가 발생합니다 인텔리제이로 스프링을 띄울 때 8080포트로 정상적으로 띄워집니다.localhost:8080으로 접근했을 때, index.html에서 404이 뜹니다.강의 pdf를 보면서 계속 코드의 다른 점을 비교해봤지만, 저로서는 도저히 v5 관련 링크가 아닌, index 조차도 안 나오는 이유를 모르겠습니다.아래에 코드 파일 링크 첨부하였습니다. 혹시 도움 요청 받을 수 있을까요?https://drive.google.com/file/d/1MXjKaQ51IdZzdTDeyJTamflrzokbES-_/view?usp=sharing
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
controller에서 service에 id를 넘기는 방법
안녕하세요문의사항이 있어 질문드립니다. 일반적인 controller, service, repository layer 아키텍처를 구성할때,answer controller의 특정 api가 파라미터를 통해 question 도메인의 id를 전달받은 경우가 있습니다.answer controller는 question 엔티티를 controller에서 찾아 전달할 수도 있고, answer repository에 그대로 question Id를 전달하여 answer service가 question 엔티티를 찾도록 위임할 수도 있습니다. 이때 어떤 방법을 선택하는 것이 더 객체지향이나 유지보수 측면에서 좋을지 조언을 얻고 싶습니다. 예상되는 장단점은 다음과 같습니다.Controller에서 questionId를 그대로 전달할 경우장점Controller의 코드가 복잡해지지 않고 web 계층 에만 집중할 수 있음단점service 계층에서 많은 일을 해야 함controller에서 Question 엔티티를 조회하여 전달할 경우장점service 인터페이스가 깔끔해짐단점controller가 조금 더 복잡해진다.question 엔티티를 조회하는 것이, 과연 controller의 역할인지 의문
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@RequestMapping 핸들러 매핑 질문입니다.
영상속에서는 핸들러 매핑 우선순위가@RequestMapping@Component로 스프링 빈 이름으로 핸들러 찾는다라고 적혀있는데핸들러 매핑이 컨트롤러를 찾는 개념 아닌가요?찾은 핸들러를 어댑터에서 가능한지 확인하고 핸들러 호출이라고 생각했는데@RequestMapping은 단독으로 쓰면 매핑이 안되니까핸들러 매핑이 아닌 다른거 아닌가요?