묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
3-4 수치형 - 민맥스 스케일링
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요 # 수치형 - 민맥스 스케일링 cols = ['age', 'fnlwgt', 'education.num', 'capital.gain', 'capital.loss', 'hours.per.week'] from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() n_train[cols] = scaler.fit_transform(n_train[cols]) n_test[cols] = scaler.transform(n_test[cols])KeyError: "None of [Index(['age', 'fnlwgt', 'education.num', 'capital.gain', 'capital.loss',\n 'hours.per.week'],\n dtype='object')] are in the [columns]"수치형 - 민맥스 스케일링 부분이에서 이러한 에러가 뜹니다..ㅜㅜ해결 방법이 궁금합니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
MyBatis나 Jpa를 사용했을 때, 커넥션이 커넥션 풀로 반환되는 시점 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 영한님.이번 강의를 들으면서 실제 MyBatis나 JPA를 사용했을 때커넥션이 커넥션 풀로반환되는 시점이 궁금했습니다.GPT에게 물어본 결과로는,트랜잭션 단위로 커넥션을 커넥션 풀로 반환한다는 답변을 받았습니다.예를들어 트랜잭션 1에서 findById(), findByUsername()을 호출한다면 트랜잭션 1에서 획득한 커넥션 1을 가지고findById()에 의한 select 쿼리를 호출 후커넥션1을 반환하지 않고그대로 유지하다가 findByUsername()으로 두 번째 select 쿼리를 호출한다는 답변을 받았습니다.이부분이 맞는지 질문 드리고 싶습니다.
-
미해결김영한의 실전 자바 - 중급 1편
인스턴스 간 참조관계
public class InnerOuterMain { public static void main(String[] args) { InnerOuter outer = new InnerOuter(); InnerOuter.Inner inner = outer.new Inner(); } }내부 클래스에 대한 인스턴스는 바깥 클래스에 대한 인스턴스를 가지고 있습니다. 그렇지만 바깥 클래스의 인스턴스는 내부 클래스의 인스턴스를 가지고 있지 않은게 맞나요? 바깥 클래스인 InnerOuter 내에 메서드를 만들고, 내부 클래스가 가진 변수에 접근하는 코드를 작성하니 cannot find symbol이 뜨긴 했습니다.
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
kubectl
[ 무게감 있게 설치하는 방법 2/3 ] - kubelet, kubeadm, kubectl 패키지 설치 과정 중 발생한 문제 아래 캡쳐본과 같이 "sudo yum install -y kubelet-1.27.1-0.x86_64 kubeadm-1.27.1-0.x86_64 kubectl-1.27.1-0.x86_64 --disableexcludes=kubernetes" 입력 시 다음과 같은 에러가 발생하는데 구글링을 해봐도 잘 이해가 되지 않습니다. 조언주시면 감사하겠습니다 !
-
미해결[2024 업데이트] UX/UI 시작하기 : Figma 입문 (Inflearn Original)
오브젝트는 뭘 눌러야 생기는거죠?
오브젝트 생성이 안되는데 버튼 어떤걸 눌러야생기는 걸까요? 저렇게 색상 구분도 하고싶은데어떻게 하신걸까요????
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
다음과 같은 에러들이 발생합니다.
강의 잘 보고 있습니다.다음과 같은 에러가 발생하여 문의드립니다.혹시 추가로 설치가 필요한 것들이 있는 것일까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
애노테이션에 대해서 전반적인 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]애노테이션에 대해서 @xxx 을 붙이면 이런기능이 된다. 이렇게만 알고 있는데요, 실제로 컴파일할 때 어떻게 이루어지는지 조금더 자세한 설명같은게 없을까요? https://developer-youn.tistory.com/122 위의 링크에 있는 정보보다 조금더 deep한 내용이었으면 좋겠습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA repository질문입니다.
JPA repository를 public interface MemberRepository extends JpaRepository<Member, Long> { } 이런식으로 사용하면 기본적인 crud가 된다고 구글링하다가 알게됐습니다.아직 선생님 수업을 다 듣지 못했지만 이런식으로 사용하지않는걸로아는데 save() 레코드 저장 (insert, update) findOne() primary key로 레코드 한건 찾기 findAll() 전체 레코드 불러오기. 정렬(sort), 페이징(pageable) 가능 count() 레코드 갯수 delete() 레코드 삭제이렇게사용하면 em.persist 처럼 사용안하고 그냥 save만 불러서 쓸수이ㅣㅆ는거아닌가요?제가 아직 잘몰라서 ㅠㅠ햇갈립니다
-
해결됨Next + React Query로 SNS 서비스 만들기
로그인을 서버액션으로 구현해봤는데 궁금한게 있습니다.
로그인을 클라이언트 컴포넌트에서 서버액션을 통해 구현해봤는데, 궁금한게 생겨서 질문 드립니다.로그인 모달의 코드입니다. "use client"; import style from "@/app/(beforelogin)/_component/login.module.css"; import { ChangeEventHandler, FormEventHandler, useState } from "react"; import { redirect, useRouter } from "next/navigation"; import { signIn } from "next-auth/react"; import { useFormState, useFormStatus } from "react-dom"; import onSubmit from "../_lib/signin"; import BackButton from "./BackButton"; function showMessage(messasge: string | null | undefined) { if (messasge === "no_id") { return "아이디를 입력하세요."; } if (messasge === "no_password") { return "비밀번호를 입력하세요."; } return ""; } export default function LoginModal() { const [state, formAction] = useFormState(onSubmit, { message: null }); const { pending } = useFormStatus(); return ( <div className={style.modalBackground}> <div className={style.modal}> <div className={style.modalHeader}> <BackButton /> <div>로그인하세요.</div> </div> <form action={formAction}> <div className={style.modalBody}> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="id"> 아이디 </label> <input id="id" name="id" className={style.input} type="text" placeholder="" /> </div> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="password"> 비밀번호 </label> <input id="password" name="password" className={style.input} type="password" placeholder="" /> </div> </div> <div className={style.message}>{showMessage(state?.message)}</div> <div className={style.modalFooter}> <button className={style.actionButton} disabled={pending}> 로그인하기 </button> </div> </form> </div> </div> ); } 아래는 signin.ts 의 코드입니다."use server"; import { redirect } from "next/navigation"; import { signIn } from "@/auth"; const onSubmit = async (prevState: any, formData: FormData) => { if (!formData.get("id") || !(formData.get("id") as string)?.trim()) { return { message: "no_id" }; } if ( !formData.get("password") || !(formData.get("password") as string)?.trim() ) { return { message: "no_password" }; } let shouldRedirect = false; try { const response = await signIn("credentials", { username: formData.get("id"), password: formData.get("password"), redirect: false, }); console.log(response.status, "1"); console.log(response, "2"); shouldRedirect = true; } catch (err) { console.error(err); return { message: null }; } if (shouldRedirect) { redirect("/home"); // try/catch문 안에서 X } }; export default onSubmit; 이렇게 했을 때에, 콘솔이 이렇게 찍힙니다. 1. response가 http://localhost:3000/i/flow/login이렇게 날라오고, status는 그에 따라 undefined 입니다.응답이 이렇게 오면 response에 따른 status를 모르는데 에러처리를 어떻게 해야하나요 ?? 아래는 회원가입을 똑같이 서버액션으로 구현했을때에, signup.ts의 코드입니다."use server"; import { redirect } from "next/navigation"; import { signIn } from "@/auth"; const onSubmit = async (prevState: any, formData: FormData) => { if (!formData.get("id") || !(formData.get("id") as string)?.trim()) { return { message: "no_id" }; } if (!formData.get("name") || !(formData.get("name") as string)?.trim()) { return { message: "no_name" }; } if ( !formData.get("password") || !(formData.get("password") as string)?.trim() ) { return { message: "no_password" }; } if (!formData.get("image")) { return { message: "no_image" }; } let shouldRedirect = false; try { const response = await fetch( `${process.env.NEXT_PUBLIC_BASE_URL}/api/users`, { method: "post", body: formData, credentials: "include", } ); console.log(response.status, "1"); if (response.status === 403) { return { message: "user_exists" }; } console.log(await response.json(), "2"); console.log(response, "3"); shouldRedirect = true; /*await signIn("credentials", { username: formData.get("id"), password: formData.get("password"), redirect: false, });*/ } catch (err) { console.error(err); return { message: null }; } if (shouldRedirect) { redirect("/home"); // try/catch문 안에서 X } }; export default onSubmit; 이 때에, console.log 의 결과입니다.response 응답 객체에서 await response.json()을 취했는데, OK로 나오는 이유가 궁금합니다. 로그인 구현에서 redirect를 false로 하면 client측에서 라우팅하는 것이고, true로 하면 서버쪽에서 리다이렉트 하는 것이라고 알고 있습니다.그런데 서버 액션으로 api 호출을 하는 것인데,redirect를 false로 하고 아래 redirect를 해주어도 redirect가 되는 것인지 궁금합니다. 그리고 redirect를 true로 하면이렇게 에러가 떠버립니다.서버액션으로 리다이렉트 시켜주는 것이라 생각해서 true옵션을 주었는데 에러가 왜 뜨는지 궁금합니다.바쁘실텐데 많은 질문 죄송합니다 ㅜㅜ
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
현재 스프링db2편 학습하는 중인데요
영상에선 itemservice-db파일 기존의 코드를 수정해서 사용하라고 하셔서 그렇게 했는데요거기에 깔려있는게 2.6.5입니다.id 'org.springframework.boot' version '2.6.5'근데 강의 자료에선 이제 3.0이상을 쓰라고 하셔서요이게 일단 거기 있는데로 2.65로 진행해도 되는건가요?아님 spring.io가서 3.0을 다시 깔아야하나요jpa까지 하다가 오류가 계속나서 처음부터 다시 시작하려고 하는데요일단 영상 그래도 2.6.5으로 진행하고 싶은데자료를 계속 보는데 전부 2.xx는 지원이 끊겨서 3.0으로 쓰라고 하셔서요진짜 2.xx다 빼고 3.0이상으로 전부 바꿔야 하나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-K insert 질문
큰돌님 안녕하십니까커뮤니티 찾아보니까 insert 함수 첫 번째 인자는 이터레이터 값이 들어가야 해서 begin() + '넣어줘야 할 위치' 가 들어가야 오류가 안 나고 정상 작동한다고 봤는데http://boj.kr/9fc8f9dd8de44b04b979a877da3962fd이렇게 해도 백준에서 맞다고 합니다. 또 Programiz(c++ online Compiler)로 코딩하는데 오류 안 나고 잘 작동해서 해서 질문드립니다.
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
람다식이 이해가 안됩니다.
멤버서비스 테스트에서 예외가 발생했을때 사용한 람다식이 해석이 안됩니다. 무슨 의미 인가요?assertThatThrownBy(()-> member service.accountTransfer(members.getMemberId(), memberEx.getMemberId(), 2000) .isInstanceOf(IllegalStatementException.class);위 람다식은 어떻게 해석해야 하나요?
-
미해결[2024 업데이트] UX/UI 시작하기 : Figma 입문 (Inflearn Original)
도대체 예제 파일이 어딨죠?
보면서 따라 하고싶은데 다운로드 버튼은 어디에도 보이지 않네요......
-
해결됨개발자를 위한 쉬운 도커
WSL 도커 컨테이너 개발 오류
도커 데스크탑 대신 wsl에 도커 엔진을 설치해서 사용중입니다.윈도우에서 devcontainer 설정을 하고 개발 컨테이너 폴더 열기를 했을 때 아래와 같이 에러가 발생하는데, 혹시 path를 C:/Users/... 대신 /mnt/c/Users/...로 수정할 수 있는 방법이 있을까요?ERROR: unable to prepare context: path "c:Usersc...기타경로" not found
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
user 내장 시 ref 필드 필요성
안녕하세요 !유익한 강의 감사합니다. Blog.js에서 BlogSchema를 보면,user를 내장하였는데,_id에 ref 필드가 그대로 있더라구요.사실 populate 하지 않을 꺼면 ref필드는 삭제해도 되지 않을까요?만약 내장하려는 문서에 ref가 필요한 케이스가 있다면 어떤 게 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
세팅 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. https://drive.google.com/file/d/13uBXfVIbf-eYNNi0rG_paNywzx65M4CI/view?usp=drive_link 시작 초기에 build.gradle이랑 jpashopapplication을 돌렸을 때, Exception java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.reflection.ReflectionCache [in thread "Daemon worker"] Could not create an instance of type ijmapper_2lopa9aslcq9lq2pwmglefwkb.> Could not initialize class org.codehaus.groovy.runtime.InvokerHelper* Try:Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. 이런 에러가 2개떠서 더이상 진행하지 못하는 상황입니다. 혹시 해결법 알 수 있을까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
데이터베이스 커넥션 및 세션 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 영한님.먼저 항상 좋은강의 잘 듣고 있습니다.최근에 이직을 하게 되면서 여유가 생겨영한님 강의로 다시 학습을 시작하고 있는데요,결론적으로 먼저 데이터베이스에 관한 지식(커넥션 , 세션 뿐만 아니라 성능 튜닝 및 설계) 을 위해 추천해주실만한 책이 있을까요?당연히 영한님 관계형 데이터베이스 강의가 나온다면 너무 좋겠지만,직금은 자바 강의만으로 바쁘신거 같아서요!왜냐하면 저는 springboot 시작 시점에 db connection pool을 채울 때,하나의 db session만을 가지고 여러 db connection을 만들어 connection pool을 채울것이라고 생각했습니다.(db session도 web session처럼 인증을 유지하는 논리적인 연결 개념이라고 이해했고, 어차피 동일한 username password를 사용하니깐요) 그렇지만 검색 후 진짜 영한님 설명처럼각각의 connection은 별도의 db session으로 맺어지는것으로 나와있었습니다.그래서 제가 아직 관계형 데이터베이스 관련 지식이 많이 부족하다는 생각이드는데요,혹시 추천해주실만한 학습 방법(책을 포함한) 이 있으실지 궁금합니다!(혹은 1월 meet up에서 말씀해주신 것 처럼 올해 까진 관계형 데이터베이스 강의가 나올지도 궁금합니다!)감사합니다.!
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
37:24 오류질문드립니다
안녕하세요! 교수님! 강의 잘 듣고있습니다!37:24까지 강의를 듣고 빌드 후Ctrl+F5키를 눌러서 엔진 실행하기전에 이런 메세지가 나오며,실제 게임 실행할때도 움직이지가 않습니다 ㅜ 저 경로에서 찾을수없는것같은데.. 어떻게 해결하면될까요..? 에디터 5.1버전이고 코드 똑같이 복붙해도 안됩니다..
-
해결됨Next + React Query로 SNS 서비스 만들기
서버 컴포넌트에서 server action 사용 질문이 있습니다.
서버 컴포넌트에서 server actions 사용 중 네트워크 탭에서 응답이 안담기는 문제가 있어서 질문 드립니다.강의에 나와있는대로 코드를 따라했는데 뭐가 문제인지 잘 모르겠습니다.아래는 signupModal의 코드입니다.import style from "./signup.module.css"; import onSubmit from "../_lib/signup"; import BackButton from "@/app/(beforelogin)/_component/BackButton"; import { useFormState, useFormStatus } from "react-dom"; import { redirect } from "next/navigation"; function showMessage(messasge: string | null | undefined) { if (messasge === "no_id") { return "아이디를 입력하세요."; } if (messasge === "no_name") { return "닉네임을 입력하세요."; } if (messasge === "no_password") { return "비밀번호를 입력하세요."; } if (messasge === "no_image") { return "이미지를 업로드하세요."; } if (messasge === "user_exists") { return "이미 사용 중인 아이디입니다."; } return ""; } export default function SignupModal() { //const [state, formAction] = useFormState(onSubmit, { message: null }); //const { pending } = useFormStatus(); const formAction = async (formData: any) => { "use server"; let shouldRedirect = false; try { const response = await fetch( `${process.env.NEXT_PUBLIC_BASE_URL}/api/users`, { method: "post", body: formData, credentials: "include", } ); console.log(response.status); console.log(await response.json(), "abc"); if (response.status === 403) { console.log("???"); return { message: "user_exists" }; } shouldRedirect = true; } catch (err) { console.log(err); } if (shouldRedirect) { redirect("/home"); // try/catch문 안에서 X } }; return ( <> <div className={style.modalBackground}> <div className={style.modal}> <div className={style.modalHeader}> <BackButton /> <div>계정을 생성하세요.</div> </div> <form action={formAction}> <div className={style.modalBody}> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="id"> 아이디 </label> <input id="id" name="id" className={style.input} type="text" placeholder="" required /> </div> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="name"> 닉네임 </label> <input id="name" name="name" className={style.input} type="text" placeholder="" required /> </div> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="password"> 비밀번호 </label> <input id="password" name="password" className={style.input} type="password" placeholder="" required /> </div> <div className={style.inputDiv}> <label className={style.inputLabel} htmlFor="image"> 프로필 </label> <input id="image" name="image" required className={style.input} type="file" accept="image/*" /> </div> </div> <div className={style.modalFooter}> <button type="submit" className={style.actionButton}> 가입하기 </button> </div> </form> </div> </div> </> ); } 아래는 핸들러 세팅입니다.http.post("/api/users", async ({ request }) => { console.log("회원가입"); return HttpResponse.text(JSON.stringify("user_exists"), { status: 403, }); // return HttpResponse.text(JSON.stringify("ok"), { // headers: { // "Set-Cookie": "connect.sid=msw-cookie;HttpOnly;Path=/;Max-Age=0", // }, // }); }),여기서 회원가입을 누를시에 console.log() 처리한 부분은 잘 찍히고 서버쪽에서 찍은 회원가입 콘솔도 잘 찍히는 모습입니다.네트워크탭에서 페이로드는 잘 담겼는데, 응답이 없습니다.회원가입 누를 때 콘솔이 찍히는 것으로 보아서 포트도 9090으로 제대로 열려있고, 403응답이 오는 것으로 보아 핸들러 쪽은 제대로 작동하는 것 같습니다.그리고 서버액션 쪽 콘솔 "???"가 찍히는 것으로 보아서 status도 403으로 잘 오는 것 같은데 리턴 메시지가 제대로 안되는 것인지 응답이 왜 없는 것인지 궁금합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
16분 servlet/members 404 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]package hello.servlet.web.servlet; import hello.servlet.domain.member.Member; import hello.servlet.domain.member.MemberRepository; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.List; @WebServlet(name = "memberListServlet", urlPatterns = "/servlet/members") public class MemberListServlet extends HttpServlet{ private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<Member> members = memberRepository.findAll(); System.out.println("members : "+members); response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter w = response.getWriter(); w.write("<html>"); w.write("<head>"); w.write(" <meta charset=\"UTF-8\">"); w.write(" <title>Title</title>"); w.write("</head>"); w.write("<body>"); w.write("<a href=\"/index.html\">메인</a>"); w.write("<table>"); w.write(" <thead>"); w.write(" <th>id</th>"); w.write(" <th>username</th>"); w.write(" <th>age</th>"); w.write(" </thead>"); w.write(" <tbody>"); for (Member member : members) { w.write("<tr>"); w.write(" <td>" + member.getId() + "</td>"); w.write(" <td>" + member.getUsername() + "</td>"); w.write(" <td>" + member.getAge() + "</td>"); w.write("</tr>"); } w.write(" </tbody>"); w.write("</table>"); w.write("</body>"); w.write("</html>"); } }servlet 주소의 new-form이나 save는 문제없이 잘 작동하는데, list를 출력하는 페이지에서 404 오류가 발생하여 질문 드립니다.