분류 전체보기 400

[Hanaro] 68일차 / 시큐어 코딩 (보안 기능), Spring Boot(Security)

시큐어 코딩02 보안기능적절한 인증 없는 중요기능 허용적절한 인증과정없이 중요정보를 열람 또는 변경하지 않도록 해야한다.클라이언트의 보안 검사를 우회하여 서버에 접근하지 못하도록 설계하고 중요한 정보가 있는 페이지는 재인증을 적용한다.검증된 라이브러리나 프레임워크(OpenSSL, ESAPI)를 사용한다.예시// 1. 로그인한 사용자를 불러온다.String userId = (String) session.getAttribute("userId");String passwd = request.getParameter("oldUserPw");// 2. 회원정보를 실제 수정하는 사용자와 로그인 사용자와 동일한지 확인한다.String requestUser = memberModel.getUserId();if (userId..

[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..

[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..

[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..

[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..

[Spring Boot] Scheduler

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

[Spring Boot] TDD

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

728x90