728x90
반응형
SMALL

23.02.15

  • 38일 해야할 일
    • [x] 자바 이론 공부 (클래스변수 인스턴스변수들을차례)
    • [x] 과제 회원가입, 로그인 까지 구현하기
    • [x] spring 강의 듣기 완료!

오늘의 에러노트~~

전체조회에서

Method Not Allowed 405

get 방식으로 되어있어야하는데, put으로 들어가있다는 오류!

1개 조회에서

404,

"Not Found",
    "message": "No message available",

request method 'put' not supported

포스트맨에서 get을 넣어야 했는데… put을 넣어버렸다..!

그리고 코드를 변경하다보니 1개 조회에서 충돌이 있어서 더 안되었던거 같습니다!

전체 조회만 안되서 전체적으로 받아올 수 있게 ()공란으로 비워두고 받아왔습니다!

댓글 기능 구현 중….

o.s.b.d.LoggingFailureAnalysisReporter

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

추가를 안하면 댓글에서 오류..

추가하면 게시글에서 오류…

뭘까..??

ReplyService 를 인터페이스로 만들고. ReplyServiceImpl를 만들어 인터페이스를 연결하여 빈 생성을 넣어줬습니다.!

@Log 에 전세계적으로 보안 오류가 발생해서 현재는 사용하지 않고, @Log4j2를 사용합니다!

728x90
반응형
LIST

'일상 > TIL' 카테고리의 다른 글

40일차  (0) 2023.02.18
39일차  (0) 2023.02.16
37일차  (0) 2023.02.14
36일차  (0) 2023.02.13
35일차  (0) 2023.02.12
728x90
반응형
SMALL

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)

이제 안에 무엇을 넣을지 찾아보기

  1. throw new Exception(); // Exception을 강제로 발생시킨다. 예외 처리
  2. 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이 에러노트 장이 된 기분인데... 이건 따로 정리해서 에러노트에 넣을 생각입니다...넣을수 있겠죠...?? 

728x90
반응형
LIST

'일상 > TIL' 카테고리의 다른 글

39일차  (0) 2023.02.16
38일차  (0) 2023.02.15
36일차  (0) 2023.02.13
35일차  (0) 2023.02.12
34일차  (0) 2023.02.11
728x90
반응형
SMALL

23.02.13

  • 36일 해야할 일
    • [x] 자바 이론 공부
    • [x] 과제 회원가입, 로그인 까지 구현하기
    • [x] spring 강의 듣기 1개 완료

과제 중 오류!

기존에 만들었던 username과 회원가입, 로그인 기능에 필요한 username에 필요한

오늘의 에러노트

*private* String password;

단순오타….!!!

build.gradle에 넣었는지 매번 확인하고 있는… 작은 습관…ㅎㅎㅎ 좋은거죠..?

implementation group: 'org.json', name: 'json', version: '20220924'
compileOnly group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.2'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.2'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.2'

맥을 쓰면서 마우스 클릭이 왜 안될까 찾아보았다… 매직마우스를 사라는 것인가…!!! 아니면 맥과 인텔리제이가 한글을 싫어하는 것인가….?? 알아보니… 게더가 너무 무거워서 램이 과부화에 걸려서 그렇다고 하네요… 아니..!!!!!!! 게더 너무해.. 개선은 언제쯤.. 항상 느끼지만.. 게더가 왜그러시나여..

CapLock키를 누르면 다시 눌린다…괜히 다시 껐다 켰다 반복한거 같아요..

createBlog에서 오류가!! 서비스에서 고쳐야하는데 아직 거기까지 못갔도다..!!

// 게시글 작성하기
    @PostMapping("/api/blog")
    public BlogResponseDto createBlog(@RequestBody BlogRequestDto requestDto,  HttpServletRequest request) {
        return blogService.createBlog(requestDto);
    }

진짜.. 머리가 아픕니다.. 왜 안될까..

맞게 썼는데 ㅠㅠ 어디서 빼먹은걸까

더 화가 나는건 에러 메세지도 안뜬다는거예여 ㅠㅠㅠㅠ

흑흑

오늘 간병도 하라고해서 군말 없이 했더니 갑자기 내일도하고 목요일까지 하라는말에 진짜 다 해주니까 이제 이렇게 하는건 너무하네요..

놀고 있는 가족들이 넘치는게 여자라는 이유로 간병을 제가해야한다는게 너무 싫어요

@Transactional(readOnly = true)
    public List<BlogResponseDto> createBlog(BlogRequestDto requestDto, HttpServletRequest request) {
        // Request에서 Token 가져오기
        String token = jwtUtil.resolveToken(request);
        Claims claims;
// 게시글 생성하기 서버
    @PostMapping("/api/blog")
    public List<BlogResponseDto> createBlog(@RequestBody BlogRequestDto requestDto, HttpServletRequest request) {
        return blogService.createBlog(requestDto, request);        //변수명사용하기 + 필드명 requestDto.getContents() -> 유저네임이 제목아름으로 들어갈 수 있기 때문에 대부분 통으로 보내준다.  // 카멜 케이스 단어랑 단어를 이어줄때, 뒤에오는 글자는 대문자       //왜 빨간줄이 뜨는거니..?
    }
// 컨트롤러의 리턴값 서비스의 리턴값과 같아야 한다. -> 서비스에서 리턴값이 list였기 때문에 컨트롤러 타입도 같이 만들어야한다.

레스트 컨트롤러와 컨트롤러의 차이

델리데이션 4글자 이상, 조건 걸기

728x90
반응형
LIST

'일상 > TIL' 카테고리의 다른 글

38일차  (0) 2023.02.15
37일차  (0) 2023.02.14
35일차  (0) 2023.02.12
34일차  (0) 2023.02.11
33일차  (0) 2023.02.10

+ Recent posts