묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
CoreApplicationTests 오류
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]테스트코드 확인할 때 돌려보니까 저는 되게 긴 오류가 나타나더라구요... 어디서 오류가 난 건지 잘 모르겠습니다.. :(
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Model 과 ModelAndView
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.Model , ModelAndView 쓰임새 똑같은건가요 ? 정확한 차이점을 모르겠습니다 Model 객체는 인터페이스로 직접 인스턴스 생성은 못하고 파라미터로 구성했을때 스프링 빈에서 자동 주입받는 방식을쓰고ModelAndView는 클래스로 직접 인스턴스 생성하던가 파라미터로 구성해서 자동으로 주입 받을수있다이 정도 말고 각각 언제 써야하는지 이런게 와닿지가 않아서 질문드립니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
preHandle에서 session비교
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@Slf4j public class LoginCheckInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String requestURI = request.getRequestURI(); HttpSession session = request.getSession(); if(session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null) { log.info("미인증 사용자 요청"); //로그인으로 리다이렉트 response.sendRedirect("/login?redirectURL=" + requestURI); return false; } return true; } }session 비교부분에서 제가 생각하는게 맞는지 질문 요청합니다!if(session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null) 코드 부분에서 처음 제가 생각할때는 session == null 비교만 해주면 되지 않나? 라고 생각했습니다.생각을 해보니 사용자 아이디 세션 외 다른 세션값이 들어갈 수도 있기 때문에 한번 더 session.getAttribute(SessionConst.LOGIN_MEMBER) == null 코드를 통해 사용자아이디 세션까지 비교해서 로직을 수행하는것으로 보입니다. 또한 그냥 처음부터 if(session.getAttribute(SessionConst.LOGIN_MEMBER) == null) 로 코드를 작성하면 session이 아예없을 시 코드 참조가 아예 안돼서 사용을 못하는 것일까요?제가 생각한게 맞을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
쿠키 탈취 질문
쿠키의 문제점을 세션으로 어느정도 해결했지만, 결국 쿠키가 탈취되거나 공유되는 문제점은 해결되지 않는건가요? 그래서 찾아보니 Spring security로 이러한 문제점들을 편리하게 막을 수 있다는걸 알게 되었는데, 현업(실무)에서 이러한 이유들 때문에, 보통 지금처럼 직접 session 이용안하고, 대부분 security로 로그인을 구현하나요?아니면, 백엔드에서 지금처럼 session구현하고 보안 솔루션들로 보안쪽 사람들이 막는건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
화이트리스트 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]로그인체크필터에서 화이트리스트 배열을 통해 필터를 걸러내는 것을 알게되었습니다. 여기서 의문인게 왜 /css/* 까지 화이트 리스트를 추가해주는지 궁금합니다. 해당 /css/*코드를 빼고 실행해보았는데, 오류없이 잘 작동합니다.결론 : 왜 /css/*까지 화이트리스트에 추가해줘야 하나요?혹시 js파일도 있다면 /js/*도 해줘야하나요?어떤것을 화이트리스트에(예 : 자바스크립트파일, html파일, css파일) 추가해줘야할지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 알려주신 스프링 프로젝트 폴더가 위치한 곳으로 명령프롬프트 내에서 위치를 변경하는 방법으로 hello-spring까지 이동했습니다. 하지만 gradlew.bat를 실행하니까 사진과 같은 오류가 발생합니다. 자바 22버전 사용하고 있습니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
회원 가입 후 DB 저장 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의를 잘 듣고있는 학생입니다.질문의 내용은, 회원가입 후 제출을 누른 뒤, 다시 원래대로 redirect:/까지는 return 되지만, H2 database에 저장이 되지 않는 문제가 있어서 질문드립니다.제가 생각한 문제의 원인은 3가지입니다.memberrepository.join의 문제인가? (애초부터 저장이 되지 않음.)h2 database의 연결 문제인가?스프링 코드의 문제인가?이렇게 3가지의 문제로 생각해볼 수 있는데요, 다른분들의 오류도 찾아보고 나름대로 열심히 찾아보았지만,모두 검토해본 결과, 이 3가지의 문제+다른분들과 겹치는 문제가 아니여서 질문드립니다.제가 이 3가지의 문제에서 해결책을 찾을 수 없던 이유는 다음과 같습니다.그렇다면(이것이 맞다면), MemberServiceTest의 저장도 가능하지가 않을 뿐더러, 이것의 데이터도 저장이 되지 않아야 한다.허나 MemberServiceTest를 돌려본 결과, 테스트는 통과하고 .join도 다 가능하다 라는 것을 알 수 있었습니다.코드 ::MemberServiceTest@RunWith(SpringRunner.class) @SpringBootTest @Transactional public class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Autowired EntityManager em; @Test //@Rollback(value = false) --> 눈으로 확인해 보고 싶을때 public void 회원가입() throws Exception { //given Member member = new Member(); member.setName("kim"); //when Long saveId = memberService.join(member); //then em.flush(); assertEquals(member,memberRepository.findOne(saveId)); } h2.database의 연결 문제인가?이것에 대해 제가 아니라고 생각한 이유는 다음과 같습니다.그 이후의 강의인 상품 등록을 했을때, 신기하게 상품 등록은 정상적으로 되었습니다.h2 database에도 등록이 되었고 상품 목록도 나타났습니다.이렇게 등록을 했을때.이렇게 데이터베이스에도 있는것을 확인할 수 있었고,상품 목록도 제대로 있는것을 확인할 수 있습니다.따라서 2번도 맞지 않는다고 생각했습니다.3.스프링 코드의 문제인가?:: MemberController 코드package jpabook.jpashop.controller; import jakarta.validation.Valid; import jpabook.jpashop.domain.Address; import jpabook.jpashop.domain.Member; import jpabook.jpashop.service.MemberService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import java.util.List; @Controller @RequiredArgsConstructor public class MemberController { private final MemberService memberService; @GetMapping(value = "/members/new") public String createForm(Model model) { model.addAttribute("memberForm", new MemberForm()); return "members/createMemberForm"; } @PostMapping(value = "/members/new") public String create(@Valid MemberForm form, BindingResult result) { if (result.hasErrors()) { return "members/createMemberForm"; } Address address = new Address(form.getCity(), form.getStreet(), form.getZipcode()); Member member = new Member(); member.setName(form.getName()); member.setAddress(address); memberService.join(member); return "redirect:/"; } @GetMapping(value = "/members") public String list(Model model){ List<Member> members = memberService.findMembers(); model.addAttribute("members",members); return "members/memberList"; } }::creatememberForm.html코드<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head th:replace="fragments/header :: header" /> <style> .fieldError { border-color: #bd2130; } </style> <body> <div class="container"> <div th:replace="fragments/bodyHeader :: bodyHeader"/> <form role="form" action="/members/new" th:object="${memberForm}" method="post"> <div class="form-group"> <label th:for="name">이름</label> <input type="text" th:field="*{name}" class="form-control" placeholder="이름을 입력하세요" th:class="${#fields.hasErrors('name')}? 'form-control fieldError' : 'form-control'"> <p th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Incorrect date</p> </div> <div class="form-group"> <label th:for="city">도시</label> <input type="text" th:field="*{city}" class="form-control" placeholder="도시를 입력하세요"> </div> <div class="form-group"> <label th:for="street">거리</label> <input type="text" th:field="*{street}" class="form-control" placeholder="거리를 입력하세요"> </div> <div class="form-group"> <label th:for="zipcode">우편번호</label> <input type="text" th:field="*{zipcode}" class="form-control" placeholder="우편번호를 입력하세요"> </div> <button type="submit" class="btn btn-primary">Submit</button> </form> <br/> <div th:replace="fragments/footer :: footer" /> </div> <!-- /container --> </body> </html>여러번 비교해 본 결과 강의자료와 강의에 있는 코드와 다름이 없다는 것을 알게 되었습니다.오류 내용이 나타나면 해결하기가 더 쉬운데, 오류내용이 나오지 않아서 해결하기 더 어려운 것 같습니다.사실 이후에 강의도 듣고 있다가 이 문제가 해결이 되지 않아서 계속 막혀서 고생하고 있는 상황입니다...도와주시면 감사하겠습니다..
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의에 나오는 자료들은 어디서 볼 수 있나요??
html 코드나 강의자료 보고싶은데 어디서 봐야하나요?
-
미해결스프링부트 시큐리티 & JWT 강의
[자바] 시큐리티 Config 참고
@Configuration @EnableWebSecurity // 스프링 시큐리티 필터가 스프링 필터체인에 등록 public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.csrf(AbstractHttpConfigurer::disable) .authorizeHttpRequests(authorize -> authorize .requestMatchers("/user/**").authenticated() // /user라는 url로 들어오면 인증이 필요하다. .requestMatchers("/manager/**").hasAnyRole("MANAGER", "ADMIN") // manager으로 들어오는 MANAGER 인증 또는 ADMIN인증이 필요하다는 뜻이다. .requestMatchers("/admin/**").hasRole("ADMIN") // //admin으로 들어오면 ADMIN권한이 있는 사람만 들어올 수 있음 .anyRequest().permitAll() // 그리고 나머지 url은 전부 권한을 허용해준다. ); http.formLogin(form -> form .loginPage("/login")); return http.build(); } }현재 버전 업데이트가 되면서 많이 바꿔어서 참고할 분들은 참고 해주시면 될꺼 같습니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
등록한 Member 를 동적html 로 띄울 때 뜨지 않는 문제
https://drive.google.com/drive/u/0/home //구글 드라이브 주소를 남겨봅니다!<html 에 제가 입력한 멤버정보가 뜨지 않는 문제입니다>값을 등록했을 때 콘솔창에 들어간 값이 잘 뜨는것을 봐서는 아마 Map<id, Member> 에 들어가지 않는게 아닐까 예측해봅니다..
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
WebSecurity관해여 질문드립니다
강의자료 pdf 19page 설명하실 때 WebSecurity는 HttpSecurity에서 생성한 SecurityFilterChain을 SecurityBuilder에 저장한다고 하셨는데, SecurityBuilder는 인터페이스인데 어떻게 저장하는지 이해가 안됩니다. 원래 변수나 데이터들은 객체에 저장하는게 아닌가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ModelAttribute 관련 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@PostMapping("/add") public String addItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes, Model model) { //검증 오류 결과를 보관 Map<String, String> errors = new HashMap<>(); //검증 로직 if (!StringUtils.hasText(item.getItemName())) { errors.put("itemName", "상품 이름은 필수입니다."); } if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000) { errors.put("price", "가격은 1,000 ~ 1,000,000 까지 허용합니다."); } if (item.getQuantity() == null || item.getQuantity() >= 9999) { errors.put("quantity", "수량은 최대 9,999 까지 허용합니다."); } //특정 필드가 아닌 복합 룰 검증 if (item.getPrice() != null && item.getQuantity() != null) { int resultPrice = item.getPrice() * item.getQuantity(); if (resultPrice < 10000) { errors.put("globalError", "가격 * 수량의 합은 10,000원 이상이어야 합니다. 현재 값 = " + resultPrice); } } //검증에 실패하면 다시 입력 폼으로 if (!errors.isEmpty()) { model.addAttribute("errors", errors); return "validation/v1/addForm"; } //성공 로직 Item savedItem = itemRepository.save(item); redirectAttributes.addAttribute("itemId", savedItem.getId()); redirectAttributes.addAttribute("status", true); return "redirect:/validation/v1/items/{itemId}"; }14분 강의내용 질문입니다. 만약 오류가 있다면 if (!errors.isEmpty()) { model.addAttribute("errors", errors); return "validation/v1/addForm"; }이 코드를 실행해서 errors모델을 담겠지만,이전에 입력해둔 Item을 모델에 담지 않았는데도 값이 유지될 수 있는 이유가파라미터에 @ModelAttribute Item item이 있기 때문인가요?만약 그렇다면 왜 그렇게 되는지 궁금합니다.파라미터에 있는 @ModelAttribute Item item 코드 자체가 미리 모델에 담기는 것인가요?
-
미해결스프링 핵심 원리 - 기본편
localhost:8080질문있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.다 된거 같은데 사이트에 연결할수 없음이 나오네요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]명령 프롬포트에서 java를 치면 나오는데, gradlew.bat치면 'gradlew.bat'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 라고 나와요 ㅠㅠ자바는 22버전입니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
DispatcherServlet 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 이전 강의에서 직접 만들때는 프론트컨트롤러직접 url 매핑해서 찾았자나요 근데 DispatcherServlet는 만들지도않았는데 어떤 원리로 실행되는지 궁금합니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
레포지토리 테스트 코드 작성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에서 findById 테스트코드 작성 안 하는 이유가 있나요 ?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
postMapping, putMapping
안녕하세요 궁금한 점이 생겨 질문 드립니다.PostMapping이 멱등하지 않아서 save메서드에서 PRG방법을 쓰는데수정 메서드에서는 prg방법과 @putMapping중 어떤것을 더 추천하시나요 ??그리고 PutMapping에서도 PostMapping와 동일하게 더티체킹 방법으로 업데이트해도 되는것 맞죠 ??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
FieldError - 파라미터 질문
if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000) { bindingResult.addError(new FieldError("item","price" ,item.getPrice(), false,null, null,"상품 이름은 가격은 1,000 ~ 1,000,000 까지 허용합니다..")); } price = 123a를 입력할때같은 필드(item.price)에 대해서 FieldError가 2개 생성되면, 이거를 구분을 뭐로 하길래, 타입 바인딩rejectedValue값이 우선으로 출력되는건지 모르겠습니다.값 유지되는 값이 지금 123a 즉, 타입 바인딩 실패에대한 rejectedValue값인데, 왜 비즈니스 로직 rejectedValue값 null이 안나오고 123a가 출력이 되는건지 모르겠습니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
컨트롤러에서 그냥 Authentication을 파라미터로 받아요면 null인 이유
컨트롤러가 실행되는 시점이면 이미 모든 Filter를 거쳤으니 AnonymousAuthenticationFilter도 거쳤을거라 생각하고, SecurityContext에도 AnonymousAthenticationToken이 있으니,Authentication에 AnonymousAthenticationToken이 있을거라 생각했는데, 왜 null이 있는건가요??그리고 왜 @CurrentSecurityContext로 찾을때만 AnonymousAthenticationToken를 받을수 있는건가요??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JPA활용 2들어가기 전에 질문
JPA에 대한 기본적인 CRUD는 알고 있는 상태입니다.자바 ORM표준 JPA프로그래밍이라는 강의 수강해야 JPA2강의를 이해할 수 있는걸까요? 강의에서 요구하는 수준이 궁금합니다