묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
validator 질문 드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. ItemValidator를 보면, target을 Item으로 캐스팅 하는데 오류가 없을까요? target으로 입력될 ItemSaveForm은 Item으로 형변환하기엔 없는 필드가 존재합니다.(Id) 강사님께선 어떻게 원할하게 돌아가는지 궁금하네요.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
http://localhost:8080/hello-mvc?name=spring!! 이 부분 에러가 발생합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.localhost:8080 까지는 잘나오고 다 잘 따라친거 같은데 뒤에 hello-mvc 부분부터는 에러가 발생하네요 ㅠㅠ
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
EntityManager를 쓰는데, DB가 다르면 EntityManager도 2개 주입받아야 해요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]예를 들면 좀 회사의 기존 서비스에서 아예 새로운 서비스말고 기존의 서비스를 활용해서 뭔가 고객에게 제공해 주고 싶다, 하면 기존DB랑 새로 추가 해야 할 DB랑 다를 수 있잖아요.근데 EntityManager는 우리 눈에는 안보이지만, 자동으로 DataSource 주입 받잖아요.DataSource가 제가 기억하기로 말 그대로 데이터의 근원, h2 이런 것 들에 대한 연결할 수 있는 정보? 들을 얻어오는 걸로 기억을 해서, DB가 다르면 저것도 다를 수 있잖아요. 또 DB의 계정마다도 다를 것 같고.. 그러면 EntityManager가 2개 생기나요? 이번엔 같은 DB에 테이블만 다른거니 JPA 내부적으로 sql만 좀 다르게 짤거니까 상관 없어 보이지만..
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 사용시 memberId가 계속 같이 넘어오는 현상 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]세션 저장소를 이용해서 클라이언트 요청을 서버로 받아오는데, 계속해서 memberId 값이 함께 넘어오고 있습니다. 코드를 봐도 문제가 없는것처럼 보이는데 제가 원인이 되는 코드를 못찾고 있는 거 같아 문의 드립니다. 어디를 삭제하거나 고치면 되나요? [SessionManager]package hello.login.web.session;import org.springframework.stereotype.Component;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.util.Arrays;import java.util.Map;import java.util.UUID;import java.util.concurrent.ConcurrentHashMap;/** * 세션 관리 */@Componentpublic class SessionManager {public static final String SESSION_COOKIE_NAME = "mySessionId"; private Map<String, Object> sessionStore = new ConcurrentHashMap<>(); // 세션 저장소 /** * 세선 생성 * sessionId 생성 (임의의 추정 불가능한 랜덤 값) * 세션 저장소에 sessionId와 보관할 값 저장 * sessionId로 응답 쿠키를 생성해서 클라이언트에 전달 */ public void createSession(Object value, HttpServletResponse response){// 세션 id를 생성하고, 값을 세션 저장소에 저장 String sessionId = UUID.randomUUID().toString(); sessionStore.put(sessionId, value); // 쿠키 생성 Cookie mySessionCookie = new Cookie(SESSION_COOKIE_NAME, sessionId); response.addCookie(mySessionCookie); }/** * 세션 조회 */ public Object getSession(HttpServletRequest request){Cookie sessionCookie = findCookie(request, SESSION_COOKIE_NAME); if (sessionCookie == null){return null; }return sessionStore.get(sessionCookie.getValue()); }/** * 세션 만료 */ public void expire(HttpServletRequest request){Cookie sessionCookie = findCookie(request, SESSION_COOKIE_NAME); if (sessionCookie != null){sessionStore.remove(sessionCookie.getValue()); }}public Cookie findCookie(HttpServletRequest request, String cookieName){if (request.getCookies() == null){return null; }return Arrays.stream(request.getCookies()).filter(cookie -> cookie.getName().equals(cookieName)).findAny().orElse(null); }} [LoginController]package hello.login.web.login;import hello.login.domain.login.LoginService;import hello.login.domain.member.Member;import hello.login.web.session.SessionManager;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Controller;import org.springframework.validation.BindingResult;import org.springframework.validation.annotation.Validated;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.PostMapping;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@Slf4j@Controller@RequiredArgsConstructorpublic class LoginController {private final LoginService loginService; private final SessionManager sessionManager; @GetMapping("/login")public String loginFor(@ModelAttribute("loginForm") LoginForm form){return "login/loginForm"; }// @PostMapping("/login") public String login(@Validated @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response){if (bindingResult.hasErrors()){return "login/loginForm"; }Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); if(loginMember == null){bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다."); return "login/loginForm"; }// 로그인 성공 처리 // 쿠키에 시간 정보를 주지 않으면 세션 쿠키(브라우저 종료 시 모두 종료) Cookie idCookie = new Cookie("memberId", String.valueOf(loginMember.getId())); response.addCookie(idCookie); return "redirect:/"; }@PostMapping("/login")public String loginV2(@Validated @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response){if (bindingResult.hasErrors()){return "login/loginForm"; }Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); if(loginMember == null){bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다."); return "login/loginForm"; }// 로그인 성공 처리 // 세션 관리자를 통해 세션을 생성하고, 회원 데이터 보관 sessionManager.createSession(loginMember, response); return "redirect:/"; }// @PostMapping("logout") public String logout(HttpServletResponse response){expireCookie(response, "memberId"); return "redirect:/"; }@PostMapping("logout")public String logoutV2(HttpServletRequest request){sessionManager.expire(request); return "redirect:/"; }private static void expireCookie(HttpServletResponse response, String cookieName) {Cookie cookie = new Cookie(cookieName, null); cookie.setMaxAge(0); response.addCookie(cookie); }} [HomeController]package hello.login.web;import hello.login.domain.member.Member;import hello.login.domain.member.MemberRepository;import hello.login.web.session.SessionManager;import lombok.RequiredArgsConstructor;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.CookieValue;import org.springframework.web.bind.annotation.GetMapping;import javax.servlet.http.HttpServletRequest;@Slf4j@Controller@RequiredArgsConstructorpublic class HomeController {private final MemberRepository memberRepository; private final SessionManager sessionManager;// @GetMapping("/") public String home() {return "home"; }// @GetMapping("/") public String homeLogin(@CookieValue(name = "memberId", required = false) Long memberId, Model model){if(memberId == null){return "home"; }// 로그인 Member loingMember = memberRepository.findById(memberId); if(loingMember == null){return "home"; }model.addAttribute("member", loingMember); return "loginHome"; }@GetMapping("/")public String homeLoginV2(HttpServletRequest request, Model model){// 세션 관리자에 저장된 회원 정보 조회 Member member = (Member) sessionManager.getSession(request); // 로그인 if(member == null){return "home"; }model.addAttribute("member", member); return "loginHome"; }}
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터 제한시 리다이렉트 처리하지 않는 경우
질문이 있는 부분은 강의에서 인터셉터를 통해 로그인 인증을 구현하는 부분입니다.요청 중 로그인이 필요한 페이지에 로그인하지 않은 채 요청을 보내면 response.sendRedirect()를 하여 HTTP 응답 Location 헤더를 통해 /login 으로 리다이렉션하고 있습니다.@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(false); log.info("인증 체크 인터셉터 실행 {}", requestURI); if (session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null) { log.info("미인증 사용자 요청"); response.sendRedirect("/login?requestURL=" + requestURI); return false; } return true; } } 그러다 문득 response.sendRedirect() 을 주석처리하면 어떻게 될까 궁금해졌습니다.즉, 인터셉터 제한되는 상황에서 리다이렉트 처리하지 않으면 WAS 또는 스프링이 어떻게 처리하는지 궁금해진 것인데요. 해당 코드를 주석처리하고 로그인이 필요한 페이지로 브라우저를 통해 요청을 하얀색 화면이 나오는 것을 확인하였습니다.@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(false); log.info("인증 체크 인터셉터 실행 {}", requestURI); if (session == null || session.getAttribute(SessionConst.LOGIN_MEMBER) == null) { log.info("미인증 사용자 요청"); //response.sendRedirect("/login?requestURL=" + requestURI); return false; } return true; } }포스트맨으로 응답을 확인하니 다음과 같았습니다.인터셉터 제한되는 상황이므로 컨트롤러가 호출되지 않았다는 사실은 알 수 있었지만,정확히 어떠한 흐름으로 응답이 처리되는지는 이해할 수가 없어 질문을 하게 되었습니다. 인터셉터 제한되는 상황에서 리다이렉트 처리하지 않으면, 이러한 응답은 누가 어떻게 보내주는 것인가요?
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
자바11과 전자정부프레임워크4.1 사용해도될까요?
자바11버전이랑 전자정부프레임워크4.1를 사용중인데이거 그대로 사용해도될까요?아니면 자바를 8로 변경해서 수업을 들어야할까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
bindingResult.rejectValue
bindingResult.rejectValue를 사용 할때bindingResult.rejectValue("itemName","required.item.itemName");이런식으로 required 만 사용하는게 아닌 full 경로를 입력해도 작동하는데이렇게 사용해도되는건가요? 아니면 이렇게 사용하면 문제점이있는건가요 ?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@RequestBody 생략 시에 @ModelAttribute 로 인식(?)한다고 하셨는데 그러면 HelloData 를 어떤 파라미터로 가지고 오는지 궁금합니다.
[질문 내용]@ModelAttribute HelloData helloData가 되면 HelloData를 HTTP 메시지 바디가 아니라 요청 파라미터를 처리하게 된다라고 하셨는데... 이 내용이 잘 이해가 안갑니다. helloData 라는 값을 파라미터로 인식하는건가요? 즉, helloData="22" 로 값이 들어오면 값을 22로 인식하는건지... 제가 잘 이해를 못해서 자세한 설명 부탁드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
RequestParam 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.이런식으로 name 값을 줘도 자꾸 null만 뜨는데 왜 그런거죠??
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
예외 복구 처리 시 런타임 예외로 전환 필요성
체크 예외를 런타임 예외로 전환하는 것에 대해 의문점이 있습니다.리포지토리에서 체크 예외인 SQLException을 런타임 예외인 MyDBException으로 변환하는 것은 서비스의 SQLException에 대한 의존을 제거하기 위함인데특정 케이스의 예외(중복 키 발생)인 경우 복구를 위해 레퍼지토리에서 에러코드로 SQLException을 분리하고 코드에 따라 다른 런타임 예외를 만들어서 던집니다.이 때 서비스에서는 해당 에러 복구를 위해 try-catch로 결국 해당 런타임 예외를 잡는 코드를 추가해야 합니다. -> 런타임 예외에 대한 종속이 생김 그렇다면 이렇게 예외 처리에 대한 목적이 분명한 경우 SQLException 예외 코드에 따라 (Exception)을 상속받은 체크 예외를 만들어서 던지게 되면 예외를 누락할 위험성도 없고 더 좋은것 아닌가요?-> 어차피 직접 생성한 예외에 대한 종속이 서비스에서 발생하였으므로 왜 굳이 런타임 예외를 상속받은 예외를 생성해서 던지는 지 궁금합니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
섹션2 프로젝트 생성 아무것도 안됨
스프링 mvc 섹션2 서블릿 프로젝트 생성시 아무것도 안뜹니다servlet파일 압축풀어서 오픈했는데project 밑에 External Libraries랑 Scratches and Consoles 만 뜨고 아예 클릭도 안되고 아무것도 실행 안됩니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트 코드와 DataSourceUtils
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]Transactional이 작동을 안 하길래 찾아보다가, DataSourceUtils.getConnection을 사용하지 않고, (DataSource 객체).getConnection을 써서 그런간가 싶어서 이것을 수정하려 했는데, 이러니까 테스트 코드가 작동이 안되네요... 테스트 코드와 DataSourceUtils가 어떠한 연관이 있는 건가요? (DataSource 객체).getConnection으로 DB를 연동하면 테스트 코드가 잘 되는데, DataSourceUtils.getConnection으로 하면 실행할땐 잘 되지만, 테스트 코드로 하면 데이터베이스 연동에 오류가 나는 것 같네요...
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 통합테스트중 회원가입에서 에러가납니다.
코드는 전부 같게한것같고, 이런식으로 에러가 나면서 실제 h2 db에서 확인결과 가입이 안되고 있습니다.이유가 뭔지 못찾고 있습니다 ㅠㅠ
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MemberRepositoryTest 오류가 발생합니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]MemberRepositoryTest 코드 실행하는데 C:\bootex\spring01\mvc\src\main\java\com\sbgb\mvc\domain\member\MemberRepository.java:23: error: cannot find symbol member.setId(++sequence); ^ symbol: method setId(long) location: variable member of type Member 라고 오류가 발생합니다.소스코드 비교해도 다른게 없고 아예 복사붙여넣기 해도 작동이 안됩니다Lombok도 잘 돼있고 Getter Setter도 다 돼있는데 안되네요
-
미해결윤재성의 만들면서 배우는 Spring MVC 5
8강 에서 servlet-context.xml에 설정에서 에라
servelt-context.xml에서 <annotation-driven/>를 입력하면 그림과 같은 에라가 나오는데 어떻게 해야 하나요 ?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 통합테스트 코드를 따라치고 있습니다. h2 db에 이름이 중복되어있을텐데 오류가 안납니다.
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 영한님 말씀대로면 이름이 같을시 오류가 떠야되는데 저는 뜨질 않고 돌아갑니다. 왜그런가요?@Transactional 주석처리하고 해도 같은결과입니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
임포트가 되지않아요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]HelloData 생성했는데도 import가 되지 않습니다.package hello.springmvc.basic.request; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.io.IOException; import java.util.Map; @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")); log.info("username={}, age={}", username, age); response.getWriter().write("ok"); } /** * @RequestParam 사용 * - 파라미터 이름으로 바인딩 * @ResponseBody 추가 (RestController 와 같은 역할을 수행함) * - View 조회를 무시하고, HTTP message body에 직접 해당 내용 입력 */ @ResponseBody @RequestMapping("/request-param-v2") public String requestParamV2( @RequestParam("username") String memberName, @RequestParam("age") int memberAge) { log.info("username={}, age={}", memberName, memberAge); return "ok"; } @ResponseBody @RequestMapping("/request-param-v3") public String requestParamV3( @RequestParam String username, @RequestParam int age) { log.info("username={}, age={}", username, age); return "ok"; } /** * @RequestParam 사용 * String, int 등의 단순 타입이면 @RequestParam 도 생략 가능 */ @ResponseBody @RequestMapping("/request-param-v4") public String requestParamV4(String username, int age) { log.info("username={}, age={}", username, age); return "ok"; } /** * Integer 은 객체이기 때문에 null 이 들어갈 수 있음 * int 는 기본형이 때문에 null이 들어올 수 없음 */ @ResponseBody @RequestMapping("/request-param-required") public String requestParamRequired( @RequestParam(required = true) String username, @RequestParam(required = false) Integer age) { log.info("username={}, age={}", username, age); return "ok"; } @ResponseBody @RequestMapping("/request-param-default") public String requestParamDefault( @RequestParam(required = true, defaultValue = "guest") String username, @RequestParam(required = false, defaultValue = "-1") int age) { log.info("username={}, age={}", username, age); return "ok"; } /** * @RequestParam Map, MultiValueMap * Map(key=value) * MultiValueMap(key=[value1, value2, ...]) ex) (key=userIds, value=[id1, id2]) */ @ResponseBody @RequestMapping("/request-param-map") public String requestParamMap(@RequestParam Map<String, Object> paramMap) { log.info("username={}, age={}", paramMap.get("username"), paramMap.get("age")); return "ok"; } @ResponseBody @RequestMapping("/model-attribute-v1") public String modelAttributeV1(@RequestParam String username, @RequestParam int age) { HelloData helloData = new HelloData(); } }
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Test값 안녕 -> ?? 으로 인식되네요
위는 message.properties 입니다. 이는 Test 구요 안녕의 값을 Test하지만 실제는 ??로 인식이되네요어딘가에서 한글이 깨진거같은데 뭘까요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
등록오류 및 조회 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요.자꾸 등록할때마다 이렇게 오류뜨고 h2db에선 member테이블이 있습니다. https://drive.google.com/file/d/15hAqagzQ4Yg-4Vqn2rnE_byFxQIsM8CC/view?usp=drive_link
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 등록은 정상적으로 되는데 회원 목록에서는 등록한 회원이 보이지 않습니다
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]회원 가입 이후 회원 목록에 회원이 보이지 않아 질문 올립니다.회원 등록에 문제가 있을까 해서 등록된 멤버를 print 해봤는데아래와 같이 정상적으로 되는 것을 확인했습니다.등록문제가 아니면 조회하는 부분에서 잘못된 부분이 있는 것 같아 findAll() 부분도 확인해봤지만 이상한 부분은 없는 것 같았습니다.이것도 아니면 등록된 회원이 넘어가는(?) 부분에서 뭔가 잘못된거 같은데 해결할 수 있는 부분을 찾기가 어려워 도움을 청합니다 ㅠㅠ아래는 제 소스파일 링크입니다.https://drive.google.com/file/d/1ty4a-1tezhW5kHJIFZJl-wOIefZfR2KS/view?usp=drive_link