23.02.14
37일 해야할 일
[x] 자바 이론 공부
[x] 과제 회원가입, 로그인 까지 구현하기
[x] spring 강의 듣기 1개 완료
과제 진행 현황 로그인 POST 에서 400에러 전체적으로 게시글이 안됨! 로그인 post부터 수정 필요!
"timestamp": "2023-02-14T00:41:38.987+00:00",
"status": 400,
"error": "Bad Request",
"trace": "org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public java.lang.String com.example.myblog.controller.UserController.login(com.example.myblog.dto.LoginRequestDto,javax.servlet.http.HttpServletResponse)\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:163)\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:133)\\n\\tat org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)\\n\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)\\n\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)\\n\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\\n\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)\\n\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)\\n\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\\n\\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:696)\\n\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:779)\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\n\\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\n\\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\n\\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\n\\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\\n\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)\\n\\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177)\\n\\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)\\n\\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\\n\\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)\\n\\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\\n\\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)\\n\\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)\\n\\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)\\n\\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\\n\\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891)\\n\\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784)\\n\\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\\n\\tat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\\n\\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\\n\\tat java.base/java.lang.Thread.run(Thread.java:833)\\n",
"message": "Required request body is missing: public java.lang.String com.example.myblog.controller.UserController.login(com.example.myblog.dto.LoginRequestDto,javax.servlet.http.HttpServletResponse)",
"path": "/api/user/login"
Response file saved.// 파일을 열거나 저장할때 프로그램 오류발생 -> 오타로 인한것!
→ 오타가 있어 수정하니 415에러..!!
→ 한글로 입력해서 안되는 것이였다..!! 숫자도 안된다…
→ 영어만 적어서 넣었더니 완성!!
전체적으로 list를 빼고 다시 만들고 있습니다.
어제 기술매니저님이 list를 사용하지 않고 하는 방식도 있다고 알려주셔서 혼자 찾아보다가 시도하게 되었고…
게시글 작성에서 계속 실패해서 이것저것 조합하다 보니
되는 걸 찾았습니다.
saveAllAndFlush // 안됨
saveAndFlush -> 되긴하는데 왜 되는지 한번 찾아보기!!
userName 최소 4자 이상, 10자 이하이며 알파벳 소문자(a~z), 숫자(0~9)
password 최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z, A~Z), 숫자(0~9)
username username조건식에 추가로 넣어줘야함
*if* (username.length()<4 || username.length() >10){ }
*if* (username.matches()){ }
*if* (password.length()<8 || password.length() >15){ }
*if* (password.matches()){ }
matches 함수
boolean matches(String regex)
주어진 정규 표현식과 일치하는지 여부를 확인하는 함수 이다.
정규 표현식을 사용하지 않아도 가능하지만 "정확히" 일치해야한다.
알파벳 대소문자(a~z, A~Z), 숫자(0~9)
이제 안에 무엇을 넣을지 찾아보기
throw new Exception(); // Exception을 강제로 발생시킨다. 예외 처리
RuntimeException
if (username.length()<4 || username.length() >10){
throw new RuntimeException("아이디를 조건에 맞게 다시 입력해주세요.(4~10)");
}
if (!username.matches("^[a-z0-9]$")) {
throw new RuntimeException("아이디를 조건에 맞게 다시 입력해주세요. (소문자, 숫자)");
}
String password = signupRequestDto.getPassword();
if (password.length()<8 || password.length() >15){
throw new RuntimeException("비밀번호를 조건에 맞게 다시 입력해주세요. (8~15)");
}
if (!password.matches("^[a-zA-Z0-9]$")){
throw new RuntimeException("비밀번호를 조건에 맞게 다시 입력해주세요. (소문자, 대문자, 숫자)");
}
username을 userName으로 전체적으로 수정했는데, 이에 대한 에러가 떠서 다시 원래대로 고쳤더니 다시 작동!
// 8080포트 조회
lsof -i tcp:8080
// 8080포트 강제 종료
kill $(lsof -t -i:8080)
이제 토큰만 제대로 받아오면 과제가 끝이 나는데 왜 받아오질 못하니..
토큰을 못 받아와서 안 나옴
결론… 몇 시간째 고민하고 팀원들과 함께 고민했던 문제는… 갑자기 돌아가서..??? 해결되었습니다… 포스트맨의 오류…였던것이죠…..
디비에 넣다가 난 오류not-null propert
notnull→ UserName 에서
Long 은 null이 입력될 수 없는데, 들어가는 곳이 없기 때문에
this.userId =userId
**DataIntegrityViolationException: not-null property references a null or transient value
DB 테이블의 컬럼이 'not null'로 설정되어있는데 spring entity에 null 값을 넣으려고 하기 때문에 발생하는 에러! 혹시 entity에 null 값이 들어가지는 않는지 확인!**
오늘도 정신없이 하루가 지나갔습니다...흑흑 ㅠㅠㅠ 과제를 빨리 끝내고 싶은데 이제 수정하기와 삭제하기가 남았습니다... 조건을 제가 제대로 못넣었을수도 있고, 아니면 list에서 dto로 바꾸는 과정에서 에러가 난거일 수도 있어서 여러방면으로 고민하고 넣다가 시도하다 자려고 합니다~ 어쩐지 TIL이 에러노트 장이 된 기분인데... 이건 따로 정리해서 에러노트에 넣을 생각입니다...넣을수 있겠죠...??