묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
실행이 안되네요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]빌드까지 성공했는데 실행이 안되요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ExceptionResolver1 강의 error.bad
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)ㅇ2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)ㅇ3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)ㅇ[질문 내용]messages.properties에error.bad=잘못된 요청 오류입니다. 메세지 사용이라 하고 postman 호출하니영어로 나옵니다 왜 그럴까요?++application.properties에 추가도 했고intellij 인코딩도 utf-8로 했스빈당
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
커넥션 풀 설정 관련
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]강의 잘 보고 있습니다현업에서 보통 와스에서 커넥션 설정시 어떤 프로퍼티를 주로 설정하는지 알고 싶습니다. 그리고 maximumPoolSize = minimumIdle 같은값으로 명시적으로설정하나요?? minimumIdle 을 설정하지 않으면 default 가 maximumPoolSize 와 같으니 설정을 안하는게 맞는지요??(제가 개발자가 아니라 테스트는 못해보고 문의드립니다 .)
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터 로그 순서 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]아래 캡처처럼 로그가 나오는데, LogInterceptor다음에 LoginCheckInterceptor의 로그가 나와야 하는거 아닌가요? (/item url 을 접속했을 때 나오는 로그들 입니다.) LogInterceptor preHandle의 REQUEST를 쏘고나서 바로 LoginCheckInterceptor의 preHandle의 로그들이 나와서 문의 드립니다. 제가 잘못 알고 있는 거 같은데 다시 한번 설명 부탁 드립니다. 그리고 postHandle의 로그는 왜 안나온건지 궁금합니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
리터럴 대체문법
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]리터럴 대체문법이라고 말씀하셨는데 => ||자바스크립트 `` 백틱 같은 맥락이라고 보면 될까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
왜 파일이 안나오는지 모르겠어요;;
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]경로를 들어가고싶은데 안들어가져요참고로 관리자계정으로 했는데도 똑같아요
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
[제안] H2 데이터베이스 설정
JDBC 이해.pdf 강의 자료 중 H2 데이터베이스 설정 부분에 대해 다음과 같이 추가 제안드립니다. h2 설치 파일을 다운로드 하면 h2.sh 파일을 바로 확인할 수 없어 당황했는데, 강의 영상에서 터미널 path를 보고 bin 디렉토리 안에 파일이 있다는 것을 유추할 수 있었습니다. 이에, 아래와 같이 명시적으로 디렉토리 이동에 대한 내용을 추가하면 다른 수강생분들에게 도움이 될 것 같습니다:)[기존]MAC, 리눅스 사용자 권한 주기: chmod 755 h2.sh 실행: ./h2.sh[추가]MAC, 리눅스 사용자 디렉토리 이동 : cd bin 권한 주기: chmod 755 h2.sh 실행: ./h2.sh
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
인텔리제이 맥 단축키
갑자기 단축키 입력할때 엔터치면 됐었는데 지금은 탭해야 눌러져요그리고 단축키가 입력된 후에도 밑에 설명창이 안사라집니다밑에뜨는 연관 설명창이 너무 많아서 자동으로 사라지지 않고 직접 점 세 개 표시 누르지 않으면 타자를 칠 수가 없어요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
맥 스프링화면 초기화 오류
잠깐 다른창 보고오면 스프링화면이 모두 초기화 됩니다 ㅜㅜ(위에 잘못된 코드 수정했습니다~)이렇게 코드치다가 돌아가는거 확인하려고 크롬창 잠깐 보고오면이런식으로 초기화가 됩니다 ㅜㅜ너무불편한데 뭐가 잘못된건가요??그리고 run 중지하면 아래와 같이 뜨는데 괜찮은건가요? 실행하면 아래와 같이 뜹니다4:06:54 AM: Executing ':ServletApplication.main()'...> Task :compileJava> Task :processResources UP-TO-DATE> Task :classes> Task :ServletApplication.main(). ____ _/\\ / ___'_ __ (_)_ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot :: (v2.7.16)2023-10-18 04:07:02.984 INFO 30258 --- [ main] hello.servlet.ServletApplication : Starting ServletApplication using Java 11.0.2 on userui-MacBookPro.local with PID 30258 (/Users/user/Desktop/SpringMVC/servlet/build/classes/java/main started by user in /Users/user/Desktop/SpringMVC/servlet)2023-10-18 04:07:02.987 INFO 30258 --- [ main] hello.servlet.ServletApplication : No active profile set, falling back to 1 default profile: "default"2023-10-18 04:07:04.469 INFO 30258 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)2023-10-18 04:07:04.477 INFO 30258 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]2023-10-18 04:07:04.477 INFO 30258 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.80]2023-10-18 04:07:04.578 INFO 30258 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext2023-10-18 04:07:04.578 INFO 30258 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1445 ms2023-10-18 04:07:05.209 INFO 30258 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''2023-10-18 04:07:05.224 INFO 30258 --- [ main] hello.servlet.ServletApplication : Started ServletApplication in 7.989 seconds (JVM running for 8.448)HelloServlet.service현재 자바 11war 확인 완료나머지 설정 완료스프링부트 2.7사용 os = macbuild and run = gradle로 설정(인텔리제이 무료버전이라서) 매번 창이 사라져서 그때그때마다 바로 코드 못고치고 다시 서블릿누르고 메인누르고 자바누르고 베이직누르고 이과정을 계속 반복합니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
select에서 sequence로 반복할경우 선택된 값이 보여지게 할려면 어떤식으로 해야할까요?
<select name="where" title="초급" class="sel_auto" th:field="*{beginnerCount}"> <option value="0">초급</option> <option th:each="num: ${#numbers.sequence(1, 10)}" th:text="${num + '명'}" th:value="${num}">1</option> </select>위와같이 numbers.sequence로 1~10까지 select로 만들었는데서버에서 th:field=*{beginnerCount} 값을 받아와서 만약 받아온 값이 5라고 하면 5가 선택되어지도록 하고 싶은데이럴 경우에는 어느부분을 수정을 해야 서버에서 받은 값이 선택이 되어질까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
중복회원가입 가능
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]회원 가입을 할 때 중복 회원 가입이 안 되어야 하는데 데이터를 살펴보면 중복으로 회원가입이 됩니다. 코드 상으로는 문제가 없어 보였는데 확인 한 번 부탁드리겠습니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@InitBinder
@InitBinder 를 사용하면어떤 매핑이 들어와도 @InitBinder 안의 검증기가 적용된다고 하셨는데이전에 mvc 설명에서 @modelattribute로 써주면 안의 내용이 모든 곳에서 다 적용되는것과 다른 개념인가요 ? 둘의 차이는 @InitBinder 를 사용하면@Validated 인자가 들어간 곳에서만 작동하는것 의 차이인가요 ?
-
미해결스프링 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로 인식하는건지... 제가 잘 이해를 못해서 자세한 설명 부탁드립니다.