[Java] 문자열(String) 내장 함수 정리
·
프로그래밍 언어/Java
length()문자열의 길이를 반환한다.compareTo()int compareTo(String str)str과 현재 인스턴스의 문자열의 내용을 사전순으로 비교한다.현재 인스턴스가 사전순으로 더 이전이면 음수를, 이후면 양수를, 두 문자열의 내용이 같다면 0을 반환한다. String str1 = "apple"; String str2 = "banana"; System.out.println(str1.compareTo(str2)); // -1 출력chatAt()char chatAt(int index)인스턴스 변수로 가진 char[] value에서 해당 index의 문자를 반환한다.concat()String concat(String str)(..
[Java] CharSequence란?
·
프로그래밍 언어/Java
String 내장 함수를 정리하다 CharSequence를 발견했다. 생성시 ""를 사용하는 것은 String과 같은데, CharSequence란 무엇이며 String과 어떻게 다른지 알아봤다. Interface CharSequence는 클래스가 아니라 인터페이스이다. 그리고, 이 인터페이스를 구현한 클래스로는 바로 String, StringBuffer, StringBuilder 등이 있다. 즉 문자열로 사용하는 클래스의 구현 토대인 것이다. 따라서 CharSequence는 아래의 모든 방법으로 생성 가능하며, 위의 모든 클래스를 담을 수 있다. CharSequence charSequence = "hello"; CharSequence charSequence = new StringBuffer("hello"..
[Java] 문자열(String) 클래스 정리
·
프로그래밍 언어/Java
문자열(String)1. 변경 불가능한 클래스String 클래스는 문자열을 저장하기위해 char[] value를 인스턴스 변수로 정의하고 있다.인스턴스 생성시 입력받는 문자열이 value에 저장되는데, value에 한 번 저장된 배열은 읽기만 가능하며 변경할 수 없다.2. 문자열 비교String 클래스 생성자를 이용하여 문자열을 만든 경우, new 연산자에 의해 메모리 할당이 이루어진다.따라서 항상 새로운 String인스턴스가 생성되어 서로 다른 메모리값을 가진다. 하지만, 문자열 리터럴의 경우 같은 내용의 문자열 리터럴을 재사용한다.아래 예시를 보자.String str1 = new String("apple");String str2 = new String("apple");Strin..
[Java] 스트림(Stream)
·
프로그래밍 언어/Java
Java에서의 입출력사용자가 키보드로 입력한 문자를 받아와 모니터에 보여주려면 어떻게 해야할까?만약 사용자가 특정 문서를 인쇄하기 위해 인쇄 버튼을 누른다면 이를 프린터를 어떻게 인쇄할까? 이처럼 프로그램에서 데이터를 받아오거나 데이터를 특정 장치에 보내줘야 할 때, 바로 스트림을 이용한다. 위의 경우에서는 키보드로 입력한 문자를 받아올 때 입력 스트림을, 해당 문자를 화면에 나타낼 때 출력 스트림을 이용한다.또 사용자가 인쇄를 요청한 경우에는 인쇄를 담당하는 프로그램이 해당 문서의 내용을 입력 스트림을 통해 받아오며, 출력 스트림을 통해 프린터기로 데이터를 전송한다. 스트림이란 데이터를 교환하려는 두 대상을 연결하고, 데이터를 전송할 수 있는 통로 역할을 한다.Stream의 특징..
개발 환경 setting
·
Project/MVC project
Java 기존에 설치되어 있던 java version 11을 그대로 사용한다. Tomcat https://tomcat.apache.org/tomcat-9.0-doc/index.html Apache Tomcat 9 (9.0.70) - Documentation Index This is the top-level entry point of the documentation bundle for the Apache Tomcat Servlet/JSP container. Apache Tomcat version 9.0 implements the Servlet 4.0 and JavaServer Pages 2.3 specifications from the Java Community Process, and includes ma..
[FBTB] 4. 로그인 유지 기능 구현 (UI)
·
Project/FromBookToBook
웹 전체적인 UI도 좀 더 웹페이지 같게 바꾸었다. 여전히 아직 뭔가 수상한 웹처럼 보이지만 그래도 그 전보다는 나아진 것 같다. 로그인 완료시 헤더에 로그인 중인 사용자의 이름이 뜬다. 계정을 선택해서 성공적으로 로그인 되면 다시 이전 화면으로 돌아온다. 로그인 된 경우 local storage를 살펴보면 access token과 로그인 중인 사용자의 email, name 등이 들어가있는 것을 확인할 수 있다. 아직 하나도 안 꾸몄다 ㅋ 이렇게 로그인 유지 기능 구현 끝 ~~~~
[FBTB] 4. 로그인 유지 기능 구현 (OAuth2/JWT 관련 API)
·
Project/FromBookToBook
관련 도메인 OAuth2UserInfo package com.frombooktobook.frombooktobookbackend.security.user; import java.util.Map; public abstract class OAuth2UserInfo { // 키-값 쌍의 일반 Map에서 사용자의 필수 세부 사항을 가져오는데 사용 protected Map attributes; public OAuth2UserInfo(Map attributes) { this.attributes = attributes; } public Map getAttributes() { return attributes; } public abstract String getId(); public abstract String getEm..
[FBTB] 4. 로그인 유지 기능 구현 [1]
·
Project/FromBookToBook
드디어 로그인 유지 기능 구현 ! 이 부분에서 정말 많은 시간을 보냈다. 헤매기도 많이 헤매고 조금 힘들었지만 그만큼 다 해냈을 때 성취감은 말로 이룰 수 없었다. 일단 이전 로그인 구현은 react-google-login이라는 라이브러리를 사용해서 프론트단에서 access-token을 바로 얻게되었다. 하지만 이전 포스팅에도 적어놨듯이 이게 여간 찝찝한게 아니었다 .. 구현은 되긴 하는데 (비록 이메일과 이름만 받아오는거긴 하지만) 보안상으로도 엄청난 실수를 하는 느낌. (그치만 이 라이브러리가 존재하는 이상 어떻게 어떻게 안전하게 구현할 수 있는 방법이 있을 것 같기는 하다.) 그래서 google server에서 authorization code를 받은 뒤 백엔드 서버에 보내고, 백엔드단에서 goog..
(임시) user/password springSecurity 클래스들
·
Project/FromBookToBook
auth.jwt package com.frombooktobook.frombooktobookbackend.auth.jwt; import lombok.RequiredArgsConstructor; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.util.StringUtils; import org.springframework.web.filter.OncePerRequestFilter; import javax.servlet.FilterChain; import javax.servlet.Se..
Cookie 와 Session
·
Web
이번에 프로젝트를 하면서 cookie랑 session이 무엇인지 확실히 짚고 넘어가야할 것 같아서 정리해본다. 컴공 3년 다니고 아직도 이 차이를 긴가민가 하는게 조금 쪽팔리지만서도 .. 구글링하면서 아 이랬지! 정도는 떠올라서 그나마 다행이다. ✏️ Cookie 쿠키 쿠키는 사용자의 컴퓨터에 저장되는 작은 정보 저장 파일이라고 보면 된다. 사용자의 정보를 cookie에 저장해놓았다가 필요시 쿠키를 참조하여 HTTP를 통해 서버와 통신할 때 정보로서 이용할 수 있다. - 클라이언트가 웹사이트에서 페이지를 요청한다. - 서버는 쿠키를 생성하여 쿠키에 정보를 담아 HTTP 화면을 돌려줄 때 클라이언트에게 함께 준다. - 클라이언트는 받은 쿠키를 로컬 pc에 저장한다. - 해당 서버에 다시 요청 보낼 때, 저..
[FBTB] 3. 로그인 기능 구현 (with Oauth2)
·
Project/FromBookToBook
이제 로그인 기능 구현이다. 생전 처음 들어보는 oauth2 를 사용하느라 여기저기 블로그도 많이 돌아다니고 유튜브도 많이 들락날락거렸다. ( 인증-인가에서부터 시작해서 oauth의 역할, session, cookie, jwt 기본 개념 공부도 자연스럽게 하게 되었다. ) 책에서 spring boot로 oauth2 google api를 통해 로그인을 구현하는 예제를 봐서, 이걸 토대로 열심히 코드를 짜다가 . . . 난관에 부딪혔다. 책에서는 view를 mustache로 구현하는데, 지금 나는 프로젝트에서 react라는 다른 프레임워크를 통해 view를 구현하고 있기 때문이었다. 처음에는 뭐 큰 차이가 있겠나 싶었다. 지금 내가 현재 구현한 back oauth 방식 + 뷰는 react로 짜는 법을 열심히..
[FBTB] 2. 독후감 목록 기능 구현
·
Project/FromBookToBook
목록 보여주는 기능은 그래도 좀 수월하게 짰다. 오류가 별로 안 나서 (나더라도 이해할 수 있는 오류) 오류 때문에 지체되는 시간이 적었다. UI는 역시 아주 대충 짰다 아무래도 나 미적 감각 없는 듯 대충 어떻게 어떻게 만들고싶다는 생각은 있지만 아직은 기능부터 구현하는게 먼저인 것 같아서 일단 미뤄둔다. 아직 페이지네이션도 구현 안 했고 진짜 기본적인 것만 짰다. (그래서 수월하게 짰던 듯 ㅎ) 이제 페이지네이션 구현하고, 웹사이트처럼 보이도록 header도 달고 뒤로가기도 추가하고 해야겠다. 더보기 구현 코드 Backend - PostListResponseDto package com.frombooktobook.frombooktobookbackend.controller.post; import com...