분류 전체보기138 Spring Security 인증/인가 스프링 생태계에서 인증과 인가라는 개념을 최대한 쉽고 유연하게 구현할 수 있도록 만들어진 framework 로그인, 회원가입을 할때 사용 로그인이 일어나고 회원가입하고 리소스를 제한하는 것은 서비스에 있어서 매우 중요한 부분이다. 로그인 없이 아무나 접속해서 익명으로 서비스를 사용하거나 로그인을 했더라도 모든 사용자가 운영자 권한이 있다면 그 서비스는 오래 유지될 수 없다. 이러한 상황을 막기 위해서 리소스를 제한하는 조치를 해야한다. 인증 (Authentication) 사용자가 누구인지 확인하는 절차이다. ex)로그인 인가 전 프로세스 ->나의 ID와 패스워드를 서버에 주고 그 응답으로 아무나 해독이 불가능한 key를 받는다. 그 key를 모든 요청에 포함해서 보낸다 ex) 커뮤니티 게시글에서 글을 보.. WEB JAVA SPRING/etc 2023. 8. 28. Spring Data JPA(Java Persistence API) #Spring Data JPA -- java persistence API 자바를 이용해서 데이터를 관리하는 기법 ->자바 ORM기술에 대한 API표준 - ORM : Object Relational Mapping -- 객체와 관계형 데이터베이스를 매핑해주는 것 객체지향과 관계형 데이터베이스간의 패러다임의 불일치를 해결 - 기존 JDBC를 이용해 직접 구현하던걸 대신 처리해주는 추상화된 계층의 구현스펙 - DB처리를 JPA계층에서 처리 - 엔티티 : DB상에서 데이터로 관리하는 대상 (하나의 클래스or인스턴스) - 과거 DAO==Repository - PagingAndSortingRepository > CrudRepository > Repository 페이징+검색처리 crud 기능이랄게 없음 장점 1. 특정.. WEB JAVA SPRING/etc 2023. 8. 28. REST API 기계와 기계가 웹을 이용해서 통신할때 정해진 규칙, http를 이용한다. api 컴퓨터의 기능을 실행시키는 방법을 의미한다. ex) 헬로월드를 출력하는 기능 print("hello wolrd") or document.write("hello world") rest api 컴퓨터의 기능을 실행시키는 방법이지만 내컴퓨터가 아니라 다른 컴퓨터의 것을 출력한다. 인터넷과 웹을 통해서 나의 컴퓨터를 제어할때 어떻게 해야 시행착오를 줄일 수 있느냐의 결과물 특정 기술이 아닌 http를 이용해서 기계가 통신을 할때 http가 가진 잠재력을 이끌어냄 REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미. 즉 REST란 HTTP .. WEB JAVA SPRING/etc 2023. 8. 28. [Day-16] 간단한 주문 조회 V2: 엔티티를 DTO로 변환 api 스펙에 딱 맞춰 출력이 됐다.. OrderSimpleApiController@GetMapping("api/v2/simple-orders")public List ordersV2(){ //Order 그대로 반환하지 않고 dto로 변환하서 반환하자 List orders = orderRepository.findByString(new OrderSearch()); List result = orders.stream() .map(o-> new SimpleOrderDto(o)) .collect(Collectors.toList()); return result;}@Datastatic class SimpleOrderDto.. WEB JAVA SPRING/PROJECT 2023. 8. 28. [Day-15] rest api 엔티티 직접 노출 조회용 샘플 데이터 입력 InitDbpackage jpabook.jpashop;import jpabook.jpashop.domain.*;import jpabook.jpashop.domain.item.Book;import lombok.RequiredArgsConstructor;import org.springframework.stereotype.Component;import org.springframework.transaction.annotation.Transactional;import javax.annotation.PostConstruct;import javax.persistence.EntityManager;/** * * userA * JPA1 BOOK * JPA2 BO.. WEB JAVA SPRING/PROJECT 2023. 8. 28. [Day-14] 회원등록/수정/조회 API 회원등록 공통으로 예외처리할 요소가 많이 달라서 ~~Postman으로 보자~~ MemberApiController.java//회원등록//문제발생 : 엔티티를 수정하면 api 스펙이 변해버릴 수 있다. 그렇기 때문에 api 스펙을 위한 별도의 dto 만들어야한다.@PostMapping("/api/v1/members") //body에서 온 json 데이터를 매핑해서 member에 다 넣는다public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member) { //Valid : Member 검증 (ex: NotEmpty) Long id = memberService.join(member); ret.. WEB JAVA SPRING/PROJECT 2023. 8. 25. 4.결과를 전달하는 HTTP 상태코드 4.1 상태코드 클라이언트 --request---> 서버 서버로부터 request 결과를 전달 response의 클래스 클래스 설명 1XX Informational request 처리중 2XX Success request 정상 처리 3XX Redirection request 를 완료하기 위해 추가 동작이 필요 4XX Client Error 서버는 request 이해 불가 5XX Server Error 서버는 request 처리 실패 ◆2XX request 성공 ▷200 정상처리 ▷204 No Content request 성공 but 돌려줄 리소스가 없음 엔티티(HTTP 요청 또는 응답의 본문) 바디가 없음 -> 브라우저에서 request 보낸후 화면이 변하는 일은 없을 것임 클라이언트에서 서버로 정보를 .. INFRA/NETWORK 2023. 8. 25. [Day-13] 변경감지와 병합, 상품주문, 주문 목록 검색, 주문 취소 #변경감지와 병합 준영속 엔티티?영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다.(여기서는 itemService.saveItem(book) 에서 수정을 시도하는 Book 객체다.Book 객체는 이미 DB 에 한번 저장되어서 식별자가 존재한다.이렇게 임의로 만들어낸 엔티티도 기존 식별자를 가지고 있으면 준 영속 엔티티로 볼 수 있다.) 준영속 엔티티를 수정하는 방법1. 변경 감지 기능2. 사용 병합( merge ) 사용 ItemController/** * 상품 수정 */@PostMapping(value = "/items/{itemId}/edit") //post로 받았다.public String updateItem(@PathVariable Long itemId.. WEB JAVA SPRING/PROJECT 2023. 8. 25. [Day-12] 상품 등록, 목록, 수정 #상품 등록상품 등록 폼에서 데이터를 입력하고 Submit 버튼을 클릭하면 /items/new를 POST 방식으로 요청상품 저장이 끝나면 상품 목록 화면( redirect:/items )으로 리다이렉트 ItemController/** * 상품 등록 클릭시 */@GetMapping(value = "/items/new")public String createForm(Model model) { model.addAttribute("form", new BookForm()); //이렇게 넘겨줘서 html에서 추적가능 return "items/createItemForm";}/** * 상품 등록 (submit) */@PostMapping(value = "/items/n.. WEB JAVA SPRING/PROJECT 2023. 8. 25. [Day-11] 회원 등록, 목록 조회 #회원등록 MemberForm폼 객체를 사용해서 화면 계층과 서비스 계층을 명확하게 분리한다- 필요한 것만 뽑아 쓰는게 깔끔함- 요구사항이 실무에서 단순하지 않음 일대일로 매칭되는 경우 거의없음- 엔티티에 화면을 추가하는 기능이 많아지면 지저분해짐 ->화면종속적기능 -> 유지보수 힘들다엔티티를 최대한 순수하게 유지할것!!!@Getter @Setterpublic class MemberForm { @NotEmpty(message = "회원 이름은 필수입니다.") //name은 필수 나머지는 선택 private String name; private String city; private String street; private String zipc.. WEB JAVA SPRING/PROJECT 2023. 8. 25. [Day-10] 주문기능테스트, 부트스트랩적용 #주문기능테스트 테스트 요구사항- 상품 주문이 성공해야 한다.- 상품을 주문할 때 재고 수량을 초과하면 안 된다.- 주문 취소가 성공해야 한다. OrderServiceTest@RunWith(SpringRunner.class)@SpringBootTest@Transactionalpublic class OrderServiceTest { @Autowired EntityManager em; @Autowired OrderService orderService; //OrderService 받아옴 @Autowired OrderRepository orderRepository; @Test public void 상품주문() throws Excep.. WEB JAVA SPRING/PROJECT 2023. 8. 25. [Day-9] 주문 엔티티, 리파지토리, 서비스 #주문 엔티티 개발(비즈니스 로직 추가)domain - Order//==생성메서드==////회원,배송,주문내역 넘기기 (...: 여러개)public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems) { Order order = new Order(); order.setMember(member); order.setDelivery(delivery); for (OrderItem orderItem : orderItems) { // 위에 선언 private List orderItems = new ArrayList(); order.addOrderItem(orde.. WEB JAVA SPRING/PROJECT 2023. 8. 25. 이전 1 ··· 6 7 8 9 10 11 12 다음