교육 (TIL)/Hanaro 69

[Hanaro] 71일차 ~ 78일차 / 키오스크 프로젝트 완료 (회고)

약 2주간의 키오스크 프로젝트 끝!! 생각보다 연휴가 껴있어서 시간이 많지 않았다ㅠㅅㅠ 개발하면서 공부랑 정리도 병행하면서 잘 하고싶었는데 개발하기에 급급해가지고 정리를 많이 못해서 아쉽다.. 이번에 내가 맡은 부분은 키오스크 메인 기능과 프론트!! 메인이라 확실히 한 서비스 안에 여러 기능이 들어갔어야 해서 머리 쥐어짜내면서 개발했다. 예를들어 결제 전에 주문 상세를 확인하는 기능이라면 주문 상품의 이름, 가격, 각 상품 별 개수, 총 개수, 총 가격 이렇게 조인된 테이블을 찾아서 값을 한 번에 출력하거나, 주문 완료 기능이라면 주문 시간 업데이트, 주문 상태 업데이트, 구매 금액의 1% 적립, 주문 번호와 고객 적립금 출력 이렇게 한 기능안에 여러 기능이 들어가야 해서 기능 한 개를 짤때도 생각할게 ..

교육 (TIL)/Hanaro 2024.05.11

[Hanaro] 69일차 / Spring Boot (Security), 시큐어 코딩 (시간 및 상태, 에러 처리)

시큐어 코딩03 시간 및 상태검사 시점과 사용 시점 (TOCTOU)자원을 사용하는 시점과 검사하는 시점이 다르기 때문에 존재하던 자원이 사라지는 등 자원의 상태가 변화는 경우가 발생공유자원에 여러 프로세스가 접근하여 사용할 경우 동기화 구문을 사용하여 한번에 하나의 프로세스만 접근하도록 하고, 성능에 미치는 영향을 최소화하기 위해 임계코드 주변만 동기화 구문 사용예시public void run() { // 멀티쓰레드 환경에서 synchronized를 사용하여 동시에 접근할 수 없도록 사용해야한다. synchronized(SYNC) { try { if (manageType.equals("READ")) { File f = new File("Test_367.txt");...코드생략...public s..

교육 (TIL)/Hanaro 2024.04.25

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

교육 (TIL)/Hanaro 2024.04.25

[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

[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