목록2024/08 (12)
Just Do IT!
작년 이맘때쯤, 멋쟁이 사자처럼 동아리에서 팀 프로젝트를 진행했었다.그 때 나는 프론트엔드 팀원으로 참여했었고, 백엔드와 협업이 처음이라서 삽질을 많이 했었다.그리고 그때, jar 파일에 대해 처음 알고 postman을 써보고 등등...그런데 기간 내에 프로젝트를 완성했어야 하는 터라 야매(?)로 라이브 코딩을 하듯이 백엔드 팀원들과 소통했었다. https://daydream-sy.tistory.com/274 백엔드 서버와 연결하기 (jar 파일 공유)멋쟁이 사자처럼 팀 프로젝트를 진행하면서 처음으로 백엔드 서버와 연동해서 프로젝트를 했었다. 나중에 비슷한 프로젝트를 할 때도 여기저기 흩어진 메모장을 보면서 진행할 것 같아서 블로daydream-sy.tistory.com 이 글을 보면,내가 얼마나 백엔드..
이제 단순 CRUD가 아니라 로그인, 회원가입 기능을 배우고 있는데...spring security에 들어가니까 너무 복잡하고 강의 내용을 그대로 따라치고 있는 것 같아서 내 나름대로 정리를 해보려고 한다.기본 개념부터 정리하기로.... Spring Security란?스프링 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크즉, 인증(Authenticate)과 인가(Authorize)를 담당하는 프레임워크주로 서블릿 필터(filter)와 이들로 구성된 필터체인으로의 구성된 위임 모델을 사용한다. 간단 용어 정리인증(Authentication) : 사용자가 누구인지 확인하는 과정인가(Authorization) : 특정 부분에 접근할 수 있는 권한을 확인하는 과정접근 주..
JPA를 공부하면서, 확실히 그냥 mybatis를 사용하는 것보다 훨씬 편하다는 걸 느낀다.그렇지만 정해진 시간 내에 진도를 나가야 하니까 너무 정신 없어서...공부가 더 필요함을 느끼기도 한다(ㅋㅋㅋ)아무튼,오늘 블로그 CRUD 실습을 하면서 새로운 걸 배우게 되어서 블로그에 기록을 하려 한다.어차피 계속 테이블을 생성하면서 쓸 거 같아서... 우선!데이터를 생성하거나 수정할때 생성일과 수정일을 항상 포함시켜서 테이블을 설계한다.수업에서 배웠던 실습을 예시로 들어서 설명해보자면,글을 작성할 때 title, content, created_at, updated_at이 필요할 것이다.(id는 필수이므로 굳이 언급하지 않겠다.) 그러면 테이블에는idtitlecontentcreated_atupdated_atd..
JPA package 구조는 위의 그림과 같다.dao 역할을 repository가 하는 것이다. MyBatis package이전에 배웠던 mybatis에서는 mapper를 사용하기 때문에 따로 dao를 만들지 않고 mapper package를 생성했었다. package com.kosta.mapper;import java.util.List;import org.apache.ibatis.annotations.Mapper;import com.kosta.dto.User;@Mapperpublic interface UserMapper { void save(User user) throws Exception; void deleteById(int id) throws Exception; User findByI..
수업 실습 중에, 이미지를 화면에 뿌려주고 싶었다.file_tbl에 따로 fileList를 저장해두었고 해당 글에 포함된 이미지 파일들이 나오게 하고 싶은 것이었다. 우선 관련 내용을 설명해보자면 다음과 같다.(참고로 thymeleaf를 사용하여 웹 페이지를 구현하고 있다.) 글을 작성하면 해당 글이 community_tbl에 저장된다.글에 포함된 이미지들은 따로 file_tbl에 저장된다.이미지가 저장될 때 이미지가 저장되는 경로도 함께 저장된다.stored_file_path를 통해 파일이 저장된 경로를 알 수 있다.글의 detail page에 들어가면 해당 글의 내용을 볼 수 있다.그 중, 이미지도 함께 구현하려고 한다. 여기서 필요한 게 바로 WebMvcConfigurer이다. WebM..
수업 실습 중에 파일 업로드와 다운로드 기능을 하고 있었다.다운로드 기능 구현하면서 ResponseEntity라는 새로운 객체를 배웠는데, 뭔지 잘 모르겠어서 블로그에 정리해보려고 한다. HTTP(HyperText Transport Protocol)웹서비스에서 보내는 요청 및 데이터의 형식 Client 와 Server 사이에 요청과 응답을 처리하기 위한 규약이다.HTTP 요청의 세 가지 요소Start Linemethod, URL, 그리고 version으로 이루어져 있다. 서버에서 요청을 받아들이는 첫 줄Headers요청에 대한 접속 운영체제, 브라우저, 인증 정보와 같은 부가적인 정보를 담고 있다Body요청과 관련된 json, html과 같은 구체적 내용을 포함한다.HTTP 응답Status LineHTT..
log4jdbc-log4j2란?자바 어플리케이션에서 JDBC 드라이버를 사용할 때 SQL문의 실행 로그를 자동으로 기록해주는 라이브러리이다.MyBatis를 사용하는 경우 Query Formatting을 지원하여 실제 실행되는 쿼리에 대해 문자열로 확인이 가능하다.MyBatis는 내부적으로 JDBC의 PreparedStatement를 이용해서 SQL을 처리한다.따라서 SQL에 전달되는 파라미터는 JDBC에서와 같이 '?' 로 치환되어서 처리된다.SQL 로그를 제대로 보기 위해서는 이 라이브러리를 사용해야 한다.구현체인 Slf4j에서 사용이 가능하며 SQL문을 실행할 때마다 자동으로 로그를 남겨 디버깅과 모니터링을 할 수 있다. 개발 단계에서 SQL문을 편리하게 보거나 중요한 쿼리의 수행을 보기 위해 사용한..
spring을 배우는 과정에서 db를 연동하는데 콘솔에이런식으로 연동되는 걸 볼 수 있었다.그래서 Hikari란 무엇인지, 그리고 정확하게 DB Connection이 무엇인지 정리해보려고 한다. DataSource란?데이터소스(DataSource)는 물리적인 데이터 베이스에 연결하기 위한 팩토리이다.데이터베이스에 연동하기 위해 username, password, url을 사용한다.mySQL을 사용을 예시로 들면, driver class name, url, username, password를 알아야 DB에 연동할 수 있다. DB Connection Pool 일반적인 데이터 연동과정은 웹 어플리케이션이 필요할 때마다 데이터베이스에 연결하여 작업하는 방식인데, 필요할 때마다 연동해서 작업하면 데이..
이클립스로 xml 파일을 작성하는데, 자꾸 이런식으로 빨간줄이 뜨고 에러가 났다.에러 내용을 보면Downloading external resources is disabled.이렇게 써 있는데 구글링하고 간단히 해결할 수 있었다. 이클립스 상단의 Window > Preferences를 클릭한 다음, 저 첫번째 체크박스를 클릭해 적용하면 에러는 사라진다.
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStream..