묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
id에 @NotEmpty를 한다면
@Data public class Member { @NotEmpty private Long id; @NotEmpty private String loginId; //로그인 ID @NotEmpty private String name; //사용자 이름 @NotEmpty private String password; }제가 실수로 id에 @NotEmpty를 하니까 회원가입 버튼을 눌렀더니 오류가 났습니다.오류가 나는 이유는 id의 오류처리를 안해서라고 생각하는 데 만약에 오류처리를 해야한다면MemberRepository의@Slf4j @Repository public class MemberRepository { private static Map<Long, Member> store = new HashMap<>(); //static 사용 private static long sequence = 0L; //static 사용 public Member save(Member member) { member.setId(++sequence); log.info("save: member={}", member); store.put(member.getId(), member); return member; } save() 메소드에서 하면 되는 걸까요??(id는 다른 필드들과 다르게 html에서 처리할 수 없으니까??)아니면 id는 데이터베이스에 들어가는 거니까 애초에 @NotEmpty 를 사용하면 안된다 라고 생각해야 건가요?? (개발자가 직접 입력한 것이 아니니까?)답변주시면 정말 감사하겠습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
뷰단 궁금한게있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]jstl이 앉먹어서 코드분량은많지만 고대폼의 jsp 화일을 써서 덮어버렸는데 잘됩니다 그대로 써도 괜찮을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 개념이 잘 이해가 되지 않아서 질문입니다
세션 만들기//로그인 성공 처리 //세션이 있으면 있는 세션 반환, 없으면 신규 세션 생성 HttpSession session = request.getSession(); //세션 로그인 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); 세션 지우기HttpSession session = request.getSession(false); if (session != null) { session.invalidate(); } 세션 확인하기HttpSession session = request.getSession(false); if (session == null) { return "home"; }쿠키는 클라이언트 측에서 저장하고 세션은 서버측에서 저장한다고 알고 있는데요. request 로부터 getSession을 통해 얻는 것이 무엇인지가 궁금합니다.request.getSessin()을 통해 얻는다는 것은 사용자의 요청으로부터 얻은 Session이고 여기에 setAttribute 하는 것은 서버에 데이터를 저장하는게 아니라 사용자의 요청에 저장을 하게 되는 것 아닌가요 ?? (setAttribute가 사용자의 request와 서버 모두 저장하는 것인가요?) session은 cookie와 같다면 서버 내부적으로 어디에 저장돼서 어떻게 확인할 수 있는 건지 궁금합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Failed to load ApplicationContext 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]package hellospring11.hellospring.service; import hellospring11.hellospring.repository.JdbcMemberRepository; import hellospring11.hellospring.repository.JdbcTemplateMemberRepository; import hellospring11.hellospring.repository.MemberRepository; import hellospring11.hellospring.repository.MemoryMemberRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import hellospring11.hellospring.service.MemberService; import javax.sql.DataSource; // 자바 코드로 스프링 빈 등록 // 실무에서는 이것 보다는 autowired를 사용 하는데 이방법은 리포지토리를 쉽게 변경을 할 계획이라서 일딴 이렇게 사용 @Configuration public class SpringConfig { private final DataSource dataSource; @Autowired public SpringConfig(DataSource dataSource) { this.dataSource = dataSource; } @Bean public MemberService memberService(){ return new MemberService(memberRepository()); } @Bean public MemberRepository memberRepository(){ //return new MemoryMemberRepository(); //return new JdbcMemberRepository(dataSource); return new JdbcTemplateMemberRepository(dataSource); } }package hellospring11.hellospring.repository; import hellospring11.hellospring.domain.Member; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.simple.SimpleJdbcInsert; import javax.sql.DataSource; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; public class JdbcTemplateMemberRepository implements MemberRepository{ private final JdbcTemplate jdbcTemplate; // 생성자가 하나면 오토와이어드 생량 가능 public JdbcTemplateMemberRepository(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); } @Override public Member save(Member member) { SimpleJdbcInsert jdbcInsert = new SimpleJdbcInsert(jdbcTemplate); jdbcInsert.withTableName("member").usingGeneratedKeyColumns("id"); Map<String, Object> parameters = new HashMap<>(); parameters.put("name", member.getName()); Number key = jdbcInsert.executeAndReturnKey(new MapSqlParameterSource(parameters)); member.setId(key.longValue()); return member; } @Override public Optional<Member> findById(Long id) { List<Member> result = jdbcTemplate.query("select * from member where id = ?", memberRowMapper(), id); return result.stream().findAny(); } @Override public Optional<Member> findByName(String name) { List<Member> result = jdbcTemplate.query("select * from member where name = ?", memberRowMapper(), name); return result.stream().findAny(); } @Override public List<Member> findAll() { return jdbcTemplate.query("select * from member", memberRowMapper()); } // 람다 함수로 만듬 private RowMapper<Member> memberRowMapper(){ return (rs, rowNum) -> { Member member = new Member(); member.setId(rs.getLong("id")); member.setName((rs.getString("name"))); return member; }; } }MemberServiceIntegrationTest 테스트 파일에서 코드를 실행하는데 계속 오류가 나옵니다.@WebAppConfiguration, @ContextConfiguration() 어노테이션을 추가 해보았는데도 오류가 발생하고 데이터베이스 서버는 실행되어 있습니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿으로 구현한 회원관리에 대한 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]JSP에 java 코드를 추가해서 회원관리 웹 애플리케이션을 구현한 것이 mvc model1 이고 servlet과 jsp를 이용해서 회원관리 웹 애플리케이션을 구현한 것이 mvc model2 라고 알고있습니다.그럼 처음에 서블릿에서 PrintWriter 클래스를 이용해서 구현한 회원관리 웹 애플리케이션은 mvc model1 인가요? 아니면 순수 java를 이용한 회원관리 웹 애플리케이션인가요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 가입> 등록 후 회원목록 조회가 되지 않습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]회원가입 > 등록 후 회원목록 조회가 되지 않습니다. https://drive.google.com/file/d/1mo2EohoMsgKRpeusyQ-AXlygE1CSSJIV/view?usp=sharing코드 링크입니다. WhiteLabel Error Page 오류가 납니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:field와 th:erroclass
안녕하세요th:errorclass : th:field 에서 지정한 필드에 오류가 있으면 class 정보를 추가한다pdf내용 중 한 문장인데요 . 이 의미가 th:field는 오류가 있다면 그 오류난 것을 알고 있어서 th:errorclass를통해 class정보를 추가한다는 의미 맞죠??그리고th:errors="*{itemName}"은errors중에 해당 필드 에러가 있을때 즉 itemName필드에 에러가 발생했을때 수행된다 이느낌 맞나요?/
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원가입 테스트 코드는 실행이 잘 되지만 실제 DB에는 올라가지 않아요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 TEST코드가 실행은 잘 되지만 실제 DB에 올라가지 않는 문제가 있습니다. 도움을 받을 수 있을까 해서 올려봅니다.https://drive.google.com/file/d/1dLceWpDp71m9dsvZXlVEfKa1db8M885g/view?usp=sharing파일링크입니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
run이 안뜹니다.
인터넷에서 여러가지 세팅을 찾아서 맞춰놓긴 했는데 아직도 초록색 동그라미 부분에 run 버튼이 활성화가 안됩니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
addForm할때 등록지역
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]addForm에서 등록지역추가할때 선생님께서 알려주신 FormItemController에 @ModelAttribute로 만들지말고 바로 addForm.html에 세가지지역의 input checkbox 만들어서 해도 되나요? 그리고 만약에 된다면 form의 생성을 조금더 수월하게 하기 위해서 @ModelAttribute를 사용한건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
실무에서 모든 컨트롤러에는 이런 식의 메서드가 있는 건가요?
@ExceptionHandler public ErrorResult exHandler(Exception e) { return new ErrorResult("error", e.getMessage()); } 실무에서 웬만한 예외들은 다 처리를 해줄 텐데 예기치 못한 예외들을 위해 저런 식으로 Exception e를 파라미터로 받는 메서드를 작성해줄까요 ???
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
404 오류 화면 스프링 부트 제공
@RequestMapping 을 하지 않은 URL을 입력하면 [404 오류 화면 스프링 부트 제공] 화면 만 나오는데 이유가 무엇인가요?좀 더 포괄적인 [4xx 오류 화면 스프링 부트 제공] 이 나오는게 맞지 않나요 ?? 다른 이유 없이 스프링 측에서 저렇게 세팅했기 때문에 나오는 건가요 ?? 200과 300을 보냈을 때는 하얀 공간만 나오는데 2xx,3xx 상태코드들은 실패가 아니기 때문에 그런 것인가요? 맞다면 이 하얀 화면은 HTTP Status 500 – Internal Server Error(error/500.html이 없을 때 나오는 화면) 가 나오는 것처럼 스프링부트가 내부적으로 세팅해놓은 화면인 건가요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MemberRepository 클래스의 findAll 함수 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]findAll() 함수를 설명하실 때 store의 변조를 보호하기 위해 새로운 ArrayList 에 담아서 반환한다고 하셨는데, 이 말이 store.values() 를 그대로 반환하면 CallByReference로 반환되어서 외부에서 List의 값을 변경하면 store의 value도 변경된다는 말씀이신건가요??그리고 새로운 ArrayList 에 담아서 반환해도 store 자체에 접근하면 값이 변경될 수도 있다고 하셨는데, MemberRepository 에서 store는 private로 선언되어있는데 어떻게 store 의 value 를 변경할 수 있는건지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
dataSource 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]dataSource에러 계속 빨간불이 나오면서 에러가 발생합니다. 처음에는 test.mv.db 문제인줄 알고 h2를 삭제한뒤, 다시 설치했지만 survlet 문제가 계속 됩니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
파라미터를 Map으로 조회
1. @RequestParam은 파라미터 이름으로 바인딩된다고 하셨는데 "파라미터를 Map으로 조회하기"를 보면 "@RequestParam Map<String, Object> paramMap"으로 사용할때는 파라미터 이름으로 바인딩이 안된것같은데 맞을까요?2. 파라미터를 Map으로 조회하려면 위와 같이 하면 된다고 정해져 있다고 보면 될까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 질문입니다.
세션 만들기//로그인 성공 처리 //세션이 있으면 있는 세션 반환, 없으면 신규 세션 생성 HttpSession session = request.getSession(); //세션 로그인 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); 세션 지우기HttpSession session = request.getSession(false); if (session != null) { session.invalidate(); } 세션 확인하기HttpSession session = request.getSession(false); if (session == null) { return "home"; }세션 만들기에서는 session.setAttribute 로 정보를 저장도 했다가, 지우기 혹은 확인하기에서는 쿠키의 역할을 하는 것 같은데 session은 쿠키 + 쿠키저장소(SessionManager의 HashMap) 두 역할을 모두 하는 건가요 ?그게 아니라 session은 cookie와 같다면 서버 내부적으로 어디에 저장돼서 어떻게 확인할 수 있는 건지 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@NotBlank 질문입니다
예를 들어 @NotBlankString nickName 이런 경우에nickName :"12 34 56" 이런 닉네임도 안 되는 건가요??아니면 nickName : " " << 이런 경우만 금지하는 건가요??" " 만 금지하는 것인지, 문자열 속에 " "를 금지하는 것인지 궁금합니다 ..
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
price에 qq를 넣었을 때 오류 발생과정
@PostMapping("/add") public String addItemV2(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { 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에 qq를 넣으면 오류가 2개 발생합니다.Field error in object 'item' on field 'price': rejected value [qq]; codes [typeMismatch.item.price,typeMismatch.price,typeMismatch.java.lang.Integer,typeMismatch]; Field error in object 'item' on field 'price': rejected value [null]; codes []; arguments []; default message [가격은 1,000 ~ 1,000,000 까지 허용합니다.]addItemV2()메소드 발생 전 스프링에서 HTTP 전송을 통해 넘어온 itemName 데이터에 의한 FieldError, 그리고 addItemV2()메소드에서 같은 이유로 발생한 FieldError 먼저 스프링 FieldError의 rejectedvalue에는 qq가 들어갑니다.(typeMismatch 오류가 발생하기전부터 알고있던)그 다음 개발자가 직접 작성한 FieldError의 rejectedvalue에는 null 이 들어갑니다.(Integer타입에 String 타입이 들어갔으므로)그 다음 qq, null 중 bindingResult에 먼저 들어간 qq가 출력됩니다. https://www.inflearn.com/questions/309088/bindingerror이 글을 보다 질문 드립니다.위와 같이 이해했는데 맞게 이해한 것 일까요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
findCookie 에서 쿠키가 2개인 경우는 없나요 ?
아이디가 2개이고, 이 2개의 아이디로 모두 로그인을 하면서 쿠키를 발급 받아가지고 클라이언트(브라우저)에 SESSIN_COOKIE_NAME을 이름으로 갖는 쿠키가 2개인 경우는 없나요 ?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@CookietgValue도 객체를 자동으로 생성해주나요 ?
HomeController의 homeLogin메서드의 파라미터 중 memberId에는 @ModelAttribute가 붙지 않았는데LoginController에서 오는 response의 Cookie를 자동으로 어떻게 받는 건가요 ?