전체 글

util 폴더 안에 있는 AwsS3Utils 참고이미지 등록AwsS3Utils 클래스 안의 uploadImageToFolder 메서드를 사용uploadImageToFolder 메서드 안에서 uploadImage 메서드를 호출해서 사용// 특정 폴더에 이미지를 S3에 업로드하는 메서드 public String uploadImageToFolder(String folderName, Long id, MultipartFile file) throws IOException { String fileName = folderName + "/" + id + "/" + UUID.randomUUID() + getFileExtension(file.getOriginalFilename()); // S3..
프로젝트를 하던 도중 이미지 미리보기를 구현할 일이 있었다.file을 가져오면서 FileReader를 사용하게 되었다.document.getElementById('images').addEventListener('change', function (event) { const files = event.target.files; const imageContainer = document.getElementById('div_added_pictures'); imageContainer.innerHTML = ''; // 기존 미리보기 이미지 제거 Array.from(files).forEach(file => { const reader = new FileReader(); read..
Spring MVC와 모델모델(Model): Spring MVC에서는 Model 객체를 통해 컨트롤러에서 뷰(Thymeleaf 같은)로 데이터를 전달합니다. 즉, 컨트롤러에서 데이터를 모델에 추가하면, 해당 데이터는 뷰에서 접근할 수 있게 됩니다.@ModelAttribute: 이 어노테이션은 메서드의 매개변수로 사용될 때, Spring이 해당 타입의 객체를 자동으로 생성하고, 이를 뷰에서 사용할 수 있도록 해줍니다. 그러나, GET 요청에서는 해당 객체가 자동으로 모델에 추가되지 않습니다.GET 요청에서의 처리GET 요청: 만약 GET 요청에서 @ModelAttribute를 사용하면, Spring이 AccommodationRequestDto 객체를 생성하지만, 그것이 모델에 추가되지 않기 때문에 뷰에서는..
데이터베이스를 팀원들과 공유하는 과정에서 aws RDS를 사용하게 되었다RDS를 사용하기 위해서는 엔드포인트, 사용자이름, 사용자 비밀번호가 필요하다 spring boot 프로젝트를 생성해 application.properties에  위의 정보들을 넣어주어야 하는데github에 공유시 정보들( 엔드포인트, 사용자이름, 사용자 비밀번호)이 유출되는 문제가 있었다.이를 암호화하고 팀원들만 복호화할 수 있도록 하기 위해 Jasypt를 사용하게 되었다.  [Spring] JASYPT를 사용한 프로퍼티 암호화목적 git의 public repository와 CI/CD를 연동해 어플리케이션을 배포하는데 있어 중요한 정보가 탈취되는 것을 막기 위함 목차 JASYPT란? 사용방법 1. JASYPT란? 홈페이지에 가보면 ..
Servlet을 사용하여 MVC 패턴으로 구현하는 방법을 설명드리겠습니다. MVC 패턴에서는 서블릿(Servlet)이 컨트롤러(Controller) 역할을 하며, JSP는 뷰(View) 역할을 담당합니다. DAO(Data Access Object)는 모델(Model) 역할을 하며, 데이터베이스와의 상호작용을 처리합니다.1. DAO 인터페이스 정의public interface BookingDAO { void insertBooking(long guestId, long roomId, Date checkInDate, Date checkOutDate);}2. DAO 구현 클래스(RoomBookingDAOImpl.java)import java.sql.Connection;import java.sql.Driver..
Booking 테이블은 다음과 같다CREATE TABLE booking(id BIGINT AUTO_INCREMENT PRIMARY KEY,guest_id BIGINT NOT NULL,room_id BIGINT NOT NULL,check_in_date DATE NOT NULL,check_out_date DATE NOT NULL,booking_status INT NOT NULL,FOREIGN KEY (guest_id) REFERENCES member(id),FOREIGN KEY (room_id) REFERENCES room(id));1. 모델 (Model)모델은 데이터와 비즈니스 로직을 관리하는 부분입니다. 주로 데이터베이스와의 상호작용을 담당하는 DAO(Data Access Object) 클래스와 데이터 ..
DAO 인터페이스 (DAO)DAO 인터페이스는 데이터 소스와 상호작용하는 메서드를 선언하는 역할을 합니다. 이 인터페이스는 데이터베이스와의 상호작용을 위한 계약을 정의합니다. DAO 인터페이스는 데이터 액세스 작업을 수행할 메서드의 시그니처만 정의하며, 실제 구현 내용은 포함하지 않습니다.public interface UserDao { User getUserById(int id); void saveUser(User user); void deleteUser(int id); List getAllUsers();}DAO 구현체 (DAOImpl)DAO 구현체는 DAO 인터페이스에서 정의한 메서드를 실제로 구현합니다. 이 클래스는 데이터베이스나 다른 데이터 소스와의 실제 상호작용을 처리하는 로..
MVC 디자인 패턴: Model-View-Controller의 역할과 상호작용MVC (Model-View-Controller) 디자인 패턴은 웹 애플리케이션의 구조를 명확하게 나누어 각 부분의 책임을 분리하는 패턴입니다. 이 패턴을 통해 코드의 유지보수성, 재사용성, 확장성을 높일 수 있습니다. 각 구성 요소의 역할과 그 상호작용을 더 자세히 살펴보겠습니다.1. Model (모델)역할: 애플리케이션의 데이터와 비즈니스 로직을 처리합니다. 데이터의 상태를 표현하고, 데이터와 관련된 모든 작업을 수행합니다. 모델은 애플리케이션의 핵심 비즈니스 로직을 포함하며, 데이터베이스와의 상호작용을 처리합니다.구성:DAO (Data Access Object): 데이터베이스와의 직접적인 상호작용을 담당합니다. SQL 쿼리..
페이징 처리를 처음부터 다시 구현하려면, 전체 과정을 단계별로 설명하고 코드를 제공하겠습니다. 페이징 처리는 데이터베이스에서 대량의 데이터를 효율적으로 조회하고, 클라이언트에게 페이지별로 나누어 보여주기 위한 기술입니다. 이 과정은 데이터베이스 쿼리 작성, 서비스 계층, 컨트롤러, 그리고 프론트엔드에서의 처리를 포함합니다.1. 데이터베이스 쿼리 작성데이터베이스에서 페이징 처리를 위한 SQL 쿼리를 작성합니다. MariaDB에서는 LIMIT과 OFFSET을 사용하여 페이징을 처리합니다.예제 SQL 쿼리SELECT ri.image_path, ri.image_name, r.room_name, r.street_address, rp.rent_price, ro.room_optionFROM room rINNER JO..
fork GUI를 사용하다 상대방의 브랜치에서 특정 파일만 가져오고 싶어졌다아래의 사진에서  origin/kjw/host 브랜치의 RoomPrice.java 파일만 내 브랜치로 가져와보자일단 경로 복사콘솔 창을 열고아래의 명령어 참고해 git checkout origin/ -- path/to/file # 특정 파일 가져오기위 명령어에서 은 상대방의 브랜치 이름을, path/to/file은 가져오고자 하는 특정 파일의 경로와 파일 이름을 나타냅니다. 다음과 같이 명령어 작성path/to/file에는 위에서 복사한 경로 붙이기git checkout origin/kjw/host -- src/main/java/com/mywebapp/model/RoomPrice.java
korinj
기록이 답이다