Java 30

컴퓨터의 소수(Decimal) 처리

Velog에서도 포스팅 중입니다:) 컴퓨터의 소수(Decimal) 처리 double형의 a(1.1)와 b(0.1)를 더하면 1.2가 나오지 않는 상황을 마주하게 된다.먼저 컴퓨터의 소수 처리를 알아보자.컴퓨터는 모든 수를 이진법으로 처리하는데, 소수(Decimal)는 어떻게 처리할까??정수 velog.io 문제 상황 public class Decimal { public static void main(String[] args) { double a = 1.1; double b = 0.1; System.out.println(a+b==1.2); // false } } double형의 a(1.1)와 b(0.1)를 더하면 1.2가 나오지 않는 상황을 마주하게 된다. 먼저 컴퓨터의 소수 처리를 알아보자. 컴퓨터의 소..

Computer Science 2023.04.02

Spring boot를 이용한, Session VS JWT

Velog에서도 포스팅 중입니다:) Session VS JWT Todoary 프로젝트에서는 로그인 및 상태유지를 위해 Spring Security + JWT를 사용했다.그런데 막상 우리가 왜 Session + Cookie를 사용하지 않고, JWT를 사용했는가에 대한 의문이 생겼다. !! DB를 session저장소 velog.io Todoary 프로젝트에서는 로그인 및 상태유지를 위해 Spring Security + JWT를 사용했다. 그런데 막상 우리가 왜 Session + Cookie를 사용하지 않고, JWT를 사용했는가에 대한 의문이 생겼다. Session VS JWT 우리가 Session 대신 JWT를 이용한 이유는 서버에서 Session에 대한 정보를 통제할 필요가 없다. 다중 서버를 운영할 시에..

Spring/Spring Boot 2023.04.02

Spring Security + JWT로 구글 로그인 구현하기

Velog에서도 포스팅 중입니다:) Springboot 구글 OAuth2 로그인 + JWT JWT velog.io 이번에 앱 런칭(Todoary)을 준비하며 보안을 위해 Spring Security를 사용해 보았다. 개발은 Rest API 서버 개발이다. 요구사항은 일반 로그인 -> 자동 로그인 선택 가능 소셜 로그인 (구글 , 애플) -> 자동 로그인 매 요청마다 JWT (Access Token, Refresh Token) 를 이용한 인증 JWT는 DB에 저장되는 유저의 id를 이용한다. Access Token은 2시간, Refresh Token은 90일의 생명주기를 같는다. Refresh Token은 DB에 저장한다. 이다. Spring Security란? Spring의 하위 프레임워크로, Sprin..

Servlet, JSTL

Velog에도 포스팅 중입니다:) Servlet / JSP ) 15. JSTL Servlet --HTML코드 출력 문제--> JSP --스파게티 코드 문제--> JSP MVC -> Spring MVC -> SpringBootlist.jsp를 JSP MVC model2 방식으로 바꾸었는데, 여전히 코드 블록을 통해 for문으로 흐름을 제어해야했다. velog.io JSTL (Java Standard Tag Library) list.jsp를 JSP MVC model2 방식으로 바꾸었는데, 여전히 코드 블록을 통해 for문으로 흐름을 제어해야했다. 이를 해결하기 위해 JSTL (Java Standard Tag Library) 을 사용해보자. JSP 페이지 내에서 자바 코드를 바로 사용하지 않고 로직을 내장하는..

Java/Servlet 2023.04.02

Spring Security의 Architecture

모두 Spring Security 공식 문서를 참고해 정리했습니다. Architecture Spring Security는 filter와 annotation을 사용해서 애플리케이션 보안을 손 쉽게 도와줍니다. 애플리케이션의 보안은 크게 두 개의 독립적인 문제로 요약됩니다. Authentication : who are you?, 누구인지? Authorization : what are you allowed to do?, 어느 권한을 가졌는지? Spring Security는 이 둘을 분리해서 각자의 전략과 확장을 제공합니다. 먼저, Authentication과 Authorization을 분리해서 정리하겠습니다. 인증과 인가 Authentication Authentication의 가장 중요한 전략으로는 inter..

Servlet, JSP로 게시판 구현

Velog에 작성했던 포스트를 옮깁니다:) Servlet / JSP ) 14. JSP로 게시판 구현 JSP로 게시판 구현 velog.io JSP로 게시판 구현 ) 코드 블럭을 사용에서 게시글 리스트를 구현해보았다. 이런 방식을 이용해서 실제 데이터를 집어 넣어보겠다. JDBC와 연동해 게시판 구현 list.jsp ~~~ ~~~ list.jsp 상단에 JDBC를 연동해주고 WEB-INF/lib디렉토리에 mysql-connector-java-8.0.xx.jar파일을 넣어준다. jsp파일은 Jasper가 Servlet으로 만들어주기에 프로젝트 내에 첨부된 라이브러리는 참조하지 못 하기에 WEB-INF/lib에 추가해준다. 결과는 상세 페이지 구현 list.jsp에서 글 제목을 클릭하면 상세 페이지로 연결되게끔..

Java/Servlet 2023.04.01

Servlet, JSP에 MVC를

Velog에 작성했던 포스트를 옮깁니다:) Servlet / JSP ) 13. JSP MVC JSP MVC velog.io JSP MVC MVC란 M : model / 출력 데이터 V : view / 출력 담당 (HTML 코드) C : controller / 입력 담당 (자바 코드) 뒤의 설명을 들으면 감이 올 것이다. JSP를 이용해 웹 프로그래밍을 할 때 발생했던 스파게티 코드 문제를 해결하기 위해 등장한 JSP MVC는 크게 JSP MVC model1 , JSP MVC model2 로 나눌 수 있다. 먼저 JSP model1, JSP MVC model1 JSP MVC model1 의 핵심은 "입력 코드와 출력 코드를 구분해서 모아놓자" num.jsp의 경우에는 입력 코드 출력 코드 구분 없이 코드가..

Java/Servlet 2023.04.01

Servlet, JSP를 이용한 웹 프로그래밍 (스파게티 코드 문제)

Velog에 작성했던 포스트를 옮겼습니다:) Servlet / JSP ) 12. JSP를 이용한 웹 프로그래밍 (스파게티 코드 문제) Servlet --HTML코드 출력 문제--> JSP --스파게티 코드 문제--> JSP MVC -> Spring MVC -> SpringBootJSP 파일 내에 코드 블럭을 통해 코드를 추가할 수 있다고 했다. 기본적인 페이지를 구현해보자.for문hello.jsp결과 velog.io JSP를 이용한 웹 프로그래밍 JSP 파일 내에 코드 블럭을 통해 코드를 추가할 수 있다고 했다. 기본적인 페이지를 구현해보자. for문 hello.jsp Hello JSP~~ 결과는 Hello JSP~~ Hello JSP~~ Hello JSP~~ Hello JSP~~ Hello JSP~~ ..

Java/Servlet 2023.04.01

Servlet, JSP with Japser

Velog에 작성했던 포스트를 옮겼습니다:) Servlet / JSP ) 11. JSP with Japser Servlet --HTML코드 출력 문제--> JSP --스파게티 코드 문제--> JSP MVC -> Spring MVC -> SpringBoot\[Servlet / JSP ) 9. 동적 페이지의 필요성] 을 보면 동적 페이지 구현을 위해 java파일을 통해 html코 velog.io JSP with Jasper [Servlet / JSP ) 9. 동적 페이지의 필요성] 을 보면 동적 페이지 구현을 위해 java파일을 통해 html코드를 출력했다. 하지만 html 코드가 길어지면 관리가 어렵고 실수가 생기기 마련이다. 따라서 문제점인 [HTML코드 출력 문제] 를 해결하기 위해 JSP, Japse..

Java/Servlet 2023.04.01

Servlet, 하나의 프로그램은 하나의 Servlet으로

Velog에 작성했던 포스트를 옮겼습니다:) Servlet / JSP ) 10. 하나의 프로그램은 하나의 Servlet으로 그동안 Get요청을 처리하는 Servlet, Post요청을 처리하는 Servlet을 따로 만들어 로직을 처리했다.하지만 하나의 프로그램이 나뉘어 관리되는 경우, 관리가 어려워지게 된다.따라서 하나의 프로그램 velog.io 하나의 프로그램은 하나의 Servlet으로 그동안 Get요청을 처리하는 Servlet, Post요청을 처리하는 Servlet을 따로 만들어 로직을 처리했다. 하지만 하나의 프로그램이 나뉘어 관리되는 경우, 관리가 어려워지게 된다. 따라서 하나의 프로그램은 하나의 Servlet으로 합치는게 좋겠다. 앞서서 만들었던 계산기는 Client > WAS > Servlet ..

Java/Servlet 2023.04.01