묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
경로?
안녕하세요 1. 요청에 매핑할 때 @GetMapping(/text-basic) 으로 하든 @GetMapping(text-basic) 으로 하든 전혀 상관이 없는 것인가요? 2. 뷰를 리턴할 때 return /basic/text-basic으로 하든 return basic/text-basic으로 하든 상관이 없나요?? 실수로 /를 빼고 실행을 했는데도 제대로 실행이 되길래 맨 앞에 /를 빼거나 넣어봤는데 코드가 문제없이 실행이 되길래 질문드립니다. 항상 답변 감사드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
RequestParam & ModelAttribute
안녕하세요 김영한 개발자님! 강의 항상 잘 듣고 있습니다. @RequestParam과 @ModelAttribute 파트를 듣고 살짝 헷갈리는게 있어서 질문글 남겨요 @RequestParam은 만약 url을 localhost:8080/?username=inflearn&age=20 이라고 보냈을 때 @RequestParam String username, @RequsetParam int age 에 각각 inflearn, 20이 바인딩 되는 것이라고 이해했습니다. @ModelAttribute는 객체에 setter, getter 역할을 대신해주는 것이라고 이해했습니다. 제가 제대로 이해한게 맞을까요? 제대로 이해한게 맞다면 저 두개의 차이점이 무엇인지 잘 모르겠습니다ㅜ 단순히 RequestParam은 int, string 같은 일반타입이고 ModelAttribute는 객체를 대상으로 하는건가요? 아니면 RequestParam을 더 편리하게 만든게 modelAttribute라고 이해하면 되는걸까요? 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Error: Could not find or load main class worker.org.gradle.process.internal.worker.GradleWorkerMain
검색을 해보아도 동일한 에러와 관련된 글이 거의 없습니다. 별다른 코드도 없는데 무엇이 문제일까요? 그리고 보니까 pc 내의 모든 프로젝트에서 똑같은 에러가 발생하네요. 무슨 설정을 해야 해결되는지 모르겠습니다. 아래의 에러는 IntelliJ 오른쪽 사이드 바에 있는 build 를 클릭했을 때 나는 에러입니다. build.gradle에 에러가 있는건지 뭔지 모르겠네요.참고로 settings : gradle -> IntelliJ 로 변경했습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 책 추천
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요.! 김영한강사님 로드맵을 따라가려고 합니다. jpa로드맵 말고, '스프링 완전정복' 로드맵을 따라가려고 합니다. 혹시 강의와 같이 볼만한 책을 추천해주실 수 있나요?
-
미해결윤재성의 만들면서 배우는 Spring MVC 5
질문입니다.
혼자 해결해보려다 답이 안나와서 질문드립니다.<c:forEach /> 사용하여 top_menu 의 게시판 링크를 작성하는 부분에서 ${topMenuList} 가 제대로 동작하지 않는 것 같습니다.게시판 이름별로 링크가 생성되지 않고 ,${obj.board_info_name} 만 화면에 출력됩니다.어느 부분에서 놓치고 있는 건지 모르겠습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
디스패처 서블릿의 생성과정에서 질문드립니다!
저번질문을 너무 두서없이 남겨서 하루동안 정리하고 다시 재작성합니다. 공부를 하면서 디스패처서블릿의 실행과정을 다음과 같이 정리했는데 이 내용이 맞는지 궁금해서 질문드립니다 내장 WAS기준 Springboot 1. 스프링 부트 실행 -> 2. springApplication.run으로 WebapplicationContext가 생성 프로젝트의 ComponentScan이 일어난다. run내부적으로 비어있는 ApplicaitonContext를 생성하고 refresh를 통해서 스프링컨테이너(루트컨텍스트가 생성 여기서 스프링 부트는 스프링도 마찬가지, mvc 구조에서 사용될 Converter나 리졸버 들을 @EnableautoConfiguer로 등록) -> 3. 서블릿 컨테이너 만들어지고(WAS) @EnableAutoConfiguation에 의해 -> 4. 서블릿 컨텍스트를 만든다(웹어플리케이션이 등록) -> 5. 서블릿 컨텍스트가 생성이 되고(톰켓 카타리나) -> 6. 서블릿 컨텍스트에 대한 초기화 작업이 시작된다 깡spring에서는 web.xml로 작업하던 것(Java코드로 설정하는 것 또한 지원)이 Java코드 작성으로 변경(ServeltContextInitializer의 OnStartup 메서드를 이용해서 리스너를 등록하고, 필터를 등록, ContextLoader의 서블릿 컨텍스트 생성 이벤트가 발생하고 ContextLoaderListener에 의해서 RootApplicationContext인 Spring IoC 컨테이너가 주입된다.) -> 7. 서블릿 컨텍스트에 대한 초기화및 생성 및 RootWebApplication( 프로젝트에서 생성한 스프링 컨테이너) 주입이 완료 되어 ServletContextListener contextInitialized 메서드 실행된다. -> 8. 나머지 설정인 WebMvcConfigurer에 대한 (Cors 라던지 ArgumentResolver 라던지) 자동설정 이외의 커스텀 값을 추가로 넣어준다 -> 9. 서버가 listen하기 시작 -> 10. 요청이 오면 dispatherServlet객체가 생성이 된다. ( => ? 그전에 webapplicationContext의 빈에 들어가 있는데 왜 지금 생성되는 것인지 궁금합니다) -> 11. 객체가 생성이 되면서 webapplicationContext에 있던 mvc설정 값들을 넣어주어 초기화를 시켜준다. 초기화 메서드는 initStrategies사용 이 과정이 맞는지 궁금해서 질문 작성했습니다 감사합니다 음 제가 궁금한걸 잘못 작성 한것 같습니다. 디스패처 서블릿 보다는 스프링부트든 스프링이든 서버에는 서블릿 객체들이 올라가고 사용자 정의로 작성한 applicationContext에 등록된 @controller나 @service 들이 서블릿컨테이너의 컨텍스트에 올라가는 것이라고 이해했는데 이 동작과정이 잘 와닿지 않아서 질문드렸습니다 추가적으로 이런 applicationContext등록 과정에서 컨텍스트를 따로 2개로 분리하여 작성하는 경우도 봐서 왜 그런지 굼금했습니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
th:xxx
안녕하세요, 18:49초에 " 타임리프 뷰 템플릿을 거치게 되면 원래 값을 th:xxx 값으로 변경한다. 만약 값이 없다면 새로 생성한다." 이 부분에서 만약 값이 없다면 새로 생성한다는 의미를 정확하게 모르겠습니다. <link href="../css/bootstrap.min.css" rel="stylesheet"> 처럼 되어있다면 자동으로 <link th:href="@{../css/bootstrap.min.css}" rel="stylesheet"> 이렇게 만들어준다는 건가요? 항상 답변 감사합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
member table inset 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. MEMBERS 에 insert 하려고하는데 아래와 같은 오류가 발생합니다. 실행하고자 하는 코드 : insert into member(name) values("spring") 오류 코드 Column "spring" not found; SQL statement:insert into member(name) values("spring") [42122-200] 42S22/42122 (도움말)org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "spring" not found; SQL statement:insert into member(name) values("spring") [42122-200] at org.h2.message.DbException.getJdbcSQLException(DbException.java:453) at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) at org.h2.message.DbException.get(DbException.java:205) at org.h2.message.DbException.get(DbException.java:181) at org.h2.expression.ExpressionColumn.getColumnException(ExpressionColumn.java:163) at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:145) at org.h2.command.dml.Insert.prepare(Insert.java:327) at org.h2.command.Parser.prepareCommand(Parser.java:744) at org.h2.engine.Session.prepareLocal(Session.java:657) at org.h2.engine.Session.prepareCommand(Session.java:595) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1235) at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:212) at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:201) at org.h2.server.web.WebApp.getResult(WebApp.java:1459) at org.h2.server.web.WebApp.query(WebApp.java:1116) at org.h2.server.web.WebApp$1.next(WebApp.java:1078) at org.h2.server.web.WebApp$1.next(WebApp.java:1065) at org.h2.server.web.WebThread.process(WebThread.java:178) at org.h2.server.web.WebThread.run(WebThread.java:94) at java.base/java.lang.Thread.run(Thread.java:834) test.mv도 읽기전용이 아닌것을 확인했습니다. 왜 이런 오류가 발생하고.. insert가 안될까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
글자수 제한 질문
강의 내용과는 조금 다른 부분이긴 한데 구글링을 어떤 키워드로 해야 될지 모르겠어서 질문드립니다 Been validation으로 글자수 제한할 때 띄어쓰기 제외할 수 있을까요? @Size(max = 5) 이렇게 어노테이션을 붙여주면 5자 이하로 제한하는 걸로 알고 있는데, 이러면 띄어쓰기 포함하는 걸로 알고 있거든요 "5자 제한임" - 이건 띄어쓰기 포함 6자인데 제외하면 5자라서 이것도 통과될 수 있도록 하는 옵션이 있을까요?
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
mvc패턴을 사용한 예제를 볼 수 있는곳이 있나요?
공식문서에서는 SSR방식을 사용한다고 하셨는데, CSR을 사용하는 방식과, MVC패턴을 사용한, 사용하지 않은 코드를 보면서 차이를 보고 싶습니다 예제 사이트와 코드는 어디서 찾을 수 있나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
필터에 관련된 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. 필터도 서블릿처럼 동작하는걸로 알고있고, 다만 디스페처서블릿전에 먼저 동작하는것으로 알고있습니다. 또 필터또한 서블릿컨테이너에서 관리되는것으로 알고있습니다. 서블릿이기때문이라고 생각합니다. 그런데 필터를사용하기위해서 webconfig에서 @Bean으로 스프링컨테이너에 필터를 등록해주는 작업을하는데요. 왜 두개의 컨테이너에 등록하는건가요? 중간에 잠시설명하신것중에 부트가 was를 내장하고있기때문에 @bean으로 스프링컨터네이너에 올라간다면 자동으로 서블릿컨테이너에도 필터가 등록되기때문인가요? 어떤 오개념이 있는지 알고싶습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
정적컨텐츠 관련 질문이요!
@Controllerpublic class HelloController { @GetMapping("hello-static") public String hello(Model model) { model.addAttribute("data", "hello!!"); return "hello"; }} 위와 같이 컨트롤러를 만들었습니다. 따라서, localhost:8080/hello-static 을 입력하면template/hello.html로 이동되게 설정했습니다. 하지만, localhost:8080/hello-static.html을 입력하면 template/hello.html로 이동되지 않고 static/hello-static.html로 이동이 됩니다. 강의 내용에 따르면 localhost:8080/hello-static.html을 입력했을 때 hello-static 관련 컨트롤러가 없는 경우에 static/hello-static.html로 이동된다고 하신것으로 기억합니다. 그런데 hello-static 컨트롤러가 있는데도 왜 static으로 가게 되는지 궁금합니다!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MVC 실습관련 질문입니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]MVC 강의 내용에서 return 한 내용을 보고 templates에서 return한 내용과 동일한 이름을 갖고 있는 html을 찾아 변환된 내용을 웹 브라우저에 뿌려준다고 했습니다 웹 브라우저에서 요청이 들어오면 내장 톰켓서버가 요청을 스프링 컨테이너에 알리고 컨테이너는 맨 처음 컨트롤러에 해당 내용이 있는지 찾는다고 하셨는데 이때 컨트롤러에 있는 경우에는 return 받은 내용을 무조건 templates에서만 찾는건가요? (궁금해서 static 하위로 옮겨서 수행을 해보니까 오류가 나는걸 보고 컨트롤러에 있으면 -> templates를 확인, 컨트롤러에 없으면 -> static에서 확인 이렇게 이해를 했습니다) 이거관련해서 정확하게 알고 싶어 질문 남깁니다 감사합니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Cause: invalid source release: 11
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]Cause: invalid source release: 11 에러가 뜨는데 어떻게 해야하나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
쿠키와 토큰의 차이가 무엇인가요?
쿠키와 토큰의 차이가 무엇인가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@RequestParam Map<String, Object> paramMap
안녕하세요, 14:43초 쯤 @RequestParam Map<String, Object> paramMap에서 String 대신 Object를 사용한 이유가 있을까요?? 감사합니다!
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
패키지 구조 설계
패키지 구조 설계를 강의로 다루는 부분이 있을까요? 아직 제대로된 프로젝을 만든적이 없어서 패키지 구조 설계를 어떻게 해야할지 잘 모르는 상태입니다. 뭔가 알듯하면서도 잘 모르는게 개념이 확실히 안잡혀서 그런것같은데 혹시 패키지 구조 설계를 다루는 강의가 있을까요? 현재는 Spirng 로드맵대로 강의 보고있는중인데 jpa 강의쪽에서 패키지 구조 설계를 다루는지 궁금합니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
logout에 대해서
강의에서 보면 @PostMapping("/logout")public String logout(HttpServletResponse response) { expireCookie(response, "memberId"); return "redirect:/";} private void expireCookie(HttpServletResponse response, String cookieName) { Cookie cookie = new Cookie(cookieName, null); cookie.setMaxAge(0); response.addCookie(cookie);} 강의 코드가 위와 같은데요. 궁금한게 왜 굳이 POST 메서드로 컨트롤러 매핑을 했는지 궁금합니다 세션 쿠키는 어차피 요청시 값이 전달이 되어 GET으로 매핑해도 될것같은데 POST로 매핑한 이유가 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
4섹션 5번째 영상에서 @BeforEach로 감싸주는 이유가 궁금합니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 이렇게 작성해도 테스트 정상적으로 실행되는데 어떤 이유가 있어서 BeforeEach에서 매번 new로 객체를 만들어주신건지 궁금합니다!
-
해결됨[리액트 1부] 만들고 비교하며 학습하는 리액트 (React)
강의 설명란 오타 수정
git checkout -f ready/tab-view-2 가 아니라 git checkout -f ready/tab-2로 변경되어야 할 거 같습니다