본문 바로가기

분류 전체보기41

[Spring Boot] Spring MultipartFile 파일업로드 구현하기 ※ 개발 환경: Back-end Project: Gradle Project, Language: Java 11, Spring Boot: 2.6.7 Dependencies: SpringWeb, Thymeleaf, Lombok ,Validation, H2 Database, MySQL Driver, Spring Data JPA Front-end JavaScript, Thymeleaf, HTML5 파일은 문자와 다르게 바이너리 데이터를 전송해야 한다. 그리고 보통 폼을 전송할 때 문자와 바이너리를 동시에 전송해야하는 경우가 대부분일 것이다. 이 문제를 해결하기 위해 스프링이 제공하는 multipart/form-data 라는 전송 방식을 사용한다. 바이너리 파일(binart file) 바이너리 파일은 데이터의 저장.. 2022. 7. 7.
[Spring Boot] 스프링 시큐리티 - 패스워드 암호화 적용하기 Spring Security 공식 문서 Spring Security Spring Security Spring Security is a framework that focuses on providing both authentication and authorization to Java applications. Like all Spring projects, the real power of Spring Security is found in how easily it can be extended to meet custom requirements spring.io Spring 기반의 Application의 보안을 위한 Spring framework 스프링 시큐리티의 PasswordEncoder를 이용하여 패스워드를 암.. 2022. 6. 29.
[MING-MARKET] 로그인 : 없는 아이디 입력시 오류 처리(Optional 클래스 사용) - NoSuchElementException 현재 문제점 1. 로그인시 잘못된 아이디(없는 아이디)를 입력하게 되면 2. NoSuchElementException 예외가 터져버린다. 에러메시지 java.util.NoSuchElementException: No value present at java.base/java.util.Optional.get(Optional.java:148) ~[na:na] at project.toyproject.service.LoginService.login(LoginService.java:31) ~[classes/:na] at 코드보기 (JPA 사용) MemberRepository /** *로그인시 회원 조회 *TODO *코드 리팩토링 예정(람다함수, stream사용해보기) */ public Optional findBylo.. 2022. 6. 27.
[MING-MARTKET]JPA - merge를 이용하여 값 수정시 null(변경 감지 방법_dirtyChecking 으로 수정) 중고거래장터 밍마켓 유저는 상품을 자유롭게 올릴 수 있다. 올린 상품을 수정할 수 있다 Controller @PostMapping("/{productId}/edit") public String create(@PathVariable Long productId,@Valid @ModelAttribute("form") CreateProductForm form, BindingResult result, @LoginCheck MemberDto.SessionMemberData loginMember, RedirectAttributes redirectAttributes, HttpServletRequest request ) throws IOException { if (result.hasErrors()) { //만약에 res.. 2022. 6. 23.
Junit5 에서 Exception 테스트 (Junit4 @Test(expected = exception) 코드로 보는 것이 확실하게 이해가 될 것이다. 예제: 회원가입시 중복 회원은 가입할 수 없다. service @Service @Transactional(readOnly = true) @RequiredArgsConstructor public class MemberService { private final MemberRepository memberRepository; @Transactional public Long join(Member member) { //EXCEPTION List findMembers = memberRepository.findByName(member.getName()); //회원이름으로 조회 if (findMembers.size() > 0) { throw new IllegalStateEx.. 2022. 5. 31.
[GitHub] 깃허브 토큰(Token) 생성하기 오랜만에 깃 토큰 만료돼서 새로 생성을 하려다 갑자기 어떻게 했는지 기억이 나지 않아 충격이었다. 1. 오른쪽 상단 프로필에서 'settings' 클릭 2. 왼쪽 하단에 'Developer settings' 클릭 3. 'Personal access tokens' 클릭한다. 4. 'Generate new token' 클릭 후 패스워드 입력 5. Note: 토큰 이름, Expiration: 유효기간, Select scopes: 필요한 권한 체크 (나는 repo정도만 관리하기 위해서 repo만 체크했다.) 6. Generate token 버튼을 클릭해서 토큰을 생성한다. 7. 토큰 번호 꼭 저장! + 만료된 토큰은 Delete 2022. 5. 28.