개발/JAVA 15

사업자 등록번호 검증 로직

새로울것도 없이 구글링만으로 손쉽게 찾을 수 있는 검증 로직입니다. 그럼에도 불구하고 포스팅을 하는 이유는 무분별하게 검증되지 않은 로직들이 섞여 올라와있기 때문입니다. 본인 역시 올라와있는 검증 로직을 그대로 사용했다가 낭패를 겪었습니다ㅠ 제가 참고했던 로직은 이렇습니다... 예를들어 5 0 5 8 1 2 4 0 2 0라는 사업자등록번호가 있다고 한다면, 1. 각각의 자리에 1 3 7 1 3 7 1 3 5를 곱한 합을 구합니다. 5 0 5 8 1 2 4 0 2 0 1 3 7 1 3 7 1 3 5 sum = (5*1) + (0*3) + (5*7) + (8*1) + (1*3) + (2*7) + (4*1) + (0*3) + (2*5) = 79 2. 마지막에서 두번째 숫자에 5를 곱하고 10으로 나누어 나온 ..

개발/JAVA 2023.07.20

[자바웹개발워크북] 10-1. AWS 환경구축

/* * * 자바웹개발워크북의 내용을 정리하기 위한 포스팅입니다. */ Amazon의 AWS를 이용해서 데이터베이스나 파일업로드, 실제 배포를 진행해보도록 하겠습니다. 1. 자바 웹 개발 환경만들기 AWS의 가장 대표적인 서비스중에는 EC2라는 가상머신 서비스가 있습니다. EC2는 다양한 운영체제를 가진 서비스를 제공하여 원하는 서버환경을 구성할수 있습니다. EC2 생성과 접속 AWS의 EC2를 이용하기위해서는 EC2서비스에 인스턴스를 생성해주어야합니다. 신규생성은 [인스턴스 시작] 메뉴에서 원하는 운영체제를 선택할수있습니다. 이때 EC2는 항상 비용이 발생할수있으므로 간단한 실습은 처음가입할때 사용할수있는 '프리티어'로 이용가능한 항목을 선택합니다. 애플리케이션 및 OS이미지는 'Amazon Linux..

개발/JAVA 2023.03.03

[자바웹개발워크북] 9. API서버와 JWT

/* * * 자바웹개발워크북의 내용을 정리하기 위한 포스팅입니다. */ 화면없이 Ajax와 JSON을 이용해서 데이터를 주고받는 구조에서는 HttpSession이나 쿠키를 이용하는 기존의 인증방식에 제한받게됩니다. 이를 해결하기위해서 인증받은 사용자들은 특정한 문자열(토큰)을 이용하게되는데 이때 많이 사용하는 것이 JWT(JSON Web Token)입니다. API서버 API서버는 쉽게말해서 '필요한 데이터만 제공하는 서버'를 의미합니다. API서버는 화면을 제공하는것이 아니라 필요한 데이터를 호출하고 결과를 반환 받는 방식으로 동작합니다. 따라서 API서버에서 가장 먼저 눈에 띄는 특징은 화면을 제공하지 않는다는 점입니다. 브라우저에 필요한 화면의 코드(HTML)를 서버에서 만들어 전송하는 방식을 '서버..

개발/JAVA 2023.02.16

[자바웹개발워크북] 8-1. 소셜 로그인

/* * * 자바웹개발워크북의 내용을 정리하기 위한 포스팅입니다. */ 이번엔 흔히 소셜로그인이라고 불리는 외부 서비스로 사용자 연동을 처리해보겠습니다. 대부분의 소셜로그인은 OAuth2라는 방식을 이용해서 데이터를 주고 받아 사용자의 정보를 전달하는 방식입니다. 국내에서 많이 사용하는 카카오서비스를 이용해서 처리해 보겠습니다. 카카오 로그인 설정 카카오 로그인을 이용하기 위해서는 우선 'kakao developers(https://developers.kakao.com/)'에서 애플리케이션을 등록해야 합니다. 'kakao developers'상단에 [내 애플리케이션]메뉴를 이용해서 새로운 애플리케이션을 추가합니다. 애플리케이션이 추가되면 연동에 필요한 여러종류의 키가 생성되는데 이 중 REST API키는..

개발/JAVA 2023.02.15

[자바웹개발워크북] 8. 스프링시큐리티

/* * * 자바웹개발워크북의 내용을 정리하기 위한 포스팅입니다. */ 1. 스프링 시큐리티 적용하기 사용자의 로그링과 세션트래킹은 웹애플리케이션에서 필수적인 기능입니다. 과거에는 HttpSession과 Cookie를 이용해서 처리했지만 스프링에선 스프링시큐리티와 약간의 설정을 통해 구현할 수 있습니다. 스프링 시큐리티를 이용하면 개발자는 약간의 코드와 설정만으로 로그인 처리와 자동 로그인, 로그인 후에 페이지 이동 등을 처리할 수 있기때문에 개발의 생상성을 높일수 있습니다. HttpSession이나 Cookie등에 대해서도 자동으로 처리하는 부분이 많기때문에 직접 이들을 다루는 일 또한 줄일수 있습니다. 스프링 시큐리티 기본설정 프로젝트 내 build.gradle파일의 dependencies에 스프링 ..

개발/JAVA 2023.02.13

[자바웹개발워크북] 7. 파일업로드 처리

/* * * 자바웹개발워크북의 내용을 정리하기 위한 포스팅입니다. */ 첨부파일은 크게 브라우저에서 전송하는 데이터를 파일형태로 서버에 보관하는 처리와, 이에 해당하는 데이터의 부가적인 정보를 처리하는것으로 나누어 볼 수 있습니다. 1. 파일업로드를 위한 설정 스프링부트는 application.properties파일에 약간의 설정을 추가하는것만으로 파일업로드에 대한 기본설정은 완료할 수 있습니다. ... 생략 ... spring.servlet.multipart.enabled=true spring.servlet.multipart.location=/Users/rrumang/desktop/upload spring.servlet.multipart.max-request-size=30MB spring.servlet..

개발/JAVA 2023.02.09

[자바웹개발워크북] 6. AJAX와 JSON

/* * * 자바웹개발워크북의 내용을 정리하기 위한 포스팅입니다. * AJAX, JSON, REST, swagger UI, */ 1. 용어정리 / Swagger UI 준비 / 댓글엔티티 처리 AJAX(Asynchronous JavaScript And XML)방식은 브라우저에서 서버를 호출하지만 모든 작업이 브라우저 내부에서 이루어지기 때문에 현재 브라우저의 브라우저 화면의 변화없이 서버와 통신할 수 있습니다. 대표적인 예로 '자동완성'이나 '지도서비스'등이 있습니다. Ajax가 적용되면서 자바그크립트 기술의 수요가 늘었고, 최근에는 프론트엔드중심의 개발방식이 자리 잡게됐습니다. Ajax의 약자처럼 자바스크립트를 이용해서 XML을 주고받는 방식을 이용했습니다만, 최근에는 JSON(JavaScript Obj..

개발/JAVA 2023.02.03

[자바웹개발워크북] 5. 스프링에서 스프링부트로

/* * * 자바웹개발워크북의 내용을 정리하기 위한 포스팅입니다. * 스프링부트, Thymleaf, Spring Data JPA */ 1. 스프링부트와 환경설정 스프링부트는 스프링에서 파생된 여러 서브 프로젝트에서 시작해서 이제는 완전한 메인 프로젝트가 되어버린 특이한 케이스입니다. 스프링부트를 엄밀하게 말하면 '스프링 프레임워크 개발도구'라고 봐야할 것입니다. 스프링부트는 엔터프라이즈급 애플리케이션을 개발하기 위해서 필요한 기능들을 제공하는 개발도구입니다. 스프링부트의 중요한 특징으로 Auto Configuration(자동설정)을 내세울수 있습니다. 예를들어 스프링부트는 데이터베이스와 관련된 모듈을 추가하면 자동으로 데이터베이스 관련 설정을 찾아서 실행합니다. 또다른 특징으로는 '내장 톰캣'과 단독 실..

개발/JAVA 2023.01.26

[자바웹개발워크북] 스프링 MVC 구현 - 페이지네이션, 검색/필터링

/* * * 스프링 프레임워크와 스프링MVC를 결합해서 이전에 웹MVC로 개발했던 Todo예제를 개발하며 전체적인 구조를 이해합니다. */ 1. 페이징 처리 더미 데이터 추가하기 insert into tbl_todo (title, dueDate, writer) (select title, dueDate, writer from tbl_todo); 흔히 재귀복사라고 하는 방식으로 기존의 tbl_todo테이블의 내용을 다시 insert하는 방식입니다. 약 1000개 정도의 더미를 만들겠습니다. 페이지 처리를 위한 DTO 페이지 처리는 현재 페이지의 번호(page), 한 페이지당 보여주는 데이터의 수(size)가 기본적으로 필요합니다. 2개의 숫자를 매번 전달할 수도 있겠지만 확장성을 고려해서 별도의 DTO로 만..

개발/JAVA 2023.01.26

[자바웹개발워크북] 스프링 MVC 구현 - 환경설정, CRUD

/* * * 스프링 프레임워크와 스프링MVC를 결합해서 이전에 웹MVC로 개발했던 Todo예제를 개발하며 전체적인 구조를 이해합니다. */ 1. 프로젝트의 구현목표와 준비 ■ 검색과 필터링을 적용할 수 있는 화면을 구성하고 MyBatis의 동적쿼리를 이용해서 상황에 맞는 Todo를 검색합니다. ■ 새로운 Todo를 등록할때 문자열, boolean, LoacalDate를 자동으로 처리하도록 합니다. ■ 목록에서 조회화면으로 이동할 때 모든 검색, 필터링, 페이징조건을 유지하도록 구성합니다. ■ 조회화면에서는 모든조건을 유지한채로 수정/삭제 화면으로 이동하도록 구성합니다. ■ 삭제시에는 다시 목록화면으로 이동합니다. ■ 수정시에는 다시 조회화면으로 이동하지만 검색, 필터링, 페이징조건은 초기화합니다. ■ 프..

개발/JAVA 2023.01.17