전체 글

웹개발
Web/Spring Boot

[게시판] 2 - Security 기본 설정 (CSRF와 CORS)

SecurityConfig @EnableWebSecurity @Configuration public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{ http .csrf(csrf -> csrf.disable()) .cors(cors -> cors.disable()) .authorizeHttpRequests((auth) -> auth .requestMatchers(new AntPathRequestMatcher("/**")).permitAll() ); return http.build(); } } 나중에 필요할시 설정하기위해 임시로 csrf와 cors를 비활성화 해주고 모든..

Web/Spring Boot

[게시판] 기본설정

버전정보 자바 - 17 스프링부트 - 3.2.1 mysql - 8.0 Dependency implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity..

Web/Spring Boot

[Project] 쇼핑몰 프로젝트 - 11 로그인 실패 핸들링

로그인 실패시에 /로그인경로?error로 이동하고 아무런 에러표시가 발생하지않는다. 여러 로그인관련 오류를 표시해주겠다. SecurityConfig 수정 @Configuration @EnableWebSecurity @RequiredArgsConstructor @EnableGlobalMethodSecurity(prePostEnabled = true) public class SecurityConfig{ private final AuthenticationFailureHandler CustomAuthFailureHandler; @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{ http .csrf().disable()..

Coding/자료구조&알고리즘

[프로그래머스] 추억점수

https://school.programmers.co.kr/learn/courses/30/lessons/176963 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진 속 인물..

Web/Spring Boot

DTO와 Entity

Entity란 Entity는 DB 테이블에 존재하는 Column을 필드로 가지는 객체를 뜻함. Entity는 DB 테이블과 1대1 대응관계이고, 테이블에 가지지 않는 Column을 필드로 가져서는 안 된다. 또한 다른 클래스를 상속받거나 인터페이스의 구현체여서는 안 된다. Member 테이블에 id, name, age Column이 있으면 Spring Jpa를 사용할 때 아래와 같이 Entity 클래스를 작성할 수 있다. @Entity public class Member{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private int age; } @Entity어노테이션은 해당 클..

Web/Spring Boot

[Project] 쇼핑몰 프로젝트 - 10 게시판 페이징

Jpa에서 제공하는 페이징기능을 이용해서 메인페이지 페이징을 해보겠다. 먼저 테스트를위해서 상품 100개를 등록하겠다. 상품등록 @SpringBootTest class ShopApplicationTests { @Autowired private ItemRepository itemRepository; @Autowired private MemberRepository memberRepository; @Test void itemTest(){ for(int i=0; i 다음 정상적으로 작동한다. 참고 : https://wikidocs.net/162028

Web/Spring Boot

[Project] 쇼핑몰 프로젝트 - 9 상품 수정 & 삭제

상품 상세 페이지에서 자신이 작성한 글만 수정, 삭제 할수있도록 구현해보겠다. ItemController 추가 @GetMapping("/detail/{id}") public String item_detail(Model model, @PathVariable Long id, Principal principal){ model.addAttribute("item", itemService.itemFindId(id)); model.addAttribute("reviews", reviewService.FindItemId(id)); if(principal != null) { Member member = memberService.findEmail(principal.getName()); model.addAttribute("m..

Web/Spring Boot

[Project] 쇼핑몰 프로젝트 - 8 상품상세페이지 & 리뷰

Review Entity @Entity @NoArgsConstructor @Getter public class Review { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String content; @ManyToOne @JoinColumn(name = "item_id") private Item item; @ManyToOne @JoinColumn(name = "member_id") private Member member; @Builder public Review(Long id, String content, Item item, Member member){ this.id = id; this.content = ..

Web/Spring Boot

[Project] 쇼핑몰 프로젝트 - 7 상품등록페이지

item_reg.html 작성 상품 등록 상품명 가격 재고 상품 설명 상품 등록 ItemDto 작성 @Data public class ItemDto { private String name; private String content; private int price; private int count; private Member member; public Item toEntity(){ return Item.builder() .name(name) .content(content) .price(price) .count(count) .member(member) .build(); } } ItemController 추가 @Controller @RequestMapping("/item") @RequiredArgsConst..

Web/Spring Boot

[Project] 쇼핑몰 프로젝트 - 6 메인페이지

상품 구현 먼저 상품목록을 html로 넘겨줘야하기떄문에 상품을 구현해보겠다. ItemEntity 작성 @Entity @NoArgsConstructor @Getter public class Item { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String content; private int price; private int count; @ManyToOne @JoinColumn(name = "member_id") private Member member; @Builder public Item(String name, String content, int price, int..

h0ch1
Junyoung.dev