SpringBoot 36

[Hanaro] 67일차 / 시큐어 코딩 (입력데이터 검증), Spring Boot (네비게이션 바, 페이징)

시큐어 코딩 01 입력데이터 검증 및 표현 SQL 삽입 DB 입력 데이터에 대한 유효성 검증을 해야한다. 예시 JDBC String gubun = request.getParameter("gubun"); // 사용자 입력 값 변수를 ? 문자로 바인딩 변수 사용 String sql = "SELECT * FROM board WHERE b_gubun = ?"; Connection con = db.getConnection(); // PreparedStatement 사용 PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setString(1, gubun); ResultSet rs = pstmt.executeQuery(); Hibernate String name..

교육 (TIL)/Hanaro 2024.04.23

[Spring Boot] Repository - Service - Controller

Repository - Service - Controller Repository - Service - Controller 순으로 JPA 사용하기 Repository 인터페이스 생성 어노테이션 주입 @Repository JpaRepository 상속받기 (extends) 기본 함수 findAll findById save (update, insert) delete 사용자 생성 함수 사용자가 조합하여 생성 가능 예시 List findAllByReplyBoardIdx(Long replyBoradIdx); void deleteById(Long replyIdx); Service 클래스 생성 어노테이션 주입 @Service @RequiredArgsConstructor Repository 생성자 주입 final pri..

Spring/Spring Boot 2024.04.21

[Hanaro] 63일차 / Spring Boot (Repository - Service - Controller)

JPA (Repository - Service - Controller) Repository - Service - Controller 순으로 JPA 작성하기 Repository 인터페이스 생성 어노테이션 주입 @Repository JpaRepository 상속받기 (extends) 기본 함수 findAll findById save (update, insert) delete 사용자 생성 함수 사용자가 조합하여 생성 가능 예시 List findAllByReplyBoardIdx(Long replyBoradIdx); void deleteById(Long replyIdx); Service 클래스 생성 어노테이션 주입 @Service @RequiredArgsConstructor Repository 생성자 주입 fin..

교육 (TIL)/Hanaro 2024.04.18

[Hanaro] 62일차 / REST API(CRUD), JSP

CRUD 기능 ArrayList → JPA (MySQL) 및 Model → REST API 변환하기 이전 Model 사용 Controller @Controller @RequiredArgsConstructor public class ProductController { final ProductRepository productRepository; // 전체 상품 출력 @GetMapping("/") public String main(Model model) { List productList = productRepository.findAll(); model.addAttribute("productList", productList); return "productList"; } // 상품 추가 폼 출력 @GetMappi..

교육 (TIL)/Hanaro 2024.04.18

[Spring Boot] Scheduler

Scheduler 스케줄러 관련 어노테이션 @EnableAsync 비동기적으로 처리하도록 제공하는 어노테이션 각기 다른 스레드에서 실행된다. @Async 해당 메소드 로직이 시작되는 시간을 기준으로 milli sec 간격으로 실행 이전 작업이 완료될 때까지 다음 작업이 진행되지 않음 @Scheduled(fixedRate = n) 스케줄 옵션을 설정하는 어노테이션 해당 어노테이션을 사용하면 일정한 시간 간격이나 특정 시간에 코드가 실행되도록 설정할 수 있다. n에는 초를 설정하며, 값이 1000이면 1초이다. 속성 fixedRate 작업 수행시간과 상관없이 일정 주기마다 메소드 호출 fixedDelay 작업을 마친 후부터 주기 타이머가 돌아 메소드 호출 initialDelay 스케줄러에서 메소드가 등록되자..

Spring/Spring Boot 2024.04.13

[Spring Boot] TDD

테스트 주도 개발 (Test Driven Development, TDD) 테스트 관련 어노테이션 및 클래스 @WebMvcTest @Controller, @RestController가 설정된 컨트롤 클래스를 테스트한다. @Service, @Repository에는 사용할 수 없다. MockMvc 웹 API를 테스트할 때 가상의 HTTP 요청을 만들어주는 클래스이다. @Disabled 테스트 메소드를 비활성화 시키는 어노테이션 @BeforeAll 테스트 클래스 기준으로 테스트 메소드들이 실행되기 전에 한번만 실행 @AfterAll 테스트 클래스 기준으로 테스트 메소드들이 실행된 후에 한번만 실행 예로 리소스 정리 같은 코드 작성 @BeforeEach 각 테스트 메소드가 실행되기 전에 매번 실행 @AfterEa..

Spring/Spring Boot 2024.04.13

[Hanaro] 61일차 / Spring Boot (Test, Scheduler)

테스트 주도 개발 (Test Driven Development, TDD) 테스트 관련 어노테이션 및 클래스 @WebMvcTest @Controller, @RestController가 설정된 컨트롤 클래스를 테스트한다. @Service, @Repository에는 사용할 수 없다. MockMvc 웹 API를 테스트할 때 가상의 HTTP 요청을 만들어주는 클래스이다. @Disabled 테스트 메소드를 비활성화 시키는 어노테이션 @BeforeAll 테스트 클래스 기준으로 테스트 메소드들이 실행되기 전에 한번만 실행 @AfterAll 테스트 클래스 기준으로 테스트 메소드들이 실행된 후에 한번만 실행 예로 리소스 정리 같은 코드 작성 @BeforeEach 각 테스트 메소드가 실행되기 전에 매번 실행 @AfterEa..

교육 (TIL)/Hanaro 2024.04.13

[Hanaro] 60일차 / Spring Boot (JPA, HttpSession, Logging)

JPA 데이터 저장소 ArrayList→ MySQL 변환 실습 Model 사용 프로젝트 변환 build.gradle- dependencies 추가 Spring Data JPA, Lombok, MySQL, H2, Spring Web, Spring Web Services, Thymeleaf application.properties 추가 # thymeleaf spring.thymeleaf.cache=false # jpa spring.jpa.hibernate.ddl-auto=update spring.jpa.generate-ddl=false spring.jpa.show-sql=true spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect # prett..

교육 (TIL)/Hanaro 2024.04.13

[Hanaro] 58일차 / Spring Boot (Thymeleaf Layout), JSP

Thymeleaf Layout 타임리프로 레이아웃 설정하기 application.properties 추가 spring.thymeleaf.cache=false spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html build.gradle 추가 implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect' template 폴더에 layout.html, first.html 생성 layout.html first.html 화면 templates 폴더 안의 fragments 폴더 생성 head.html 생성 head.html 타이틀 header.html 생성 헤더입니다. foote..

교육 (TIL)/Hanaro 2024.04.10