묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결토비의 스프링 부트 - 이해와 원리
스프링에 삭제/수정을 시 방어 코드 로직이 있을 까요?
스프링에 삭제/수정을 시 방어 코드 로직이 있을 까요?안녕하세요 토비님 ~ 오더 삭제를 위한 매핑 정보@RequestMapping(value ="/경로/{오더번호}" 삭제로직 mvc 공부하다가 궁금한점이 있어 문의 드립니다 위와 같은 삭제 로직 호출 부분이 있다고 가정 할 때 웹, 스프링 공부를 한 사람이 악의 적인 의도를 갖고클롬 개발자도구를 사용해서 오더 삭제 URI 주소를 확인 유추하게 되어 악의적으로 자기 오더가 아닌 오더번호 or 오더Seq를 쿠팡/배달의민족 등 삭제 시도 공격을 할 수 있을 거라고 생각해봤습니다 물론 삭제 로직 에사용자의 로그인 정보 나 롤 정보를 담은SQL에 WHERE 조건은 집어 넣을 수 있습니다 이런 악의적인 공격을 피해 갈 수 있는 다른 스프링의 기능이 있을 지 궁금 합니다 감사합니다 수고하세요.--█●●--------------------------------------------#delete#update#수정#삭제#방어#로직#방법#부트#스프링#스프링부트#spring#sping-boot#springboot#토비
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
리눅스 mysql 8.0 설치 에러
같은 환경에서 mysql 설치시에# mysql . sudo yum install mysql-community-server -y 이부분 설치 명령어를 입력하면$ sudo yum install mysql-community-server -y Last metadata expiration check: 0:59:00 ago on Sun Apr 2 13:16:56 2023. Error: Problem: conflicting requests - nothing provides libcrypto.so.10()(64bit) needed by mysql-community-server-8.0.11-1.el7.x86_64 - nothing provides libssl.so.10()(64bit) needed by mysql-community-server-8.0.11-1.el7.x86_64 - nothing provides libcrypto.so.10(libcrypto.so.10)(64bit) needed by mysql-community-server-8.0.11-1.el7.x86_64 - nothing provides libssl.so.10(libssl.so.10)(64bit) needed by mysql-community-server-8.0.11-1.el7.x86_64 - nothing provides libcrypto.so.10()(64bit) needed by mysql-community-server-8.0.12-1.el7.x86_64 - nothing provides libssl.so.10()(64bit) needed by mysql-community-server-8.0.12-1.el7.x86_64 - nothing provides libcrypto.so.10(libcrypto.so.10)(64bit) needed by mysql-community-server-8.0.12-1.el7.x86_64 - nothing provides libssl.so.10(libssl.so.10)(64bit) needed by mysql-community-server-8.0.12-1.el7.x86_64 - nothing provides libcrypto.so.10()(64bit) needed by mysql-community-server-8.0.13-1.el7.x86_64 - nothing provides libssl.so.10()(64bit) needed by mysql-community-server-8.0.13-1.el7.x86_64 - nothing provides libcrypto.so.10(libcrypto.so.10)(64bit) needed by mysql-community-server-8.0.13-1.el7.x86_64 - nothing provides libssl.so.10(libssl.so.10)(64bit) needed by mysql-community-server-8.0.13-1.el7.x86_64 . . . . 이런식으로 충돌하는요청이 생겼다고 뜨는데 알아보니 라이브러리가 안깔려있어서 그렇다는 말도있고 어떤부분이 문제인지를 잘 모르겠어요 ㅠ...다시 처음부터 해봐도 해결이 안되고 다른 블로그 찾아봐도 아직 해결이 안되요gcc 라이브러리를 설치해야하나요? ㅠ
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
application.yml 작성 오류
5분쯤에 application.yml 작성할 때 오류가 생겨 질문 드립니다. mysql은 잘 설치되어있는 것 같습니다감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JdbcMemberRepository 에러 부분 캡쳐 해서 올립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]오류 나는 부분이 빨간 줄 쳐져 있는 두 부분인데 왜 그런걸까요?
-
미해결스프링 시큐리티 OAuth2
0auth2.0 roles의 이해
키 클락을 로컬 8080으로 띄워서 강의처럼 실습을 하고 있습니다roles1번 을 통해 user 로 로그인 바로 리다이렉트 http:localhost:8081 로 넘어가고grant access 화면이 뜨지 않는데 왜 그런건가요 ?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이에서 실행할 때와 터미널에서 실행할 때 차이
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]인텔리제이에서 실행 터미널에서 실행/hello 들어 갔을 때 터미널에서 실행할 때는 띄워주지 않는데 왜 그럴까요그리고 libs에 hello-spring-0.0.1-SNAPSHOT-plain.jar파일이 추가로 더 있던데 어떤 역활인지 궁금합니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew build 에러
해당 에러 관련 질문글과 블로그를 읽어보고 아래와 같이 환경변수 설정까지 완료했습니다.JAVA_HOME은 C:\Program Files\Java\jdk-11\bin아래는 PATH(CLASS_PATH도 설정한 경우도 있어 %JAVA_HOME%\lib 로 추가했습니다.) 또한 java -version과 javac -version은 아래와 같이 출력됩니다.그러고 나서 hello-spring directory로 가서 gradlew build를 하면 계속해서 아래와 같은 오류가 발생합니다.어디가 문제인지 알려주시면 감사하겠습니다.
-
미해결토비의 스프링 부트 - 이해와 원리
서버운영중 오류 예외 발생시 원인 찾는 방법 문의 드립니다
안녕하세요 토비님~이번에도 강의 내용과 상관 없는 질문 드립니다 시스템을 운영하면서 예상치 못한 에러상황이나자바소스 예외 상황이 발생 했을 때 예외가 발생한 자바소스는 어떤 자바파일 이며그 특정 자바 파일 몇번째 라인에서 왜? 오류나 예외가 발생했는지로그를 담아 db에 넣고 싶습니다. 그러면 개발자 입장에서 원인 찾아 소스 수정하는게 빠를 테니까요..(서버에 남는 로그파일에서 찾아서 로그를 다시 다운받아서 찾아 보는 것 보다 db 테이블에서 clob 으로 레고드를 남기고 찾아서, 따라 가는게 이득이라고 생각했습니다 ) 구글링해보니 우선 아파치 ExceptionUtils 부분이 있어아래 이미지와 같이 적용을 했는데 토비님이 실무에서 사용하고 계시는 다른 쉽고 좋은 베스트 방법이 있진 않을까 문의 드립니다 급한 질문 아닙니 시간 나 실 때알려주시면 감사하겠습니다. 수고하세요.--█●●--------------------------------------------#Exception #Error#예외#처리#원인#로그#부트#spring#sping-boot#springboot#토비--█●●--------------------------------------------
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JdbcMemberRepository에서 어디가 잘못된걸까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용].중간에 conn 부분이랑 맨아래 throws SQLException 쪽에 빨간줄이 그어 있긴하는데 같은 코드인것 같은데 어디서 잘못된건지 잘 모르겠습니다. 제가 작성한 코드는public class JdbcMemberRepository implements MemberRepository{ private final DataSource dataSource; public JdbcMemberRepository(DataSource dataSource){ this.dataSource = dataSource; } @Override public Member save(Member member) { String sql = "insert into member(name) values(?)"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try{ conn = getConnection(); pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); pstmt.setString(1, member.getName()); pstmt.executeUpdate(); rs = pstmt.getGeneratedKeys(); if (rs.next()) { member.setId(rs.getLong(1)); } else { throw new SQLException("id 조회 실패"); } return member; } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } @Override public Optional<Member> findById(Long id) { String sql = "select * from member where id = ?"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setLong(1, id); rs = pstmt.executeQuery(); if(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); return Optional.of(member); } else { return Optional.empty(); } } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } @Override public Optional<Member> findByName(String name) { String sql = "select * from member where name = ?"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); pstmt.setString(1, name); rs = pstmt.executeQuery(); if(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); return Optional.of(member); } return Optional.empty(); } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } } private Connection getConnection() { return DataSourceUtils.getConnection(dataSource); } private void close(Connection conn, PreparedStatement pstmt, ResultSet rs) { try { if (rs != null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (pstmt != null) { pstmt.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (conn != null) { close(conn); } } catch (SQLException e) { e.printStackTrace(); } } @Override public List<Member> findAll() { String sql = "select * from member"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getConnection(); pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); List<Member> members = new ArrayList<>(); while(rs.next()) { Member member = new Member(); member.setId(rs.getLong("id")); member.setName(rs.getString("name")); members.add(member); } return members; } catch (Exception e) { throw new IllegalStateException(e); } finally { close(conn, pstmt, rs); } private void close(Connection conn) throws SQLException { DataSourceUtils.releaseConnection(conn, dataSource); } }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
로컬디스크가 아닌 다른 곳으로 접근하는법
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]터미널로 따라하려는 도중 강사님의 파일은 c에 있지만 저는 따로 E 로컬디스크에 저장되어있어 cd E:\Spring-workspace\hello-spring를 했는데 별다른 반응 없이 C에 머물러 있는 것 같은데 어떻게 접근해야하나요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
15강 질문 드립니다!
15강 람다식 질문 드립니다!선생님 안녕하세요!15강에서 작성해주신 람다식이 있는데람다식을 사용하지 않은 코드도 댓글로 알려주실 수 있으실까요~!자바 공부를 시작한 지 얼마 되지 않아서 혼자 해보려 해도 잘 안되네요..! 부탁 드리겠습니다!! 감사합니다!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderLine, LineItem
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.교재 19페이지에 주문상품에 '보통 OrderLine, LineItem으로 많이 표현한다.' 라고 되어 있는데요, OrderItem이란 이름 대신 OrderLine 을 많이 사용한다는 뜻인가요 ?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
sink로 등록된 topic의 값이 db에 반영되지 않습니다.
sink도 잘 등록되었고, orders topic에 json 값도 잘 전달되지만 전달된 값이 디비에는 반영되지 않아 데이터 삽입이 되지 않습니다. ㅠㅠ무엇이 문제일까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Book 객체가 준영속 엔티티인 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]아래 코드에서 Book 객체는 개발자가 임의로 만든 객체이고 form 객체의 id값은 이미 예전에 JPA가 저장했던 id값이니까 이 id값을 받은 book 객체는 기존 식별자를 가지고 있기 때문에 준영속 엔티티로 보는것인가요?@PostMapping("/items/{itemId}/edit") public String updateItem(@ModelAttribute("form") BookForm form){ Book book = new Book(); book.setId(form.getId()); //form은 이전의 jpa가 db에 저장했으니 form의 id값을 받은 book객체는 준영속 엔티티?? book.setName(form.getName()); book.setPrice(form.getPrice()); book.setStockQuantity(form.getStockQuantity()); book.setAuthor(form.getAuthor()); book.setIsbn(form.getIsbn()); itemService.saveItem(book); return "redirect:/items"; }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
/home 화면이 나오지 않습니다..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 화면이 출력되지 않습니다.... 질문 게시판에 다른 상황들을 보고 오타나 패키지를 잘못 설정했나 다시 보아도 찾지 못하였씁니다.... /home화면이 나오지 않습니다
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
안녕하세요 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. @GetMapping("/api/v1/orders") public List<Order> orverV1() { List<Order> all = orderRepository.findAllByString(new OrderSearch()); for (Order order : all) { // LAZY 강제 초기화 역할 order.getMember().getName(); order.getDelivery().getAddress(); List<OrderItem> orderItems = order.getOrderItems(); orderItems.stream().forEach(o -> o.getItem().getName()); } return all; }orderItem의 item부분 LAZY 초기화 해주는 부분에서 orderItems.stream().forEach에서 stream()빼줘도 결과가 똑같이 나오던데 stream을 넣어주는 이유가 있나요??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
entitymanagerFactory 오류
Consider defining a bean of type 'jakarta.persistence.EntityManagerFactory' in your configuration.이런식으로 오류가 뜨면서 실행이안됩니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
스프링 부트 시작 오류
강의와 동일하지만 스프링 부트 스타터 홈페이지에서 h2데이터 베이스 대신 mysql을 추가한 것 밖에 없는데 해당 오류가 출력됩니다. 구체적인 오류도 나오지 않아 해결하기가 힘드네요.. 어떤 문제가 있을까요? 압축파일을 풀고 따로 코드를 건드리지 않고 바로 실행을 했을 때 입니다. 추가적으로 자바는 17, 스프링부트는 3.0.5 입니다
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요 7강을 듣다가 질문 드립니다!
선생님 안녕하세요! 7강을 듣다가 아래 분과 같이 주소 페이지 오류가 떠서 질문글 남깁니다!댓글로 <스프링 프로젝트를 시작하는 첫 번째 방법>으로 하라고 하셨는데 강의에는 두 번째 방법만 올라와 있고 첫 번째 방법은 보이지 않네요..! 어디서 확인할 수 있을까요?!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
illegalException
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) -application.yml[질문내용]h2과 application url 둘 다 jdbc:h2:tcp://localhost/~/jpashop로 했을 때는 MemberRepositoryTest를 실행하면 ILLegalException 이 발생했었는데, url을 jdbc:h2:tcp://localhost/~/test 로 고쳤을때는 정상적으로 작동합니다. 왜 그런지 이유를 알려주실 수 있을까요??