묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
요즘 인터넷상에 핫해서 당연히 아시겠지만 log4해킹관련해서 질문있습니다!
Log4J 또는 Log4Shell이 취약점으로 되어 전세계 제일 유명한 사이틀 마저도 이로 이루어진 사이트들이 전부 해킹 당하고있고 심지어 누가 했는지도 알수없다고 하는데요, 강의 내용상, Log4J를 포함하는 게 SLF4J이고 이걸 구현한것이 Logback이며 이걸 실무에서 가장 많이 쓴다고 배웠습니다. 현재 이렇게 보안이 뚫린 상태에서 Logback또한 취약점이 될까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
v4 model 객체 질문드립니다.
안녕하세요 FrontController에서 model 객체를 만들고, Controller에서 model에 값을 넣지만 return은 String값만 반환하는데 model이 controller에 넣은 값을 유지한채로 frontcontroller에서 view.render에 전해지는 원리가 궁금합니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
강사님 파일 업로드시 실제 DB에서 테이블을 만들려고 합니다.
제가 JPA때 배운 내용을 되돌아보면 강의대로 테이블을 구성하면 에러가 나잖아요? private Long id; private String itemName; private UploadFile attachFile; private List<UploadFile> imageFiles; 이런 경우 데이터베이스 테이블을 어떻게 만들어야 되나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
test클래스 진행 중에 에러가 발생했습니다;;
[질문 내용]@AfterEach문을 입력하고 memberRepository클래스에 clearStore()도 존재하는데 테스트 실패가 계속 나옵니다.. 이유가 무엇일까요???
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
컨트롤러 -> 핸들러 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]강의에서는 핸들러 어댑터가 생기면서 컨트롤러의 개념 뿐만 아니라 어떤 것이든 해당하는 종류의 어댑터만 있다면 다 처리할 수 있다고 하셨는데요. 이 구조에서 컨트롤러 자리에 컨트롤러 역할을 하는 것이 아니라 다른 무언가가 올 이유가 있나요? 또 그런 예시가 있을까요? 컨트롤러가 굳이 핸들러라는 이름으로 바뀌어야 하는지 아직 잘 이해가 가지 않습니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
th:field를 사용하면 값이 true인 경우 자동으로 checked 해주는 부분...
타임리프의 체크 확인에서 th:field를 사용하면 값이 true인 경우 자동으로 checked 를 처리해준다 했는데 만약에 타임리프를 안쓰면 조건절을 어떻게 작성해야되나여??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그아웃 시 쿠키 생성 관련 질의
안녕하세요! 강의 듣던 중 궁금한 게 생겨 질의 드립니다! 로그아웃의 경우에 사용자가 로그아웃 url 로 post 요청을 보낼 경우에 서버에서 새로운 쿠키를 max-age(0)으로 세팅해서 다시 사용자에게 보내는 것으로 이해하고 있습니다. 사용자가 보낸 쿠키 객체를 사용하지 않고 새로 생성해서 보내는 이유가 있을까요? 늘 좋은 강의 감사합니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
실무에서는 어떻게 저장하나요?
현재 강의는 파일을 로컬(본인컴퓨터)에 저장하는 방법입니다.즉, "프로젝트 폴더"내에 저장되어 있다고 이해했습니다. 궁금한점이 여러가지 있습니다. 로컬에서스프링부트(Tomcat)를Mysql은 원격서버(NAS)에 설치하고 사용중입니다.개발완료후 배포때 나스에서 서버를 돌린다고 생각했을때 아래의 질문내용에 대한 답변이 궁금합니다. 1.파일업로드를 강의처럼 내 프로젝트폴더 내에 저장하게 되면 배포 단계에서 내 프로젝트를 NAS로 돌리게 되면 문제가 생기지 않나요? 강의에서 경로를 /Users/jy/project/file/ 이렇게 설정해주었는데 이것은 제 맥북에서의 프로젝트 경로이고, NAS에서는이 경로가 아닐텐데 말이죠...ㅠㅠ2. /Users/jy/project/file/ 이런식으로 경로를 설정하고, 이미지를 html에서 로드할때는 어떻게 해야하나요?db에 파일에 대한 경로로 "/Users/jy/project/file/파일명.txt" 라고 저장되겠지만.html에서 로드할때는 static 아래에 있어야 할텐데....ㅠㅠ 3. 파일업로드시 내프로젝트 폴더가아닌, NAS에 바로 저장하는 방법은 어떤가요? 찾아본 바로는 (FTP,SFTP같은것을 사용하면 될것같긴한데....)4. 업로드되는 파일이 내부프로젝트에 저장될 정도가 아니라면 보통 실무에서는 어떻게 처리하나요?5. 포트폴리오용으로 파일업로드 서비스를 구현한다 했을때,프로젝트내부에 업로드하는방법 vs 외부에 저장하는방법(아마존s3, NAS) 어떤게 더 괜찮을까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
설치하고 run ServletAppliaction을 진행하였는데 tomcat server가 실행되는 문구가 출력되지 않습니다 ㅜㅜ;;
[질문 내용]intellij를 실행하면 console창에 이렇게 출력됩니다... 다시 설치해도 똑같이 나옵니다.. 문제가 무엇일까요.... (FIle- > setting 에서 gradle은 intellij IDEA로 바꿨습니다.) [추가 내용] FIle - setting 에서 검색란에 gradle을 입력하고 build and run using 부분을 Gradle로 바꾸면 서버가 실행되는 모습이 나옵니다. 대신... 서버를 중지하면 에러문구가 출력됩니다... 다시 build and run using 부분을 intellij IDEA로 바꾸면 에러는 나오지 않지만 위와 같은 문제에 직면합니다.... ㅜㅜ; tomcat 서버가 실행은 되지만 계속해서 로딩되는 듯한 모습을 보여줍니다.. 서버 정지 버튼을 누른 상태
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
response.sendError와 return ModelAndView 관계
sendError(400) 를 호출했기 때문에 WAS에서 다시 오류 페이지( /error )를 내부 요청한다. 라는 의미는 WAS에서 다시 디스패쳐 서블릿을 통해서 해당 에러를 요청하는 컨트롤러까지 다시 호출된다는 의미로 이해가됩니다. 그런데, sendError를 하면서 return ModelAndView를 하게 되면 이 에러는 resolve되어서 WAS에서는 정상적인 response로 처리된다고 이해를 했습니다. ResponseStatusExceptionResolver.applyStatusAndReason 여기를 보면 이렇게 처리되어있습니다. 하지만 위 글의 첫 문장처럼 sendError를 하게되면 WAS에서는 내부적인 처리를 다시한다고 써있습니다 (dispacterType == ERROR) ModelAndView를 반환해도, sendError를 같이 리턴하게 되면 다시 WAS 내부적으로 호출된다고 이해하면 되나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ExceptionHandler 질문!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. 강의에서 다음과 같은 코드를 설명해 주셨습니다. @ResponseStatus(HttpStatus.BAD_REQUEST)@ExceptionHandler(IllegalArgumentException.class)public ErrorResult illegalExHandler(IllegalArgumentException e){ log.error("[exceptionHandler] ex", e); return new ErrorResult("BAD", e.getMessage());} 여기서 IllegalArgumentException 또는 이를 상속한 자식의 예외가 발생했을때, 등록된 @ExceptionHandler를 통해 위의 핸들러로 예외가 처리되고, WAS 에게는 정상 응답후 끝난다고 하셨습니다. 즉, 이전처럼 WAS에서 다시 서블릿으로 예외를 처리할 컨트롤를 호출하지 않는다 하셨습니다. 이는 HandlerExceptionResolver 활용 에서 알려주셨던 내용입니다. 하지만 의문이 있는데, 위 코드에서는 @ResponseStatus가 추가되어 있습니다. @ResponseStatus는 내부적으로 response.sendError(statusCode, resolvedReason); 를 통해 response 내부에 오류가 발생했었음을 상태로 저장하게 됩니다.(이전 강의에서 알려주셨던 내용) 이후 이를 WAS가 인지하게 되어 기본 에러 페이지인 "/error"로 재요청을 보내야 하는것 아닌가요? 스프링 부트는 response.sendError(...) 가 호출되면 모든 오류는 "/error" 를 호출하게 된다. 라고 알려주신게 생각납니다! 이부분이 어떻게 처리되는 것 인가요?? 조금만 더 알려주시면 감사하겠습니다!!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의에서 43초 부분에 @GetMapping관련하여 질문이 있습니다.
제일 처음 hellospring으로 간단히 코드를 만들었을때 @GetMapping("hello")를 하면 localhost:8080/hello를 치면 그 코드가 실행되는 걸로 기억을 하는데그럼 여기서도 혹시@GetMapping("/members/new")이렇게 해도 되고@GetMapping("members/new")이렇게 입력해도 결과값은 같게 나오나요? 그리고 지금 이 강의에서MemberController와 MemberService둘다 스프링빈에 등록되어 있어서 MemberController생성자에 MemberService를 쓸 수 있는것이 맞나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
redirect시 @RequestParam이 동작을 안합니다. ㅠㅠ
강사님 일단 로그인안한 상태에서 /items에 접근하면 -> 이렇게 쿼리파라미터를 들고 login페이지로 새로 보여주는거까지는 잘됩니다. -> 근데 여기서 /items로 redirect해줄려고 @RequestParam어노테이션을 사용해서 쿼리파라미터를 받아오려고 하면 이렇게 뜨거든요. 그래서 제가 컨트롤러 단에서 페이지를 다른 페이지로 돌리고 로그를 찍어보닌까 @RequestParam으로 redirectURL이라는 쿼리파라미터를 못불러 오는것 같습니다. defalutURL을 넣어서 / 로 해주면 계속 /로가고 저걸 안넣어주면 쿼리파라미터를 찾을 수 없다고 에러가납니다. 이런 경우 어떻게 해결해야 할까요? 강의랑 특별히 다르게 한건 없는데;;;
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
timeTraceAop만들고 SpringApplication 실행하는데 걸린 시간이 안나오네요..
결과창이 이렇게 뜨는데 아무리 고쳐봐도 안되네요.. *************************** APPLICATION FAILED TO START *************************** Description: The bean 'timeTraceAop', defined in class path resource [com/example/hellospring/Service/SpringConfig.class], could not be registered. A bean with that name has already been defined in file [C:\Users\zzang\Downloads\java\hello-spring\build\classes\java\main\com\example\hellospring\aop\TimeTraceAop.class] and overriding is disabled. Action: Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
SpringConfig 빈등록 오류
강사님 코드를 따라 치면서 질문 중복이지만 해결이 안되서 질문드립니다. 1. MemberService의 생성자 확인 MemberRepository로 구현 2. MemoryMemberRepository에 Repository인터페이스 구현 위의 둘다 정확하게 한거같은데 뭐가 문제인지 궁급합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
강사님 질문입니다!!!
현재 loginService에서 DB에 있는 값 체크할 때 if(member.getPassword().equals(password)) { return member; } else { return null; } 이런식으로 비밀번호만 체크하잖아요? 근데 아이디가 틀릴 수도 있으니 아이디도 체크해줄려고 if(member.getLoginId().equals(loginId)) 이런식으로 조건을 더 추가를 해주면 비밀번호만 체크하고 아이디가 다를땐 500에러를 내거든요? java.util.NoSuchElementException: No value present 이런 에러인데요,.,. 아이디랑 비밀번호가 모두 일치해야 성공로직을 돌고 아이디가 없으면 아이디가 없다고 비밀번호가 다르면 비밀번호가 다르다고 이렇게 구성하려면 어떻게 해야할까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
thymeleaf 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
forward에 대해서 궁금합니다.
나중에 가면서 이해되겠지 하고 천천히 돌려보고 자료도 보고했는데 forward 가 되기때문에 렌더링이 마쳐진다는 강사님의 말씀이 이해가지않습니다. forward가 redirect와는 달리 바로 쏴주는거같은데, jsp 에 쏴주게 됨으로써 html이 렌더링 된다는 말씀이신가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
접근지정자의 범위가 궁금합니다.
기본적인 접근지정자의 범위개념은 인지하고있습니다. 예를들어 protected는 해당 패키지외에 상속받은 다른 클레스가 범위인데, 현재 13분 50분경 service 가 protected로 되었습니다. 이때 꼭 저걸 써야되나? 싶은 의문이 들더라구요 그래서 실무에서의 각 접근지정자의 대략적인 범위? 예를들어 private라면 대략 생성자같은 클라이언트가 건들면 안되는곳을 지정한다 처럼요. 부탁드립니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
service와 controller의 역할에 대한 질문이 있습니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]service와 controller의 역할에 대한 질문이 있습니다. 강의를 듣고 활용해던 도중 의문점이 생겼습니다. 한참 찾아봤는데 아직도 모르겠어서 질문드립니다. 저의 기존 코드에서는 어떤 컨트롤러의 post 요청에서 A,B,C 엔티티가 반드시 순서대로 생성된후 저장되어야 합니다. (참조관계 떄문에 그렇습니다) 기존에 저는 컨트롤러에서 A 엔티티 생성 -> AService.createA() 한 후 B, C도 동일한 과정을 거칩니다. 이러니까 컨트롤러가 서비스의 역할을 해버린다고 생각했습니다. 그래서 컨트롤러는 그냥 dto를 넘겨주고 서비스에서 위의 작업을 하려했습니다. 그랬더니 몇가지 문제가 생겼습니다. 1. service에서 repository만을 사용하면 코드 중복이 심함(create 할때 복잡한 중복검증 로직이 있는대, 그것까지 전부 다시 해야함) 2. service에서 service를 주입받아서 하자니 순환참조, 나말고 코드 이해도 낮은 다른사람이 손대면 실수할 가능성 높음 등등의 문제가 생김 그래서 그냥 원래대로 냅두려니 controller가 너무 크고 service가 하는게 그냥 repository로 요청 보내기인 경우가 대부분임 그래서 질문은 1. 적절한 방법이 뭘까요? 2. 복잡하고 큰 규모의 서버 코드를 보고싶은데 좋은 예시를 어디서 찾을수 있을까요? 3. 제가 해결방법으로 여러 service를 주입받아서 사용만하는 service를 만들어서 컨트롤러에 있던 코드를 거기로 옮겨서 컨트롤러에 비즈니스 로직이 생기는걸 없에고 순환참조, 코드 중복 등을 제거 해봤는데 이게 맞는건가요? 4. MSA와 상관있는 문제일까요?