스프링 웹 MVC
스프링 웹 MVC
수강정보
(92개의 수강평)
1629명의 수강생
스킬태그 #Java, #Spring, #MVC, #Back-End
5개월 할부시
월 22,000원110,000원
지식공유자 : 백기선
60회 수업 · 총 11시간 수업
기간 : 평생 무제한 시청
수료증 : 발급 강의
수강 난이도 : 중급이상
jaden 프로필

Validation 이 적용이 잘 되지 않습니다. jaden 25일 전
안녕하세요 기선님 언제나 좋은 강의 너무 감사드립니다!  최신버전 부트를 사용하고 있어서 @Valid 어노테이션을 사용하기위해 의존성은 추가했습니다. 그런데 Event 의 limit 프로퍼티에 @Min(0) 을 추가했고,  mock으로 -10을 넘기는데 BindingResult 에서 에러로 잡지 못하고 그대로 넘겨주는데 제가 뭘 잘못한걸까요 ㅠㅠ  작성한 코드는 다음과 같습니다 테스트코드 @Testvoid createEventModel() throws Exception{ mockMvc.perform(post("/eventsModel") .param("name","event1") .param("limit", "-10")) .andDo(print()) .andExpect(status().isOk()) ;} 핸들러 @PostMapping("/eventsModel")@ResponseBodypublic Event createEventModel(@Valid @ModelAttribute Event event, BindingResult bindingResult){ if (bindingResult.hasErrors()) bindingResult.getAllErrors().stream().forEach(e -> System.out.println(e.toString())); Event event1 = new Event(); event1.setId(10); event1.setName(event.getName()); event1.setLimit(event.getLimit()); return event1;} 이벤트에 @Min 은 추가했습니다  @Min(0)private Integer limit; 다음에서 테스트를 수행해도 hasErrors()로 걸리질 않습니다..

2
혬 프로필

this 질문입니다. 1달 전
@ModelAttribute("owner") 사용한 메서드부분에서 this는 어떤 값을 의미하나요??

1
데비 프로필

@RequestParam 데비 2달 전
안녕하세요 강사님, @RequestParam으로 요청매개변수를 Map이외에 List, Optional 객체로도 받아 사용할 수 있다는것을 알았는데 spring 내부적에서 포멧터를 사용해 바인딩을 해주는지 궁금합니다

1
데비 프로필

메시지컨버터에 대한 궁금증.. 데비 2달 전
안녕하세요,  @RestController 또는 @ResponseBody를 사용하지 않고 도메인 객체를 리턴했을 때 response body에 JSON형태로 응답이 되는거 같은데 Spring 내부에서 어떻게 판단하고 동작하는지 궁금합니다. 예제 @Controller @RequestMapping(value = "/test") public class TestController  { @GetMapping("/event") public User event(){ User testUset = new User(); testUset.setId(1); testUset.setEmail("test@gmail.com"); return testUset; } } 결과값 Content-Type: application/json; responseBody: {"id":1 "email":"test@gmail.com"}

1
이성국 프로필

안녕하세요 aop에 대해서 질문이 있습니다. 이성국 3달 전
안녕하세요 강사님 강좌를 보고 난 뒤에 혼자 스프링을 공부하는데 질문이 있어서 이렇게 질문드립니다.. 1. aspectj와 spring aop는 다른 것이며 spring aop는 프록시기반이고 aspectj는 ctw나 ltw로 실행되는데 왜 spring aop로 aop적용할때도(@EnableAspectAutoJProxy를 이용하여 다이나믹프록시방식을 사용할때) aspectj에 있는 @aspect를 쓰는 것인가요?? 2. 그리고 커스텀에노테이션 선언할때 @LoginCheck를 만들때 Retention을 Runtime이아니라 Class로해도 AOP가 정상 실행이 되던데 이게 어떻게 가능한건가요? 다이나믹프록시는 런타임에 주입되니까 Runtime으로 선언해야하는거아닌가요?

3
별 프로필

Get 요청 body에 관해서.. 3달 전
비동기 요청을 위해서 자바스크립트를 잠깐 배웠을때,  Get으로 요청을 하면 body는 포함이 안된다고 배워서 @Requestbody를 사용할땐 늘 Post요청을 했는데 어떻게 Get으로 요청이 될 수 있는건가요?? 

1
Walla 프로필

질문드립니다. Walla 3달 전
안녕하세요. 아직은 부족하지만 기선님 강의듣고 열심히 공부진행하고 있습니다. 에러관련해서 질문 좀 드리려고 합니다. 소스코드를 똑같이 따라했지만, 테스트 진행시 Bean을 찾지못한다는 에러코드를 만나게 되었습니다.  강의찍으실때와의 버전이 달라서 에러가는 것인지 확인하기가 힘드네요. 그럼 잘 부탁드리겠습니다. 주소 : https://github.com/horange89/mvc_study_web 감사합니다~!

2
황보협 프로필

강의 4:27쯤 질문입니다 황보협 3달 전
@Beanpublic HandlerMapping handlerMapping(){      new로 핸들러매핑생성     return 만든 핸들러매핑 객체 }  이 형식에서 만약 public void handlerMapping(){        new로 핸들러매핑 만듬} 이렇게 void로 끝내고 return 을 안해주면 빈으로 등록이 안되나요?

1
Taehee-kim-dev 프로필

@ModelAttribute와 @RequestBody Taehee-kim-dev 3달 전
안녕하세요. 대댓글로 질문을 이어갔는데 누락되었는지 답변이 안달려서 다시 질문드립니다ㅠ @ModelAttribute는 GET방식(url 쿼리 파라미터)이든, POST방식(body 쿼리 파라미터)이든 쿼리 파라미터 방식 (key1=value1&key2=value2&...)은 모두 매핑이 되지만, JSON형태는 매핑이 안돼서, @RequestBody @ModelAttribute를 같이 쓰면 매핑이 안되는 것 맞나요?

1
gilmat 프로필

블로그 정리 관련하여 문의 드립니다. gilmat 4달 전
안녕하세요 백기선선생님의 강의를 스프링 프레임워크 핵심 기술을 듣고 현재 웹 MVC 강좌를 듣는 학생입니다. 스프링 프레임워크 핵심 기술 질의 응답에서 블로그 정리를 하셔도 괜찮다는 글을 보고 현재 블로그에 웹 MVC 강좌를 들은 내용을 정리하여 올리고 있는데  직접 문의를 드리고 올리는 것이 맞다고 생각되어 문의를 드립니다. 항상 좋은 강의를 올려 주셔서 감사합니다.

1
Taehee-kim-dev 프로필

@RequestBody와 @ModelAttribute Taehee-kim-dev 4달 전
안녕하세요, 수업 잘 보고 있습니다. 저는 Controller에서 RequestMapping을 할 때 습관적으로 @ModelAttribute를 적어주는데요, Client단에서 JSON으로 요청을 보냈을 때, @RequestBody와 함께 @ModelAttribute를 적으면 제대로 바인딩이 안되는 경험을 했습니다. @RequiredArgsConstructor @RestController public class NotificationController { private final NotificationService notificationService; private final NotificationDeleteRequestDtoValidator notificationDeleteRequestDtoValidator; @InitBinder("notificationDeleteRequestDto") public void initBinderForNotificationDeleteRequestDtoValidator(WebDataBinder webDataBinder){ webDataBinder.addValidators(notificationDeleteRequestDtoValidator); } @PostMapping(NOTIFICATION_DELETE_URL) public ResponseEntity deleteNotification(@SessionAccount Account sessionAccount, @Valid @RequestBody @ModelAttribute NotificationDeleteRequestDto notificationDeleteRequestDto, Errors errors){ if(errors.hasErrors()){ return ResponseEntity.badRequest().build(); } // notificationService.deleteNotification(sessionAccount, notificationDeleteRequestDto); return ResponseEntity.ok().build(); } } 이렇게 하면 바인딩이 안되어 null값으로 들어오고, @RequiredArgsConstructor @RestController public class NotificationController { private final NotificationService notificationService; private final NotificationDeleteRequestDtoValidator notificationDeleteRequestDtoValidator; @InitBinder("notificationDeleteRequestDto") public void initBinderForNotificationDeleteRequestDtoValidator(WebDataBinder webDataBinder){ webDataBinder.addValidators(notificationDeleteRequestDtoValidator); } @PostMapping(NOTIFICATION_DELETE_URL) public ResponseEntity deleteNotification(@SessionAccount Account sessionAccount, @Valid @RequestBody NotificationDeleteRequestDto notificationDeleteRequestDto, Errors errors){ if(errors.hasErrors()){ return ResponseEntity.badRequest().build(); } // notificationService.deleteNotification(sessionAccount, notificationDeleteRequestDto); return ResponseEntity.ok().build(); } } 이렇게 하면 바인딩이 잘 되더군요.. @ModelAttribute는 @RequestBody와 같이 쓰면 안되는건가요 원래? 아니면 제가 뭔가 잘못한 게 있는건가요?

4
김환석 프로필

파일 다운로드 OutputStream / ResponseEntity 차이 질문입니다 김환석 4달 전
안녕하세요 기선님, 항상 좋은 강의 감사드립니다. 강의를 들으면서 오늘 처음으로 궁금한 점이 생겨 질문 드립니다. 저는 강의를 수강하기 전에 파일 다운로드 기능을 구현할 때 아래와 같은 형식으로 Stream 관련 api을 사용하여 다운로드 기능을 구현했었는데요. 아래는 강의를 들으면서 한 코드입니다. 강의를 들으며 오늘 처음 ResponseEntity 를 사용해보면서 문득 궁금점이 생겨, 혼자 예제를 만들어 테스트를 해봤습니다. 혹시 위 두 방식 사이에서 차이점이 있는지 궁금합니다. Stream을 통해 다운로드를 구현하는 방식과 ResponseEntity Body에  File Resource 를 넣어 반환하는 방식이 결과적으로 파일 다운로드하는 것은 같고,  단지 구현하는 방식의 차이일까요?

1
mailislove 프로필

강의 프로젝트를 STS나 eclipse로 생성하는 방법 질믄입니다. mailislove 4달 전
안녕하십니까? 기본적인 질문이라 망설이다 올립니다. 저는 STS로 프로젝트를 생성하여 강의를 받으려고 합니다. 아래와 같은 방법으로 프로젝트를 생성하고, 강의의 소스를 해당 폴더를 만들어 진행해도 되는지요? FIle - New - Dynamic Web Project - 프로젝트 생성 - 프로젝트 선택 - Configure - Convert to Maven Project  아니면  File - New - Spring Starter Priject 로 구성하여 사용해야 하는지요?   혹시 제가 잘못 알고 있거나 추가로 설정할 것이 있는지요? 향후, 다른 강의인 "스터디올래" 프로젝트도 위와 같은 것으로 생성하고 진행해도 되는지 문의 드립니다. 감사합니다.

1
김하영 프로필

add Configuration에서 Tomcat server 김하영 5달 전
Tomcat Server가 없으면 어떻게 해야 할까요? 

4
Seongjin Yoo 프로필

JSR 303 애노테이션이 안나옵니다. Seongjin Yoo 5달 전
따로 무엇을 적용해야하나요?? 강의에서는 딱히 그런거 없었는데 왜 안되는지 모르겠어요ㅠㅠ 인터넷 서칭해 보니까 dependency hibernate를 추가하라고 하는데  쌤은 추가없이 사용하셔서 여쭤봅니다!! 참고로 spring framework boot는 2.3.0 릴리즈 사용하고 있습니다. 혹시 몰라서 pom.xml 내용 올립니다. <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>me.whiteship</groupId> <artifactId>demo-web-mvc</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo-web-mvc</name> <description>Demo project for Spring Boot</description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>

1
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스