HANARO 75

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

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

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

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

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

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

[Hanaro] 57일차 / Spring Boot (URI 어노테이션)

연습문제 풀이 URI 어노테이션 2가지 (경로 설정) @RequestParam URI 형식 localhost:8080/update-form?index=1 메서드 구현 // 관리자 페이지 - 회원목록 상세 출력 // localhost:8080/update-form?index=1 @GetMapping("/update-form") public String viewUpdateForm(@RequestParam int index, Model model) { model.addAttribute("index", index); Member member = memberList.get(index-1); model.addAttribute("member", member); return "update-form"; } html에서 ..

728x90