본문 바로가기

전체 글

(140)
삽질 - 스프링부트, Mustache 줄바꿈 표현하기 스프링 부트로 게시판을 만들 때, 본문 내용에는 줄바꿈이 들어간다. 로그를 찍어보면 입력 받을 때는 줄바꿈을 잘 반영하여 데이터를 받는다. 그런데 데이터베이스에는 한줄로 저장된다. 결국 저장하는 과정에서 줄바꿈(\n)이 무시되는 것 같다. DB에 저장되어 있는 글의 enter 값을 태그로 변환 우선 원하는 값을 가져온다. String temp = request.getParameter("contents"); temp에는 textarea로 통해 입력된 모든 값이 들어가 있다. 이때 Enter 값은 \r\n으로 저장이 되어 있기 때문에 \r\n을 로만 바꾸어.. snoopy81.tistory.com 해결방법을 찾아보니 html에서는 엔터가 \r\n으로 입력되는 이것을 태그로 바꿔주면 된다고 한다. 그러면 br..
고민과 해결 - spring boot, mustache 폼 태그에서 어떻게 put, delete 전송을 할 수 있을까? html에서는 get, post 전송만 된다고 한다. 실제로 mustache 파일에서 메소드를 put으로 설정하여, @PutMapping이 붙은 컨트롤러 메소드에게 요청을 보냈는데 에러가 났다. 찾아보니, 내가 자바스크립트를 사용하지 않고도, 수정 가능해 보이는 방법이 있었다. REST PUT, DELETE 사용하기 REST PUT, DELETE를 사용하기 위해 GET, POST와는 달리 다소 노력이 필요하다. HTML form 태그의 method 속성으로 GET, POST만을 지원하기 때문에 PUT, DELETE로 설정하면 엉뚱하게도 GET 요청으로 전송된다. Ajax.. devday.tistory.com 먼저 위 방법을 사용하기 위해 application.properties에 항목을 추가한다. spr..
OAuth 2.0 - 생활코딩 강의 정리(3) 생활코딩님의 강의를 듣고 정리하는 글입니다. 제가 임의로 다시 정리한 것이기 때문에 실제 강의와는 조금 다릅니다. API 호출. 클라이언트가 리소스 서버를 사용하기 위해서는 리소스 오너, 리소스 서버의 인증을 받은 후 API를 호출해야 한다. 당연히 서비스를 제공하는 회사마다 API를 제공하는 방법은 다르다. Refresh token. 액세스 토크은 수명이 있다. 그럼 그 수명이 끝나면 API로부터 정보를 받을 수 없다. 그래서 다시 액세스 토큰을 발급해야 하는데 다시 액세스 토큰은 번거로운 일이다. 그럴 때, 쉽게 액세스 토큰을 얻는 방법이 리프레쉬 토큰이다. 보통 액세스 토큰을 발급할 때, 리프레쉬 토큰을 같이 준다. 그리고 액세스 토큰을 사용해 리소스 서버를 사용한다. 그러다 액세스 토큰의 수명이 ..
OAuth 2.0 - 생활코딩 강의 정리(2) 생활코딩님의 강의를 듣고 정리하는 글입니다. 제가 임의로 다시 정리한 것이기 때문에 실제 강의와는 조금 다릅니다. 리소스 오너의 승인. 클라이언트를 리소스 서버에 등록하게 되면 리소스 서버는 해당 클라이언트 id, secret, redirect uri을 갖게 된다. 등록 과정을 마치면 리소스 오너가 리소스 서버에게 클라이언트의 접근을 승인한다는 것을 알려야 한다. 만약 리소스 서버가 A, B, C, D 의 기능을 갖고 있고 클라이언트가 B, C를 사용할 것이라면, 그것에 대한 인증만 받는 것이 좋다. 리소스 오너(유저, 사용자)가 {클라이언트의 기능}을 사용하기 위해 {리소스 서버의 기능}을 사용해야 한다면, 클라이언트는 리소스 오너에게 링크를 건네준다. 이 링크에는 클라이언트 id, 사용할 리소스 서버..
OAuth 2.0 - 생활코딩 강의 정리(1) 생활코딩님의 강의를 듣고 정리하는 글입니다. 제가 임의로 다시 정리한 것이기 때문에 실제 강의와는 조금 다릅니다. OAuth라는 기술은 언제 사용하는 것인가? 먼저 나의 서비스, 그것의 사용자, 그리고 구글과 같은 대형 서비스가 있다고 하자. 대형 서비스는 구글이라고 퉁치자. 나의 서비스는 사용자에게 구글 아이디와 비밀번호를 받고, 나의 서비스는 그것을 갖고 구글에 로그인하여 기능을 제공한다. 이렇게 된다면 사용자의 아이디, 비밀번호가 나의 서비스에게 그대로 전달되는 문제가 생기고, 이것은 구글에게도 문제가 된다. 이런 상황을 해결할 수 있는 기술이 OAuth이다. 나의 서비스와 구글을 연동시키는 것이다. 사용자의 요청에 의해 구글(대형 서비스)은 accessToken이라는 일종의 비밀번호 같은 것을 나..
mustache 페이지 인덱스 - 숫자 반복문(리스트)로 만듦 mustache 템플릿에서 페이지 인덱스 버튼을 구상하는 중에 반복문을 사용해서 totalPages를 이용해 인덱스 버튼을 만들 수 있지 않을까 하고 생각해봤다. 찾다보니 원하는 방법은 없지만, 억지로 만드는 방법은 있었다. 숫자를 기준으로 하는 반복문은 못찾았지만, 리스트를 기반으로 하는 반복문은 찾았다. 따라서 1부터 totalPages까지 숫자가 담긴 리스트를 mustache에게 전달해서 하나씩 반복해서 전달하도록 하면 됐다. 근데 이건 너무 억지 같긴 하다. 억지 페이징 코드 전체 페이지 수가 0부터 담긴 리스트를 만들어 전달한다. 반복문을 사용하여 인덱스 버튼을 만든다. 억지 인덱스 버튼 완성!
자바 코딩 테스트 삽질 - 마침표로 split 하기 코딩 테스트에서 마침표 . 를 갖고 split을 했더니 계속 안됐다. 온라인 에디터를 사용해서 그런 것인줄 알았는데 그게 아니라 split("\\.")으로 했어야 했다. 스택오버플로우에서 찾아보니 특수문자여서 그렇다고 한다. 심지어 \.으로 인식이 안됐다. 역슬래쉬+역슬래쉬+마침표 -> 이렇게 split해야 된다. stackoverflow.com/questions/14833008/java-string-split-with-dot Java string split with "." (dot) Why does the second line of this code throw ArrayIndexOutOfBoundsException? String filename = "D:/some folder/001.docx"; Str..
공부 소스를 공유하는 사이트 - 스프링 부트 프로젝트 만들기(3) 어느정도 CRUD를 만들었는데 페이징 처리하는게 골아프다. 우선 배운 것처럼 Paging을 위해 TotalElement, TotalPage, CurrentElement, CurrentPage를 갖는 객체를 만들었다. 이 정보들을 가지고 프론트 단에서 처리할 것들을 생각나는대로 적는다면 * 페이지 버튼 만들기 - 하단의 1페이지, 2페이지, .. 이런거 * 페이지당 해당 페이지의 게시글 정보 가져오기 한동안 페이징 처리를 고민했는데 내가 적었던 글을 다시 보니 생각이 났다. 이럴려고 적어놓는 것인데 적은 것조차도 잊었다.ㄷㄷ 페이징 처리하기 게시판이 구현된 사이트는 특정 개수대로 게시글을 나눠 페이지 별로 보여준다. jpa를 이용하면 이런 페이징 처리를 비교적 간단히 할 수 있다. 몇개씩 노출시킬 지, 어..