전체 글 (86) 썸네일형 리스트형 [Spring Boot] 예외발생시/ REST API 서버에서의 예외처리 데이터만 보내는 REST API 에서는 타임리프의 error.html이 먹히지않음 REST API 서버에서의 예외처리 1. try catch try{여기서 에러 나면}catch(Exception e){여깄는거 실행시켜주세요 } 즉 에러날수있는것들을 try안에 때려박아주면 됨 Exception ee 로 에러이유를 출력해줄수도 있음but!Exception e는 개발때만 유용하지 서버배포할때는 logging라이브러리를 사용함 String detail() { try { throw new Exception("에러입니다"); //임의로 에러발생시키는 문법 } catch(Exception e){ System.out.println(e.getMessage()); /.. [Spring Boot] 예외발생시/ 타임리프로 에러페이지만들기(짱쉬움;) 사용자들의 예측할수없는 행동들로 인해 예외발생시 일어날수있는 오류들을 방지해서예외처리를 꼭 해줘야 개발자인생 길게 끌고갈수있음 그치만 모~든 예외발생을 다 예측할수없기때문에 에러페이지를 따로 만들어고 띄워줄수도 있음 타임리프를 사용중이라면templates 안에 error.html만들고 저장하면그냥 그게 에러페이지로 인식돼서 에러발생하면 그 페이지 보여줌; 너무 어이없게 쉽다; 타임리프 짱좋다; 물론 에러페이지 안에 타임리프의 에러변수들을 써서 에러이유나 그런걸 보여줄수도 있음이런거로 에러페이지 꾸미면 됨 detail 뒤에 글자를 넣어봄 그랬더니 알아서 이렇게 에러페이지 띄워줌 주의 REST API 서버에서는 자동적으로 작동안함 [Spring Boot] 상품상세페이지2 타임리프로 링크만들기 유저가/detail/1로 접속하면 1번 상품/detail/2로 접속하면 2번 상품 보내주고싶을때 어떻게 보내주는지 @PathVariable 타입 URL파라미터명이렇게하면 유저가 입력한 URL파라미터 자리의 값을 가져올수있음그 값을 이용해서 findbyid로 맞는 데이터를 가져오게하고model.addAttribute로 data라는 이름으로 html에 보내줌 @GetMapping("/detail/{id}")String detail(@PathVariable("id") Long id, Model model){ Optional reslut = itemRepository.findById(id); if (reslut.isPresent()) { System.out.pri.. [Spring Boot] 상품상세페이지1 상세페이지 만들어두고제목누르면 상세페이지로 이동 /detail/1 /detail/2 그럼 API 여러개 만들어야함? ㄴㄴ URL 파라미터 문법으로 가능 @GetMapping("/detail/{작명}"){} 참고로 /detail/{작명}/{작명2}/{작명3} 이런식으로 URL 파라미터 여러개 사용 가능 @GetMapping("/detail/{작명}")String detail(){ return "detail.html"; }이렇게하면 /detail/1 /detail/2 보여주게 됨 그럼 이제 view쪽으로 각 id에 맞는 데이터를 뿌려주려면? itemRepository.findById(서버에서 받아온 값);Optional reslut = itemRepository.fi.. [Spring Boot] 폼에서 데이터 받아서 DB에 저장(간단하게)/@ModelAttribute/타임리프 html 반복문 원래 숙제였는데숙제하려고 찾아보니 일단 form데이터를 넣을 엔티티를 따로 만들고 레포지토리도 따로만들고 그걸 컨트롤러도 따로 만들고 이런식으로 어찌저찌해서 넣는거였다. 아무래도 저게 정석이긴 한데근데 코딩애플에서는 그걸 원하는게 아닌 간단한걸 원하는거같아서 내가 만든건 기존item엔티티에 파라미터를 받는 생성자를 만들어주고그걸 기존 itemController에서 생성한다음 거기에 파라미터 담아주고기존 ItemRepository.save(생성자)해서 보내주었다. 이렇게 하니 잘됐다. 근데 알고보니 코딩애플에서는 이것보다 더더더더더더 간단한 기초방법을 알려주었다...당황... 다른편에 나오는건가? 아님 이런식으로 진짜 겉만 알려주고 정석같은건 다른강의를 봐야하는걸까..?어쩌면 내가 어렵게 생각했을수도 .. No default constructor for entity 해결방법 org.hibernate.InstantiationException: No default constructor for entity 'cohttp://m.apple.shop.Item'이게 뭔소리야...? 라고 했는데 검색해보니까 너무나 간단한.....그리고 너무나 당연한..... 폼데이터를 DB에 저장하려고 파라미터가 있는 생성자를 생성했는데그럼 당연히 기본생성자를 직접적으로 만들어줬어야했는데 그걸 안해서 오류가 나는거였다. lombok 어노테이션인 @NoArgsConsturctor이걸 상단에 설정해주면 뜨지않는다 [Spring Boot] 상품추가기능 만들기 MAP 1. 상품 이름, 가격 작성할수있는 페이지를 폼으로 만들기write.html 전송 2. write.html로 접속할수있는 API 만들어주기. /writeItemComtroller@GetMapping("/write")String write(){ return "write.html";} 3.전송버튼을 누르면 서버로 데이터 보내기.사용자가 보낸 정보를 서버로 받고싶으면?POST method요청으로 날리면 서버로 데이터 전송 가능. form태그에 action "/URL" method = "POST"붙이면input에 입력한 값들이 name속성을 key로 잘 날라감 4./URL을 통해 데이터를 받을 서버API 만들기 tip! URL작명시 명사가 좋음 (관습) 파라미터로 i.. [Spring Boot] 개발자들이 private를 쓰는이유 getter setter로 쓰면 안전하니까. 예를들어 title에 255자만 넣을수 있다치자.근데 실수로 너무 긴 문자를 넣어버렸을때그럴때 오류가 발생하거나 이상현상이 발생하는걸 방지하기위해서private로 묶어준다음 setter로 로직을 만들어서 걸러주면 안전하니까. private로 안쓰면 이렇게 그냥 가져다가 넣을수있음 그래서 거르지못함 var aa = new Item();a.title = "dsadsa"; private로 묶고 setter로 걸러주는 로직을 이런식으로 만들어줌 public void setTitle(String title) { if(title.length()>255){ //대충...오류를 보내준다던지...창을 띄운다던지... }else{ this.ti.. 이전 1 2 3 4 5 ··· 11 다음