묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
HPA 질문
안녕하세요. 책이랑 동영상이랑 함께 보며 재밌게 학습하고 있습니다. 아래 사항 궁금하여 질문 드립니다.부하량이 증가하여 파드가 새로 생성이 된다면, 새로 생성된 파드들은 원래 파드의 서비스(ex, 톰캣) 및 실행 상태도 그대로 복사가 되는지 궁금합니다.아래 파워쉘에서 실행하는 반복문을 맥에서 실행하려면 어떻게 변경하면 되는지 문의 드립니다.$i=0; while($true){% { $i++; write-host -NoNewline "$i $_" }(Invoke-RestMethod "http://192.168.1.11")-replace '\n', " "} 좋은 책 및 강의 만들어 주셔서 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
404 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]현재 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 코스에서Model 추가 - v3 강의를 듣고 있는데,이전까지 잘 되던 프로젝트가 갑자기 404 에러가 뜹니다.localhost:8080 부터 index.html, front-controller/v3/.. 등 거의 모든 페이지에서 whitelabel + 404에러가 뜨는데 질문글과 인터넷을 몇시간동안 뒤져봐도 도저히 해결 방법을 못 찾겠습니다.도와주시면 감사하겠습니다.https://drive.google.com/drive/folders/1i92f1XZ7KXD0kIdcX547FnedwccU2U-K?usp=share_link
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
슬랙방에 들어가지지 않습니다
선생님 안녕하세요슬랙방 링크를 클릭하니 이런 페이지가 뜹니다.
-
해결됨넓고 얕게 외워서 컴공 전공자 되기
외워야 할 단위 체계와 숫자 바이트?
외워야 할 단위 체계와 숫자강의에서'64비트를 용량으로 계산하면 16EB 가 된다''16비트는 65,536 가지로서 64KB 이다'' 1KB = 1024Byte 다'라고 하셨는데64비트 = 8바이트 인데 왜 16EB 인가요16비트 = 2바이트 인데 왜 64KB 인가요 저도 뭔가 잘못알고있는건 알겠는데용량으로 계산한다는 말이 무엇이고 제가 어떻게 잘못이해하고 있는지 궁금합니다..WIN 64 는 64비트 이고 2의 64승 개수 만큼의 표현을 할 수 있는건데 왜 이걸 2의 64승 바이트? 라고 계산하나요찾아보니 64비트로는 2의 64승 개수의 주소를 표현할 수 있고, 컴퓨터는 1Byte 마다 하나의 주소를 부여하므로 2의 64승 바이트 만큼을 컴퓨터에 저장할 수 있으므로 16EB 가 된다는거 같은데 맞나요?
-
미해결실전! 스프링 데이터 JPA
Unknown entity 에러
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]선생님 안녕하세요 현재 스프링 데이터 JPA와 DB 설정, 동작확인 15:43 부분 강의 수강중입니다.코딩은 다음과 같이 진행 하였는데요 Unknown entity 오류가 나오고 있습니다 ㅠㅠ 어떻게 처리하면 될까요 ? ㅠnknown entity: com.sun.proxy.$Proxy100; nested exception is java.lang.IllegalArgumentException: Unknown entity: com.sun.proxy.$Proxy100org.springframework.dao.InvalidDataAccessApiUsageException: Unknown entity: com.sun.proxy.$Proxy100; nested exception is java.lang.IllegalArgumentException: Unknown entity: com.sun.proxy.$Proxy100
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hellospring 처음 시작 실행 오류
No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.4 was found. The consumer was configured to find a runtime of a library compatible with Java 8, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '7.6.1' but: java 버전 8을 깔아서 그런 건지 잘 모르겠지만 실행이 안 되네요 ㅜ
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
votes기능 부분
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.1.위 이미지처럼 comments.votes를 했는데 저렇게 Array만 뜨는데 값을 가져올 수 있는 건가요?? 위 이미지 처럼 postId와 commentID를 넣은게 아닌 comment 객체와 Post 객체를 넣었는데 어떻게 DB에는 postID와 CommentId가 들어간건지 알 수 있을까요??
-
해결됨기출로 대비하는 개발자 전공면접 [CS 완전정복]
Dynamic Array vs Linked List
안녕하세요 강사님, 제목 그대로 위의 두 자료구조를 비교한다고 하면,삽입/삭제를 자주해야 될 때말고는 어느 상황에 Linked List를 쓰는게 나은가요? 그리고 Dynamic Array도 메모리를 적게 쓰는 중요한 상황일 때, Linked List보다 효율적이라고 할 수 있나요?
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
깃헙 권한 요청
인프런 아이디 : notenore@gmail.com인프런 이메일 : notenore@gmail.com깃헙 아이디 : notenore@gmail.com깃헙 Username : notenore
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 백준9996번 반례
큰돌님 이렇게 제가 코드를 작성해보았는데 반례를 못찾겠습니다ㅜㅜ 로직은 큰돌님 강의에서 설명해주신거랑 비슷합니다#include <iostream> #include <vector> #include <cstring> using namespace std; vector<string> split(string input, string delimiter) { vector<string> ret; long long pos = 0; string token = ""; while ((pos = input.find(delimiter)) != string::npos) { token = input.substr(0, pos); ret.push_back(token); input.erase(0, pos + delimiter.length()); } ret.push_back(input); return ret; } int main() { vector <string> answer; int N; cin >> N; bool flag = false; // string pattern; char pattern[101] = {0, }; cin >> pattern; string d = "*"; vector<string> a = split(pattern, d);//a에 담기게 된다 // for(string b : a) cout << b << "\n"; char temp[101] = {0, }; char part1[101] = {0, }; char part2[101] = {0, }; a[0].copy(part1, a[0].size()); a[1].copy(part2, a[1].size()); // cout << "part1 is " << part1 << endl; // cout << "part2 is " << part2 << endl; for(int i = 0; i < N; i++){ cin >> temp; if(strlen(temp) < a[0].size() + a[1].size()){ answer.push_back("NE"); continue; } for(int j = 0; j < a[0].size(); j++){ if((temp[j] == part1[j]))flag = true; else flag = false; } int cnt = strlen(temp) -a[1].size();//마지막 단어 인덱스 번호 for(int j = 0; j < a[1].size(); j++){ if((temp[cnt + j] == part2[j]))flag = true; else flag = false; } if(flag){answer.push_back("DA"); cout << "DA" << "\n";} else { answer.push_back("NE"); cout << "NE" << "\n"; } } // for(string x : answer)cout << x << endl;s return 0; }
-
미해결[스프링 배치 입문] 예제로 배우는 핵심 Spring Batch
Chunk size에 대해
안녕하세요.코드를 보면 Step을 만들 때, .<Orders, Accounts>chunk(5) 와 같이 chunk size를 5로 지정했는데요.ItemReader에서도 PageSize를 5개로 지정했습니다.그리고 실제로 배치를 실행하면 정상적으로 동작합니다.하지만, 로그를 보면 select와 insert가 섞여있는데요.5개씩 실행되는게 어느 단위인지 궁금합니다.1. Reader에서 5개를 읽어온다.2. 5개를 Processcor에서 처리한다.3. 5개를 Writer에서 DB에 작성한다.저는 위와 같은 방식이라고 생각했는데, 어떤게 맞는건가요?좋은 강의 감사합니다!
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
리트코드 177번 3번째 풀이 DISTINCT 와 LIMIT 의 순서
LeetCode 177 번에서 LIMIT, OFFSET 을 사용해서 문제를 풀라고 하셨을때DISTINCT 와 LIMIT 를 같이 쓰셨던데 그것들 중 뭐가 먼저 작동하는지 작동 순서가 궁급합니다. 아래는 강사님의 풀이입니다CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT BEGIN SET N = N-1; RETURN ( SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1 OFFSET N ); END그리고 아래의 데이터가 input 이라고 생각해보면처음 제 생각은 이랬습니다 ORDER BY -> LIMIT -> DISTINCT 순대로 실행된다면N=2 일때 우선 ORDER BY Salary DESC 를 진행해도 Salary 값이 같으므로 100, 100 그대로일 것이고, 여기서 LIMIT 를 하면 1개만 가져와서 100 이 될겁니다. 거기서 DISTINCT 를 해도 100 이 될거고요 근데 결과가 그렇게 나오지 않는 걸 보면 위의 제가 생각했던 순서가 틀린거겠죠?ORDER BY -> DISTINCT -> LIMIT 가 맞나요?N = 2 일때 ORDER BY Salary DESC 를 진행해도 Salary 값이 같으므로 100, 100 그대로일 거고, 여기서 DISTINCT 를 하여 100 이 되고, LIMIT 를 하면 데이터가 1개이므로 2번째로 큰 Salary 를 구할 수 없어서 null 이 되는 것인가요? ORDER BY, DISTINCT, LIMIT 의 작동 순서를 알고싶습니다
-
미해결AI 포트폴리오 만들기 - Airbnb 클론 프로젝트
강의자료 부탁드립니다!
paul1142@naver.com 입니다! 감사합니다!
-
해결됨PM을 위한 데이터 리터러시(프로덕트 데이터 분석)
지표 정의하기 연습 문제
먼저 올리신 분들이 없어서 너무 창피하지만...열심히 하겠다는 다짐을 지키기 위해 허접한 과제 제출해보겠습니다....ㅎ 1. 기능이 잘 작동하고 있는지 확인하려면?배달 서비스를 담당하는 PM입니다.배너 영역, 메뉴 카테고리, 이런 음식 어때요, 동네 맛집 기능이 잘 작동하고 있는지 확인하려면 어떤 지표를 확인해야 할까요?지표를 정의하고, 지표가 어떤 식으로 움직이면 잘 동작한다고 볼 수 있을까요?우선 저는 기본적으로 클릭률(버튼 클릭 수 / 버튼 노출 수)를 주요 지표로 삼았습니다. 다소 뻔할 수는 있지만 기능들의 클릭률이 올라간다면 해당 기능들이 유저들의 어플 사용에 이용되고 있다는 것을 어느정도 예상할 수 있다고 생각했기 때문입니다.또 다른 지표로는 유저가 메인화면 진입 후 최초로 클릭한 기능의 비중을 살펴보는 것이 좋을 것 같다고 생각했습니다. 예를 들어서, 이렇게 해보면 좋을 것 같다는 생각이 들었습니다.우리 어플의 어떤 기능이 유저들에게 직관적으로 잘 어필될까?'앱 최초 사용자들이 메인화면 진입 후 최초로 클릭한 기능'어떤 기능이 인기가 많을까?, 어떤 기능을 통해 우리 어플이 유저의 생활에 자리 잡고 있을까?'기존 유저들이 메인화면 진입 후 최초로 클릭한 기능'만일 이번 프로젝트에서 배너 영역에 대한 관심을 올리고자 노력했다면'유저 메인화면 진입 후 배너 영역을 최초로 클릭하는 유저들의 비중'과 같은 지표를 일정 수치 이상으로 올리는 것을 목표로 삼는 것도 좋을 것 같습니다. 그리고 문제에서는 '검색'기능을 언급하지 않으신 걸로 보아 검색기능을 제외한 홈화면의 주요 기능들의 작동성이 알고 싶은 상황인 것 같습니다. 따라서 추가적으로 주문까지 전환이 완료된 건에 대해서 고객 여정이 '검색'으로 시작되었는지, 혹은 문제에서 말하는 '홈화면 기능'으로 부터 시작 되었는지에 대해서 해당 비중을 지표로 삼는 것도 중요하다고 생각했습니다. 2. 검색 만족도 지표배달 서비스를 담당하는 PM입니다.고객이 검색 기능에 만족했는지 확인하려면 어떤 지표를 봐야할까요?검색하는 흐름을 떠올려보면서 그 안에 있는 이벤트를 조합해보세요고객이 '검색을 통해 원하는 정보를 얻었는가?'를 구현하고 있는지를 알아보는 것이 중요하다고 생각했습니다.따라서 '일별 검색 기능을 수행한 사람 중 검색 결과를 클릭한 사람 수의 비율'(검색 결과 클릭률)을 지표로 삼겠습니다.사실 검색 기능도 최종 전환을 위해 존재하는 것이기 때문에당일 검색 기능을 사용해본 사람들을 대상으로(중요)'검색 기능을 통해 주문한 수 / 홈화면 기능을 통해 주문한 수'를 지표로 삼고 확인해볼 것 같습니다.검색 기능을 사용했는데도, 굳이 홈화면으로 나가서 카테고리 버튼을 통해 주문한다는 것은 '검색 결과가 마음에 들지 않는다.'를 방증하는 셈이라고 생각하기 때문입니다. 3. 검색 필터 기능의 활성화 지표배달 서비스를 담당하는 PM입니다.검색 필터 기능은 잘 사용되고 있을까요? 필터 기능의 활성화 지표를 정의하면 어떻게 할 수 있을까요?검색 필터를 사용하는 흐름을 떠올려보면서, 그 안에 있는 이벤트를 조합해보세요총 세가지 스텝을 거쳐야 한다고 생각한다.필터 활성화 건 수 / 총 검색 결과 클릭 건 수 를 살펴보며 검색 결과에 검색 필터 기능이 좋은 영향을 끼쳤을 지에 대해서 예상해본다.위의 지표가 예상 값 이상으로 나왔다면, 검색 결과 클릭으로 이어진 건에서 '어떤 필터가 높은 비중을 차지하고 있는가?'에 대해서 알아보기 위해 적용된 필터 count를 내림차순으로 확인해본다.검색 결과 클릭에 가장 큰 영향을 미치는 것을 보이는 필터를 자동 적용 하거나, 검색 필터 UI를 비중이 높은 순으로 배치하는 것도 좋을 것이라고 생각한다. 4. 검색 필터 기능의 활성화 지표배달 서비스를 담당하는 PM입니다.배달 서비스에서 가장 중요한 지표는 무엇일까요? 왜 그 지표가 중요할까요?그것을 어떻게 개선할 수 있을까요?한국 시장의 상황을 생각해보았다.코로나 이후 배달의 민족 매출 상승에도 불구하고 순이익 하락이 심해진 이유는 바로 외주 용역비(배달 비용) 때문이다. 배민원과 쿠팡잇츠의 단건배송에 대한 눈 먼 시장 점유 싸움으로 인해서 결론적으로는 라이더 들의 인건비만 늘어났다고 볼 수 있다.따라서 현재 한국 배달서비스에서 가장 중요하다고 생각하는 output 지표는 매출이 아닌 '순이익'이라고 생각한다. 순이익은 매출-비용이기 때문에, 매출은 올리고 비용을 낮추는 것을 구현해야 한다.(당연한 말이다)어떤 부분에서 매출을 늘려야 하는가? 에 대해서 생각해 봤을 때는 답은 바로 '부가 서비스'인 것 같다.이 상태로 배달서비스에 힘쓴다면 인해 매출은 늘지만, 외주 용역비 역시 더 큰 폭으로 늘어날 것이기 때문이다.따라서 배달 서비스로 고객 리텐션을 잡되, 기존 고객들의 부가 서비스 이용으로의 확장이 현재로서는 가장 중요하지 않을까 생각한다. 실제로 배민은 퀵커머스 시대를 열고자 하는 노력을 들이고 있고 '배쇼라', 'B마트', '전국 별미' 등의 다양한 서비스를 추진 중이다.따라서 순이익을 위한 input 지표 중 하나로는 '기존 고객의 부가서비스 유입률'(기존 고객 중 부가서비스 유입 고객 수 / 부가서비스 미사용 기존 고객 수)로 정하고, 부가 서비스별 리텐션을 높이기 위한 노력을 들여야 한다고 생각한다. 5. 추천 알고리즘의 성능 지표여러분은 이커머스 서비스에서 추천 알고리즘을 만드는 조직의 PO입니다.추천 알고리즘은 유저의 정보와 유저 로그를 토대로 구매할 것 같은 제품을 보여줍니다.추천 알고리즘의 성능을 확인하기 위해 어떤 지표를 파악해야 할까요? 왜 해당 지표일까요?우선 직관적으로 확인하기 위해서는 추천 알고리즘의 결과 클릭률을 검토하며, '사용자의 니즈에 맞는 상품을 추천하는가?'를 잘 구현했는지를 확인할 것 같습니다. 해당 지표가 높게 나온다면 추천 제품이 사용자의 관심을 끌었다는 것을 나타낼 수 있다고 생각하기 때문입니다.더 나아가서는 추천 알고리즘을 타고 상품페이지에 들어온 유저 전환율(CVR)이 일반적인 유입의 경우와 비교했을 때 더 나은 수치를 보이는가?를 비교해볼 것 같습니다.이 지표가 '알고리즘의 성능'을 나타내기에 다소 부적합하다고 판단되면, 상품 구매건을 대상으로 유저 접속부터 구매까지 걸린 고객 여정 시간을 지표로 삼겠습니다.이후에 추천을 통해 들어왔을 때와 일반적인 유입으로 들어왔을 때의 지표를 비교해 전자가 더 높게 나타난다면 '추천 알고리즘이 적합한 추천 상품을 통해 고객의 구매 여정 원활화에 도움을 주었다.' 라고 판단할 수 있을 것 같습니다. 6. 여러분들이 자주 사용하는 서비스의 지표여러분들이 자주 사용하는 서비스에서 가장 중요한 지표는 무엇일까요? 왜 해당 지표가 제일 중요할까요? 그 외 확인해야 하는 지표를 2개 더 뽑아본다면 무엇이 있을까요?YOUTUBE가장 중요한 지표기존 구독자 유지율(구독 Retention)이유매출의 주요 원인이기 때문따라서 구독자 수를 유지+증가시키는 것이 가장 중요하다고 생각하며, 구독자 수는 어떤 시도를 하더라도 떨어져서는 안됨(가드레일 지표)구독자가 떨어진다는 것은 '구독'의 차별성이 희미해졌다는 것을 말해준다고 생각.(제품성 하락)보조 지표무과금 -> 신규 구독자 CVR신규구독자 / 구독 취소자 --> '1 이상'을 유지하는 것이 중요하다고 생각유튜브 프리미엄 기한에 취소하는 유저들을 집중 공략이유CVR을 높여 NU를 늘리고, 유지하는 것이 가장 이상적인 그림이라고 생각구독 취소자(제품 실망자)보다 신규 구독자(제품 흥미자)의 수를 더 많게 하는 노력이 차후 retention에 도움이 될 것이라고 생각 7. 퍼널 개선 프로젝트여러분들은 가입 퍼널을 개선하라는 미션을 받았습니다.현재 가입 퍼널 프로세스의 전환율은 약 20%며 가입 퍼널에서 온보딩을 더 진행하는 기능을 만들었습니다. 온보딩의 효과를 파악하려면 어떤 지표를 봐야할까요?개선 전후 동일 기간의 '가입완료/유입' 지표를 비교한다. (변수 통제 최대한 필수)또한 온보딩 자체에도 체류 구간, 이탈 구간이 있을 것이기 때문에온보딩 구간별 Funnel을 구성하여, 데이터를 측정해 전환율이나 체류율이 가장 도드라지는 부분의 프로세스를 고쳐보는 식으로 진행해볼 것 같다. 배운 부분에 대해 최대한 생각하면서 했는데 놓친 것들 역시 많은 것 같습니다... 자신 없지만 먼저 이렇게 올려봄으로써 저 이후로도 커뮤니티에 올려보는 분들이 많았음 좋겠네요!좋은 과제 내주셔서 감사합니다. 고민해보는 것 만으로도 즐거웠습니다. 강의 듣길 잘 한 것 같아요!
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
인증요청시 문의드립니다.
강의진행중 궁금한게 있어서 문의드렸습니다!강의중에 토큰이 탈취될수도 있다고하셔서 String jws = Jwts.builder() .setSubject(String.valueOf(userId)) .signWith(key) .setIssuedAt(new Date()) .compact();코드를 넣어주셨습니다. 매번 다른 accessToken값이 나올수 있도록이요! 그 결과 로그인 시마다 매번 다른 토큰값이 나오는데, 로그인을 하고나서 기존의 토큰값으로 /foo 메소드를 호출하여도 인증이 되는데 왜 그런걸까요??1. 로그인시 abc토큰이 나와서 abc토큰으로 /foo 컨트롤러를 호출함 인증됨2. 또 한번 로그인시 abcd토큰이 나옴. 그런데 이전 로그인 토큰이였떤 abc토큰으로 /foo 컨트롤러를 호출하여도 인증 성공됨.왜 그런지 궁금합니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
MVC 패턴 적용 중 404 에러가 납니다. (/servlet-mvc/members/new-form)
강의 정보MVC 패턴 - 적용 (04 : 14)에러 내용http://localhost:8080/servlet-mvc/members/new-form 로 접근하니 다음과 같이 404 에러가 납니다.MvcMemberFormServlet 클래스는 오타가 있을 경우를 대비해 오류 발생 이후에는 강의 자료의 내용을 복사하여 가져왔습니다.MvcMemberFormServlet 클래스 내의 service 메서드가 실행되는지 확인하기 위해 System.out.println("MvcMemberFormServlet.service"); 명령어를 사용하였는데, 터미널에서는 출력되지 않습니다.접근 url도 index.html에서의 링크로 접근을 해서 오타는 없을 것 같습니다.http://localhost:8080/servlet-mvc/members/new-form 을 제외한 다른 url들은 전부 접근이 잘 되고 있습니다.아래는 프로젝트 환경과 소스 코드, 터미널 출력입니다!프로젝트 환경프로젝트 구조소스 코드webapp/WEB-INF/views/new-form.jsp<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!-- 상대경로 사용, [현재 URL이 속한 계층 경로 + /save] --> <form action="save" method="post"> username: <input type="text" name="username" /> age: <input type="text" name="age" /> <button type="submit">전송</button> </form> </body> </html>java/hello/servlet/web/servletmvc/MvcMemberFormServletpackage hello.servlet.web.servletmvc; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet(name = "mvcMemberFormServlet", urlPatterns = "/servlet-mvc/members/new-form") public class MvcMemberFormServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("MvcMemberFormServlet.service"); String viewPath = "/WEB-INF/views/new-form.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); } }터미널 출력"C:\Program Files (x86)\Java\jdk-17.0.2\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.1\lib\idea_rt.jar=57706:C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\User\source\BackEnd\study\스프링MVC1\servlet\servlet\build\classes\java\main;C:\Users\User\source\BackEnd\study\스프링MVC1\servlet\servlet\build\resources\main;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.projectlombok\lombok\1.18.26\8f8cf0372abf564913e9796623aac4c8ea44025a\lombok-1.18.26.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-web\2.7.9\e745a069e2b7ca51e378fcbc397d14dd82178199\spring-boot-starter-web-2.7.9.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-jasper\9.0.71\7ea76096eda4d1847fd50d985b1d26fa36a9822a\tomcat-embed-jasper-9.0.71.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\javax.servlet\jstl\1.2\74aca283cd4f4b4f3e425f5820cda58f44409547\jstl-1.2.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-json\2.7.9\671b3611eeb2fb315281ae17242ef082666e4262\spring-boot-starter-json-2.7.9.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter\2.7.9\19f855d327f68690cf630698e4e41c3afe134a83\spring-boot-starter-2.7.9.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-tomcat\2.7.9\a1076e6ffa1d771d3ccd18e72280317a152323e8\spring-boot-starter-tomcat-2.7.9.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.springframework\spring-webmvc\5.3.25\62a8258bcc4f7a58dd69af5140481b64653c90\spring-webmvc-5.3.25.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.springframework\spring-web\5.3.25\c69815e7931cd3ce7f19cc8028fd1c36626120d6\spring-web-5.3.25.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-core\9.0.71\adaed61b4eaa5b52448336c0881fcd828fd51a2f\tomcat-embed-core-9.0.71.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-el\9.0.71\8fe43848c27ec921c8c5d6dcbd8b959076d7bf99\tomcat-embed-el-9.0.71.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.eclipse.jdt\ecj\3.26.0\4837be609a3368a0f7e7cf0dc1bdbc7fe94993de\ecj-3.26.0.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jsr310\2.13.5\8ba3b868e81d7fc6ead686bd2353859b111d9eaf\jackson-datatype-jsr310-2.13.5.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.module\jackson-module-parameter-names\2.13.5\a401a99e7a45450fd3ef76e82ba39005fd1a8c22\jackson-module-parameter-names-2.13.5.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jdk8\2.13.5\1278f38160812811c56eb77f67213662ed1c7a2e\jackson-datatype-jdk8-2.13.5.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.13.5\aa95e46dbc32454f3983221d420e78ef19ddf844\jackson-databind-2.13.5.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-autoconfigure\2.7.9\849b238dd024101cad8d107b4a8b0906f75003d5\spring-boot-autoconfigure-2.7.9.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot\2.7.9\788d60e73e0f7bbbf11b30c3fb0a9cbaa073446b\spring-boot-2.7.9.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-logging\2.7.9\4b1afa6083581924606c7cc892933b63ec5810d3\spring-boot-starter-logging-2.7.9.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\jakarta.annotation\jakarta.annotation-api\1.3.5\59eb84ee0d616332ff44aba065f3888cf002cd2d\jakarta.annotation-api-1.3.5.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.springframework\spring-core\5.3.25\85382e86321227506bf7f97ed80e2ab88bce25f0\spring-core-5.3.25.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.yaml\snakeyaml\1.30\8fde7fe2586328ac3c68db92045e1c8759125000\snakeyaml-1.30.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.apache.tomcat.embed\tomcat-embed-websocket\9.0.71\987b6460af04b08bc9914788d2762080afb09541\tomcat-embed-websocket-9.0.71.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.springframework\spring-context\5.3.25\268a70ce4f44333ce0f13304c5f8c53b3df5f5f4\spring-context-5.3.25.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.springframework\spring-expression\5.3.25\d681cdb86611f03d8ef29654edde219fe5afef1d\spring-expression-5.3.25.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aop\5.3.25\722e30759b29331726f9deed76f80b22345ee627\spring-aop-5.3.25.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.springframework\spring-beans\5.3.25\b3aeae036b4ea1abfa1f9604d452e19664efe5f6\spring-beans-5.3.25.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.apache.tomcat\tomcat-annotations-api\9.0.71\898ad20682cb807f734e600ba224d6a3eecaedbc\tomcat-annotations-api-9.0.71.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.13.5\136f77ab424f302c9e27230b4482e8000e142edf\jackson-annotations-2.13.5.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.13.5\d07c97d3de9ea658caf1ff1809fd9de930a286a\jackson-core-2.13.5.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-classic\1.2.11\4741689214e9d1e8408b206506cbe76d1c6a7d60\logback-classic-1.2.11.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-to-slf4j\2.17.2\17dd0fae2747d9a28c67bc9534108823d2376b46\log4j-to-slf4j-2.17.2.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.slf4j\jul-to-slf4j\1.7.36\ed46d81cef9c412a88caef405b58f93a678ff2ca\jul-to-slf4j-1.7.36.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jcl\5.3.25\2e65a986dc7f98b40faed8df1d50db77c0b96c61\spring-jcl-5.3.25.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-core\1.2.11\a01230df5ca5c34540cdaa3ad5efb012f1f1f792\logback-core-1.2.11.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.slf4j\slf4j-api\1.7.36\6c62681a2f655b49963a5983b8b0950a6120ae14\slf4j-api-1.7.36.jar;C:\Users\User\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.17.2\f42d6afa111b4dec5d2aea0fe2197240749a4ea6\log4j-api-2.17.2.jar hello.servlet.ServletApplication OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release. . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.9) 2023-03-10 21:21:23.566 INFO 20752 --- [ main] hello.servlet.ServletApplication : Starting ServletApplication using Java 17.0.2 on LAPTOP-O321EMIC with PID 20752 (C:\Users\User\source\BackEnd\study\스프링MVC1\servlet\servlet\build\classes\java\main started by User in C:\Users\User\source\BackEnd\study\스프링MVC1\servlet\servlet) 2023-03-10 21:21:23.569 INFO 20752 --- [ main] hello.servlet.ServletApplication : No active profile set, falling back to 1 default profile: "default" 2023-03-10 21:21:24.462 INFO 20752 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2023-03-10 21:21:24.472 INFO 20752 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2023-03-10 21:21:24.472 INFO 20752 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.71] 2023-03-10 21:21:24.743 INFO 20752 --- [ main] org.apache.jasper.servlet.TldScanner : At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 2023-03-10 21:21:24.758 INFO 20752 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2023-03-10 21:21:24.758 INFO 20752 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1120 ms 2023-03-10 21:21:24.965 INFO 20752 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: ServletContext resource [/index.html] 2023-03-10 21:21:25.085 INFO 20752 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2023-03-10 21:21:25.094 INFO 20752 --- [ main] hello.servlet.ServletApplication : Started ServletApplication in 1.889 seconds (JVM running for 2.506) 2023-03-10 21:21:37.051 DEBUG 20752 --- [nio-8080-exec-1] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [0] 2023-03-10 21:21:37.051 DEBUG 20752 --- [nio-8080-exec-1] o.a.coyote.http11.Http11InputBuffer : Received [GET /servlet-mvc/members/new-form HTTP/1.1 Host: localhost:8080 Connection: keep-alive sec-ch-ua: "Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111" sec-ch-ua-mobile: ?0 sec-ch-ua-platform: "Windows" Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Sec-Fetch-Site: same-origin Sec-Fetch-Mode: navigate Sec-Fetch-User: ?1 Sec-Fetch-Dest: document Referer: http://localhost:8080/index.html Accept-Encoding: gzip, deflate, br Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7 Cookie: JSESSIONID=E3785888BB25462DB7B183BFA52FDD63 ] 2023-03-10 21:21:37.079 INFO 20752 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2023-03-10 21:21:37.079 INFO 20752 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2023-03-10 21:21:37.080 INFO 20752 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms 2023-03-10 21:21:37.174 DEBUG 20752 --- [nio-8080-exec-1] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [809] 2023-03-10 21:21:37.174 DEBUG 20752 --- [nio-8080-exec-1] o.a.coyote.http11.Http11InputBuffer : Received [] 2023-03-10 21:21:37.174 DEBUG 20752 --- [nio-8080-exec-1] o.apache.coyote.http11.Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@48295e2e:org.apache.tomcat.util.net.NioChannel@3716c58c:java.nio.channels.SocketChannel[connected local=/[0:0:0:0:0:0:0:1]:8080 remote=/[0:0:0:0:0:0:0:1]:57719]], Status in: [OPEN_READ], State out: [OPEN] build.gradleplugins { id 'java' id 'war' id 'org.springframework.boot' version '2.7.9' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'hello' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' //JSP implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl' //JSP compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() }
-
미해결코딩테스트 [ ALL IN ONE ]
문의드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.설명 하실떄 사용하는 파이썬 프로그램 명은 어떤건 가요? 저는 파이참을 사용중인데 하나씩 재생하는데? 조금 불편함이있어 노씨님 프로그램으로 사용해보고 싶어 문의 드립니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
실무에서 form 태그를 많이 사용하나요?
사실 이 강의와 큰 연관이 없는 것 같은 질문이긴 한데 너무 궁금해서요 ㅠㅠ클라이언트에서 상품 등록처럼 무언가 입력해서 서버로 보낼 때 form 태그를 많이 사용하나요?아니면 form 태그를 사용하지 않고 자바 스크립트로 하나씩 value를 읽어와서 json으로 만들어서 보내는 경우가 많나요?전자의 경우 서버에서는 @ModelAttribute를 사용할 테고 후자의 경우 서버에서 @RequestBody를 사용할 텐데 어떤 경우가 많나요?결국엔 둘 다 동작은 똑같이 할 것 같은데 어떠한 큰 차이가 있나요? 아니면 비슷하나요?클라이언트 관련 질문이라 강의와 연관이 없어서 답변을 못 받을 수도 있을 것 같긴 한데 너무 궁금합니다 ㅠㅠㅠ
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
6:58초에서 log로 왜 proxy가 찍히는건지 잘 모르겠습니다..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]잘 이해가 안되어 질문 남깁니다. test에 있는 itemRepository는 bean으로 Config 파일을 통해서 주입시킨 JpaRepository 객체가 autowired 통해서 들어왔는데, 왜 프록시 객체가 로그로 찍히나요?repository의 프록시는 서비스 레이어 넘기기 전, 예외 변경기능만 하는 것 아닌가요? itemRepository에 주입된 객체가 왜 repository의 프록시 객체인지가 궁금합니다.. save()같은 repository안의 메서드에서 예외가 발생하여 service로 넘어갈때 프록시 객체가 적용되어야 하는것 아닌가요?헷갈려서 질문남깁니다..감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의 중에 등장한 구글 확장프로그램 이름 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]View 환경설정 강의에서 3분 45초에 공식 문서를 볼 때 오른쪽 위에 등장하는 구글 확장 프로그램 이름이 어떻게 되나요?