(선생님 아래 댓글에 나름대로 해결책 적어놓았습니다!) 선생님 안녕하세요. 기존 로그인 방식을 session에서 security로 바꾸면서 로그인에 성공하면 RedirectAttribute를 이용한 모달창 띄워주기는 어떻게 해야 하는지 고민됩니다. 시큐리티 내부에서 / login.do 요청을 처리해주니 왠지 시큐리티 내부 필터에 설정을 해줘야 하나? 라는 생각이 듭니다. 로그인에 실패하면 시큐리티에서 error를 파라미터를 넘겨주니, 로그인 성공 시 특정 파라미터를 1회성으로 넘겨주는 것이 있을까? 라는 생각도 듭니다. 아니면.. 시큐리티로 로그인에 성공하는 순간 url경로를 설정하여 특정 컨트롤러에서 받아줘서 그곳에서 redirect를 해줘야 할까요? 아래의 사진은 기존 로그인 방식에서 RedirectAttributes의 addFlash를 이용한 참고사진입니다. 감사합니다!
20:35 예시 코드처럼 입력했는데, 공백을 입력하고 중복확인을 하는 경우처럼 반환되는 Member 가 없는 경우 NullPointerException 이 발생합니다. memID 로 찾아지는 Member 가 있는 경우 0 을 반환하면서 잘 동작합니다. 선생님 예시에서는 작동이 잘 되는데 왜 저는 안 되는 걸까요? 옵셔널이나 예외처리를 해주어야 할까요? @RequestMapping("/memRegisterCheck.do") public @ResponseBody int memRegisterCheck(@RequestParam("memID") String memID) { //넘어오는 파라미터 이름과 받는 이름이 같은 경우 생략 가능 Member m = memberMapper.registerCheck(memID); if (m != null || m.equals("")) { //아이디가 중복이거나 공백인 경우 => 사용불가 return 0; } return 1; //사용 가능 } java.lang.NullPointerException kr.board.controller.MemberController.memRegisterCheck(MemberController.java:25) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:871) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:777) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870) javax.servlet.http.HttpServlet.service(HttpServlet.java:489) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855) javax.servlet.http.HttpServlet.service(HttpServlet.java:583) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
53강 강의를 듣다가 마지막 부분에 MVC04/ memberList.do 에서 회원가입 완료 시 MVC03/ memberList.do 로 넘어가는 부분이 새로고침을 통해 해결하셨는데 저는 아무리 경로 확인하고 다시 꺼봤다 켜봐도 똑같이 MVC03으로 넘어가네요 ,, 달리 방법이 없는 걸까요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] HTTP GET 방식 기능 : 조회 HTTP POST 방식 기능 : 처리 , 저장 , 등록 , ... 와 같이 알고 있습니다. 즉 사진에서 노란색 밑줄 친 코드는 현재 폼에서 입력된 데이터를 /servlet/members/save 경로에서 "처리"할 것을 요구하는 코드로 이해했습니다. /servlet/members/save 경로에 해당되는 MemberSaveServlet 클래스에선 폼에서 발생한 데이터를 "저장"시키는 역할을 하고요. 그런데 다음과 같이 실제 폼에서 username과 age를 입력한 후 submit을 누르면 다음과 같이 /servlet/members/save페이지가 "조회" 되면서 데이터가 "저장" 되는 두 가지 작업이 동시에 일어나는 것을 확인할 수 있었습니다. 저는 POST 방식은 데이터 "조회" 가 아닌 데이터 "처리" 로 알고 있어서 폼에서 데이터를 입력하면 페이지에는 아무런 변화가 없고 그냥 데이터가 "저장" 만 되는 것으로 알고 있었습니다 그래서 /servlet/members/save 페이지를 "조회" 해서 데이터가 잘 "저장" 됐는지 확인하려면 GET 을 통하여 해당 페이지로 넘어가게끔 추가로 로직을 구성해야되는 것으로 생각하였습니다. [핵심 질문] 이에 따라 앞으로 POST 방식을 쓰는 경우 페이지가 "조회" 되면서 데이터 "처리" 가 동시에 순차적으로 일어난다고 봐도 될지 궁금합니다 !
<body> <form:form id="gotoPopupPreview" name="gotoPopupPreview" method="post" action=""> <input type="hidden" name="isPreview" value="Y"> <input type="hidden" name="nttId" value="${searchVO.nttId}"> ...(생략) </form:form> <script> function openPreview(url, target, otherData){ var f = $("#gotoPopupPreview"); f.attr('action', url); f.attr('target', target); ...(생략) window.open('', target); f.submit(); } $("submitBtn").click(function(){ var otherData = '어쩌구저쩌구'; openPreview("http://www.test.or.kr/", '테스트', otherData); }); </script> </body> 위 코드와 같이 form 태그를 만들어두고 스크립트에서 새 창을 열어 submit을 보냈습니다. 근데 서버에서 AccessDeniedException : org.springframework.security.web.csrf.MissingCsrfTokenException: Could not verify the provided CSRF token because your session was not found. result :::: {"result" : "fail", "message" : "Could not verify the provided CSRF token because your session was not found."} 이렇게 csrf 토큰이 없다고 뜨네요.. 처음엔 <input type="hidden" name="$csrf.parameterName}" value="${csrf.token}" /> 이렇게 form태그 안에 직접 넣었다가 form taglib을 쓰면 자동으로 토큰을 넣어준다길래 위와 같이 바꾼건데요, 두 경우 모두 토큰이 잘 들어있는 것으로 보이는데 왜 저런 exception이 뜨는 지 모르겠습니다ㅠ 아무래도 새 창으로 띄우는 게 문제일까요? 이 경우에는 토큰을 어떻게 넣어줘야 할까요? T.T
안녕하세요 현재 국비학원에서 스프링프레임워크를 듣는 수강생인데요 너무 날라치기로 mvc패턴까지 알려주고 계셔서 , 나름 개인공부를 하고자 인프런에서 강의구매를 하려고 합니다 우선 스프링은 지금 처음 만져본거고 boot는 추후에 결제해서 볼꺼구요. 프페임워크에 대한 수강을 듣고싶어요 그리고 제가 m1맥북을 쓰는데 원래 학생혜택으로 인텔리제이 울티를 쓰고있어서 자바수업때부터 계속 인텔리제이를 썼는데요 학원에선 이클립스로 수업진행을 하다보니 환경구축하는게 어렵더라구요.. 어디서 어디까지가 구축인지도 모르겠고 STS3 다운받았더니 계속 오류에 이클립스도 햇더니 오류가 계속 나서 어쩔 수 없이 인텔리제이로 해야할 것 같아요 . 괜찮은 수업 아시는분 계시면 추천 부탁드립니다ㅜㅜ
안녕하세요, 강의 잘 듣고 있습니다. 본 영상에서는 memberId가 쿠키에 존재하면 로그인이 된 상태라고 간주하는데요 실무에서도 이와 같은 방식으로 로그인 여부를 판정하는지 궁금합니다. 만약 쿠키를 사용하여 로그인 여부를 판정하게 된다면 사용자 측에서 쿠키를 조작할 수 있기 때문에 로그인이 되어 있지 않더라도 loginOk 페이지에 접근할 수 있을 것으로 보입니다. 간단하게 로그인을 성공했는지 여부만 따질때는 본 예제처럼 쿠키 값을 이용하여 판별하는 경우도 많은지 궁금합니다.
안녕하세요, 강의 실습을 따라서 진행하는 중에 화면이 잘 안나오는 문제가 있어서 질문 드립니다. 지난번에 MVC01에서 화면이 로드되지 않는 문제에 대해 maven clean, install을 알려주셔서 이후에는 화면 부분을 생성할 때마다 maven clean, install을 진행했습니다ㅜㅜ 하지만 이번에는 maven clean,install을 실행하거나 프로그램을 껐다가 다시 해봐도 List가 나오지 않습니다. 브라우저의 결과는 아래와 같습니다. List 출력 전 json 알림까지도 잘 나왔고 http://localhost:8080/controller/boardList.do에서도 아래 이미지처럼 나왔습니다. main.jsp 파일입니다. 제가 보기에는 오타 없는 것 같아요. 32번줄 table부분은 var listHtml="<table class='table table-boardered'>";로도 바꿔봤는데 결과는 같습니다. controller 부분입니다. 또한 pom.xml dependency도 추가했습니다. 서버도 문제 없이 작동되고 있습니다. 어디가 문제일까요... 강의를 너무 잘 듣고 있는데 환경 설정 때문인지 자꾸 실행되지 않는 부분이 생겨서 질문 남깁니다ㅜㅜ egov 4.0으로 초기 셋팅은 강사님과 동일합니다.
부트말고 스프링프레임워크에서 시큐리티 기능을 이용한 회원별 권한 부여된 게시판 기능을 만들려고 하는데 SPRING MVC02와 03, 04 를 한 프로젝트 안에 다 작업해도될까요?? 필요한 기능이 관리자 - 글쓰기(사진 멀티업로드) 이용자 - 조회, 찜기능 비회원- 조회 이런것들입니다. 시큐리티 기능을 활용해서 사이트를 만들어보려고 하는데 어떤 챕터를 활용하면 좋을지 의견 부탁드립니다..! 기존 세팅은 되어 있어서 MVC01 은 제외하고 작업하면 될 것 같은데 이렇게 되면 MVC02부터 실행해도 괜찮은지도 말씀 부탁드립니다..! 감사합니다.
MVC06 소스 톰캣 실행 시 아래 오류가 발생합니다. ERROR: org.springframework.web.servlet.DispatcherServlet - Context initialization failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberController': Unsatisfied dependency expressed through field 'memberUserDetailsService'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ' kr.ody.apps.security .MemberUserDetailsService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject( AutowiredAnnotationBeanPostProcessor.java:586 ) at org.springframework.beans.factory.annotation.InjectionMetadata.inject( InjectionMetadata.java:91 ) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues( AutowiredAnnotationBeanPostProcessor.java:372 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.populateBean( AbstractAutowireCapableBeanFactory.java:1344 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.doCreateBean( AbstractAutowireCapableBeanFactory.java:582 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBean( AbstractAutowireCapableBeanFactory.java:502 ) 구글링으로 파악이 안되네요. 원인이 무엇일까요?
안녕하세요. JSP 좀 더 연습해보려고 따로 해보는데, Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Tue Dec 19 12:10:12 KST 2023 There was an unexpected error (type=Not Found, status=404). 와 같은 오류가 발생하여 문의드립니다. http://localhost:8081/ 에서는 작동이 잘 되는데 http://localhost:8081/test1 하고 http://localhost:8081/sub/test2 위 2개에서 위 오류가 발생합니다. dependencies도 3.0 버전에 맞춰 설정까지 다 했는데도 안되어서 문의드립니다ㅠㅠ 실행은 Ex05JspUseApplication 로 하면 됩니다. 해당 프로젝트를 압축하여 구글 드라이브에 올렸습니다 https://drive.google.com/file/d/1p57CC71yQg-b3f1JYFOAUkdkdPD0rXVg/view?usp=sharing
어디가 잘못된건지 못 찾겠습니다. 일단 boardList.jsp 에 boardForm.do 를 작성했는데 저는 계속해서 404에러와 아래 문구가 콘솔창에 찍힙니다. 도와주세요. 제 눈에는 잘못된 부분이 보이지 않습니다.... 현재 화면을 캡처해서 올립니다. servlet-context.xml BoardController boardList.jsp boardForm.jsp root-context.xml 결과창 : boardList는 잘 나옵니다.
강의 잘 듣고 있습니다. ^^ 현재 13강에서 test.jsp 를 만들었는데요. 화면에 출력은 되는데 html 형태로 출력이 되지않아서 무언가 셋팅이 안된건가 문의를 드려봅니다. // 20231202114331 // http://localhost:8080/MVC01/test.jsp 55 위처럼 출력이 되어져서 좀 당황했습니다. 그리고, HelloStart.java 는 다음 처럼 화면이 출력이 됩니다. // 20231202120202 // http://localhost:8080/MVC01/h.do 100 환경셋팅 좀 알려주시면 감사하겠습니다. 저는 3.10 버전으로 공부중입니다. ^^ 좋은 주말 되세요.