묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
오류 html 페이지 응답 시 상태 코드 지정하는 방법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]개발자는 오류 html 페이지 응답으로 예외를 처리할 때 /error/4xx.html , /error/500.html 와 같은 경로에 html 페이지를 생성하기만 하면 된다고 이해하였습니다. 그러면 예외가 발생했을 경우 오류 html 페이지 응답으로 예외를 처리하고자 할 때, 발생된 예외에 대한 상태 코드를 지정해줘야 지정된 위치로 올바른 상태 코드에 대한 오류 페이지가 출력되므로, 상태 코드를 지정하는 방법은 HandlerExceptionResolver을 구현하여 오버라이딩 한 resolveException() 내부에 response.sendError()로 상태 코드를 지정하고 빈 ModelAndView 객체를 리턴하는 게 최선일까요?? 아니면 다른 상태 코드 지정 방법이 또 있을까요?? 물론 @ExceptionHandler을 통하여 @ResponseStatus로 상태 코드를 지정해서 구현할 수도 있을 것 같긴 하지만 선생님께서 @ExceptionHandler는 API 예외 처리일 때 쓰는 것이 좋다고 하셔서 질문드립니다 !
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
GetMapping에대해서 질문
엄청 기본적인건데...이전 강의노트를 찾아봐도 내용 정리가 안되서 질문합니다.@Controller @RequestMapping("/basic") public class BasicController { @GetMapping("text-basic") public String textBasic(Model model) { model.addAttribute("data", "Hello Spring!"); return "basic/text-basic"; } @GetMapping("text-unescaped") public String textUnescape(Model model) { model.addAttribute("data", "Hello <b>Spring!</b>"); return "basic/text-unescaped"; } }여기서 RequestMapping 이 basic 폴더를 매핑해주는거고GetMapping 은 /basic/ 에 있는 파일?과 매핑해주는게 맞나요?? 추가적으로 return 하는게 view 인걸로 아는데 model 값을 추가해서 전달해주기 위해 view 를 리턴하는게 맞는지 질문드립니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
template에 파일을 추가하는 이유
index.html 은 static 경로에 두고, 그외에 추가하는 파일은 template 경로에 두는데 무슨 차이가 있는지 알고 싶습니다. 왜 template 경로에 두어야 또 파일을 읽어가는 것인지 궁금해서 질문 드립니다. 매우 기초적인 거같은데 까먹어서 질문드려요...
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
HttpServletRequest 동일 인스턴스 질문
View 분리 - V2 강의에서 질문 사항이 있습니다.아래 MyView 객체에서 사용하는 HttpServletRequest request 라는 인자값과MemberSaveController에서 사용하는 HttpServletRequest request가 디버깅에서 확인하면 동일한 인스턴스인것으로 확인됩니다.이는 HttpServletRequest 도 서블릿 객체이고 싱글톤으로 관리되어서 동일한 인스턴스로 공유되는 것일까요?아니라면 해당 소스에서 확인할때 두개의 인스턴스가 동일한 이유가 무엇일까요?@6666번으로 동일한 인스턴스 객체였습니다.public class MyView { private String viewPath; public MyView(String viewPath) { this.viewPath = viewPath; } public void render(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request,response); } }public class MemberSaveControllerV2 implements ControllerV2 { MemberRepository memberRepository = MemberRepository.getInstance(); @Override public MyView process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); Member member = new Member(username,age); memberRepository.save(member); request.setAttribute("member",member); return new MyView("/WEB-INF/views/save-result.jsp"); } }
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 타임아웃 관련 질문드립니다
안녕하세요 세션 타임아웃 설정 파트를 공부하다 궁금한 점이 생겨 질문드립니다.강의에서는 HTTP는 비연결성이어서 서버 입장에서는 사용자가 웹 브라우저를 종료한 것인지 알기 어려움으로 세션 종료시점을 정해줘야 한다고 이해했는데요그런데 일반적으로 네이버 같은 특정 사이트에 로그인하고 브라우저를 껐다 바로 켜면 로그아웃이 되어있는데 이런 경우엔 어떤 매커니즘으로 세션 데이터가 삭제되는지 궁금해 질문드립니다
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터의 afterCompletion에서는 예외를 처리해주진 못하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]afterCompletion 구현 코드 결과 화면사진과 같이 afterCompletion()에서 예외 처리 부분에 response.sendError(200)을 해도 예외가 500으로 나가는 걸 확인할 수 있었습니다.@ControllerAdvice 어노테이션을 지정한 클래스 및 제가 구현한 ExceptionResolver들은 전부 주석처리 하여서 HandlerExceptionResolver 단계에서 예외 처리 실패했으니 500 Internal Error이 나가는 것은 맞지만,최종적인 단계에서 필터링 해주는 인터셉터인 afterCompletion()에서 sendError()을 지정하면 WAS는 지정된 상태 코드의 예외 처리를 해줘야하지 않나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 가입 run 했을 시 DB 저장 안돼요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]영상 속 6분 20초경 @Transactional을 주석 처리 한 후 회원가입 run 했을 시 DB에 데이터가 들어가지 않습니다
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
file.dir에 계속 null값이 들어옵니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]사진이 저장되지않아 확인해보니 fileDir에 계속 null값이 들어와 fullPath가 제대로 생성되지 않아서 라는 걸 알게 되었습니다. 오타를 찾다가 보이지않아서 영한 강사님 파일을 그대로 복사 붙여넣기 했는데도 계속 null값이 들어옵니다 ㅠㅠ 왜이럴까요? fileDir에 경로를 바로 집어넣으면 파일이 잘 저장됩니다.구글 드라이브 링크 댓글에 달아놓겠습니다 ㅠㅅㅠ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 시퀀스 JDBCRepository 변경 오류
안녕하세요 선생님의 강의를 수강하며 잘 따라가며 학습 중입니다.DB연결도 잘되고, insert도 잘되는데 시퀀스 값이 이상하게 나옵니다.ㅠㅠ3이 자꾸 고정적으로 뜨고 3,4,5,6.. 증가하는데.. 원인이 뭘까요??ㅠㅠ도와주세요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@Bean과 컴포넌트 스캔 차이에 대해
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1. 강의 내용과 관련된 질문인가요? 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네 SpringConfig 클래스에 bean 주입하고 관리하면 추상화의 장점을 살릴 수 있다고 하면 Service단이나 repository 단에 @Service와 @Repository로 컴포넌트 스캔을 하는 것보다 SpringConfig 클래스에서 @Bean으로 클래스들 관리하는게 더 좋은가요?? 실무에서는 @Bean을 통해서 스프링 빈에 직접 주입하고 관리하나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
영한님께서 버전을 올려가며 가르쳐주시는데
그 버전들을 모두 꿰뚫고 있어야 할까요, 이런 과정이 있었다 정도로만 알고있으면 될까요? 어느정도의 학습이 필요할지 궁금합니다.
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
Oracle을 연결하고 싶은데, sql파일을 만들고나면...
Oracle을 연결하고 싶은데, sql파일을 만들고나면... 상단창에 Type을 Oracle로 지정해도 Name과 Database가 뜨지 않습니다. lib 폴더 만들어서 ojdbc6.jar 드라이버도 넣어 놨고, tnsnames.ora에 XE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = 127.0.0.1) (PORT = 1521) ) (CONNECT_DATA = (SERVER = dedicated) (SERVICE_NAME = orcl) ) )도 추가해두었습니다.pom.xml에는 다음과 같이 dependency도 추가하였습니다.<!-- Servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.0.2.RELEASE</version> </dependency> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency> 뭐가 문제일까요 선생님?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
메서드 구현부 이동
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 컴포넌트 스캔과 자동 의존관계 설정 영상 학습중 강사님은 메서드에 파란 밑줄이 그어져 클릭하면 구현부로 바로 이동 하는 걸 봤는데 제 인텔리제이 코드에는 밑줄이 그어지지 않아 클릭을 해도 이동이 안됩니다. 저는 command + b 단축키로 이동하는데 혹시 저렇게 뜨게 할려면 어떻게 해야 하는지 알 수 있을까요저는 ultimate 버전을 사용중인데도 안 뜨네요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
logging.level.org.apache.coyote.http11=debug 설정 적용이 안되는 것 같습니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의 내용대로 logging.level.org.apache.coyote.http11=debug 설정을 적용하였는데 콘솔에 관련 로그가 출력이 안됩니다. 스프링부트 버전업 이후에 더이상 해당 설정을 지원 안하는걸까요?스프링부트 버전 : 3.2.3패키징 : War자바 버전 : 17의존성 : 강의에 나온대로 추가했습니다빌드 및 실행, 테스트 : 인텔리제이요청 url : http://localhost:8080/hello?username=김아래는 설정 적용 후 로그 출력 사진입니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
html의 name을 보고 어떻게 member.java가 아닌memberform.java의 name으로 연결을 시켜주는건가요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]어떻게 creatememberform.html의 name만 보고 스프링이 controller의 memberform name필드에 넣어줄수 있는것인지 궁금합니다. domain의 member.java에도 같은 이름의 name 필드가 있는데 이것도 같은 private 변수여서요.. package hello.hellospring.domain; public class Member { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
강의 자료 코드 질문
11:45초에 나오는 코드인데요.이 html 코드랑 강의 자료 코드랑 다른 것 같아 질문드립니다. 강의자료에는 다음과 같네요.<div class="col"> <form th:action="@{/logout}" method="post"> <button class="w-100 btn btn-dark btn-lg" type="submit"> 로그아웃 </button> </form> </div>
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
터미널에서 spring 프로젝트 실행 관련 질문입니다.
tomcat 설치 후 spring 프로젝트를 터미널에서 "mvn tomcat:run" 명령어로 실행하는데,프로그램 자체는 실행되지만 웹에 접속되진 않습니다.intellij에서 tomcat server 환경에서 접속할땐 잘 실행이 되었는데,터미널에서 실행하려니 잘 되지가 않습니다.다음이 spring 웹서버 링크에 접속했을때의 에러인데, 찾아보니 "javax.servlet-api의 버전이 맞지 않아서 발생한다." 라고 하면서 <dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency>를 <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency>로 바꾸어주라는 내용을 보고 시도해보았지만 잘 되지 않았습니다.'혹시 tomcat를 켜두고 "mvn tomcat:run" 명령어로 서버를 시작해야하나?' 라는 생각을 하고선 이또한 진행해봤지만 이미 8080서버가 열려있다는 문구가 뜨면서 오히려 실행 도중에 멈추더라구요. intellij 외의 환경에서도 빌드가 가능해야할것같은데 고민입니다. Intellij에서 해당 프로젝트를 실행할때 이용한 Tomcat server의 설정을 함께 첨부합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ExceptionHandler JSON 반환
왜 저는 Json으로 code와 message가 뜨지않고 그대로 상태코드도 400으로 나올까요?ㅠㅠlog도 찍히지않습니다,, 어느부분에서 오류가 난건지 모르겠습니다ㅠㅠ 공통으로 (Exception e)로 처리해준 예외를 추가하니, bad와 user-er 모두 공통으로 처리한 Ex로 JSON이 반환됩니다 ㅠㅠ
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
예외 테스트 시 Postman 테스트와 웹 브라우저 테스트의 차이점
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]1.웹 브라우저 테스트 2.Postman 테스트@ExceptionHandler 강의 내용을 전부 따라하였습니다위와 같이 웹 브라우저와 Postman 둘 다 요청을 Accept: text/html로 보냈는데 왜 웹 브라우저는 @ExceptionHandler이 반영돼서 API JSON 스타일로 오류 메시지가 보여지는 반면 Postman은 ExceptionResolver을 찾지 못하고 결국 오류가 WAS까지 넘어가 500 INTERNAL ERROR을 발생시키는 것을 확인할 수 있었습니다. [핵심 질문]HTTP 요청 메시지의 Accept: application/json일 경우만 @ExceptionHandler로 지정된 메서드가 API 응답을 정상적으로 처리할 수 있는 것 아닌가요? 왜 웹 브라우저에서는 Accept: text/html인데도 정상 API 응답이 나가고 Postman에서만 Accept:text/html인 경우가 인식 못하고 500 서버 에러가 나는지 궁금합니다 !
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 끝나고 종료 후에도 포트가 계속 사용중인 상태로 유지됩니다.
윈도우 Git Bash로 빌드 후웹 작동 확인하고 프로그램 종료한 후에인텔리제이로 실행시켰는데 여전히 포트가 사용중이라고나옵니다. 어떻게 해야 할까요?