월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
컨트롤러와 서블릿의 차이점?
MVC 패턴을 사용하는 과정에서 @Controller과 서블릿의 차이점이 궁금합니다. 서블릿과 JSP에서는 비즈니스로직을 수행한 뒤 뷰 부분도 같이 실행했지만 MVC패턴을 활용한 부분에서는 비즈니스로직은 비즈니스로직만 뷰 관련 부분은 뷰 관련 부분에서만 실행하던데 그렇다면 @Controller와 서블릿의 차이점이 무엇인지가 궁금합니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
톰캣 서버가 안열립니다 그리고 RUN이 비활성화됩니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)아뇨3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]여기에 질문 내용을 남겨주세요."C:\Program Files\Java\jdk-17\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.3.1\lib\idea_rt.jar=54590:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.3.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\OWNER\OneDrive\바탕 화면\ton\servlet (2)\servlet\out\production\classes;C:\Users\OWNER\OneDrive\바탕 화면\ton\servlet (2)\servlet\out\production\resources;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-web\3.2.0\e609f839e7c2ff9c90bc75d7c05dbcbb19315319\spring-boot-starter-web-3.2.0.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-json\3.2.0\e831483c03433b987cc9c72f8ea67757f9865191\spring-boot-starter-json-3.2.0.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter\3.2.0\4d0cc70617a9febbbc6ad81562e930d93f7b2665\spring-boot-starter-3.2.0.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.springframework\spring-webmvc\6.1.1\76c4408b67828aa9656f5955dc2c1c4c0e1b6da3\spring-webmvc-6.1.1.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.springframework\spring-web\6.1.1\4eeb5f2edb9f04d00357edcc56b59d3874b3b453\spring-web-6.1.1.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jsr310\2.15.3\4a20a0e104931bfa72f24ef358c2eb63f1ef2aaf\jackson-datatype-jsr310-2.15.3.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.module\jackson-module-parameter-names\2.15.3\8d251b90c5358677e7d8161e0c2488e6f84f49da\jackson-module-parameter-names-2.15.3.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.datatype\jackson-datatype-jdk8\2.15.3\80158cb020c7bd4e4ba94d8d752a65729dc943b2\jackson-datatype-jdk8-2.15.3.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.15.3\a734bc2c47a9453c4efa772461a3aeb273c010d9\jackson-databind-2.15.3.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-autoconfigure\3.2.0\29b231378146bd6606e75389297f3a7d55476b87\spring-boot-autoconfigure-3.2.0.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot\3.2.0\4088ad23df91481bc7415cbfa068c423ccb7e54e\spring-boot-3.2.0.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-starter-logging\3.2.0\54998ab18f16e8d3a6e46c3d326f2de41c0b1ce0\spring-boot-starter-logging-3.2.0.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.springframework\spring-core\6.1.1\22d73bef97aff8a74a992716fe1aafc8f8a8a68d\spring-core-6.1.1.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.yaml\snakeyaml\2.2\3af797a25458550a16bf89acc8e4ab2b7f2bfce0\snakeyaml-2.2.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.springframework\spring-context\6.1.1\610d7dd3f62d22d42b993a201e3110649b68e17\spring-context-6.1.1.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aop\6.1.1\66cb0e08770d4523ae3976b0b791cde767466c61\spring-aop-6.1.1.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.springframework\spring-beans\6.1.1\6af88af13193acf2197bc0a42f0ec4e5c481bfe9\spring-beans-6.1.1.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.springframework\spring-expression\6.1.1\807700a64cb055ed85af189d1fa0702bc0d2efba\spring-expression-6.1.1.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-observation\1.12.0\4f4981faa7968441d0092107df9b750e057374af\micrometer-observation-1.12.0.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.15.3\79baf4e605eb3bbb60b1c475d44a7aecceea1d60\jackson-annotations-2.15.3.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.15.3\60d600567c1862840397bf9ff5a92398edc5797b\jackson-core-2.15.3.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-classic\1.4.11\54450c0c783e896a1a6d88c043bd2f1daba1c382\logback-classic-1.4.11.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-to-slf4j\2.21.1\d77b2ba81711ed596cd797cc2b5b5bd7409d841c\log4j-to-slf4j-2.21.1.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.slf4j\jul-to-slf4j\2.0.9\9ef7c70b248185845f013f49a33ff9ca65b7975\jul-to-slf4j-2.0.9.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.springframework\spring-jcl\6.1.1\69ebbf7bad707d34e81d00213c756bc6fcc31dd7\spring-jcl-6.1.1.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\io.micrometer\micrometer-commons\1.12.0\2436654d439bd4ff6aad6419519357be8ba4f0d\micrometer-commons-1.12.0.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\ch.qos.logback\logback-core\1.4.11\2f9f280219a9922a74200eaf7138c4c17fb87c0f\logback-core-1.4.11.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.slf4j\slf4j-api\2.0.9\7cf2726fdcfbc8610f9a71fb3ed639871f315340\slf4j-api-2.0.9.jar;C:\Users\OWNER\.gradle\caches\modules-2\files-2.1\org.apache.logging.log4j\log4j-api\2.21.1\74c65e87b9ce1694a01524e192d7be989ba70486\log4j-api-2.21.1.jar" hello.servlet.ServletApplication . ____ _ /\\ / ___'_ __ (_)_ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.2.0)2023-12-20T03:30:48.422+09:00 INFO 16572 --- [ main] hello.servlet.ServletApplication : Starting ServletApplication using Java 17.0.9 with PID 16572 (C:\Users\OWNER\OneDrive\바탕 화면\ton\servlet (2)\servlet\out\production\classes started by OWNER in C:\Users\OWNER\OneDrive\바탕 화면\ton\servlet (2)\servlet)2023-12-20T03:30:48.426+09:00 INFO 16572 --- [ main] hello.servlet.ServletApplication : No active profile set, falling back to 1 default profile: "default"2023-12-20T03:30:49.081+09:00 WARN 16572 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Instantiation of supplied bean failed2023-12-20T03:30:49.091+09:00 INFO 16572 --- [ main] .s.b.a.l.ConditionEvaluationReportLogger : Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.2023-12-20T03:30:49.113+09:00 ERROR 16572 --- [ main] o.s.boot.SpringApplication : Application run failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Instantiation of supplied bean failed 서버가 안열립니다 그리고 run이 HelloServerlet을 실행시킬때 RUN이 비활성화 됩니다..
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
JSP 문의입니다.
안녕하세요. JSP 좀 더 연습해보려고 따로 해보는데,Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Tue Dec 19 12:10:12 KST 2023There was an unexpected error (type=Not Found, status=404). 와 같은 오류가 발생하여 문의드립니다.http://localhost:8081/ 에서는 작동이 잘 되는데http://localhost:8081/test1 하고http://localhost:8081/sub/test2위 2개에서 위 오류가 발생합니다.dependencies도 3.0 버전에 맞춰 설정까지 다 했는데도 안되어서 문의드립니다ㅠㅠ실행은 Ex05JspUseApplication로 하면 됩니다. 해당 프로젝트를 압축하여 구글 드라이브에 올렸습니다https://drive.google.com/file/d/1p57CC71yQg-b3f1JYFOAUkdkdPD0rXVg/view?usp=sharing
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
주소창에 주소를 쓰고 엔터를 누르면 항상 GET 요청 메시지로 보내나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]네이버나 구글에서 검색하는 것이 아니라, 웹 브라우저의 주소창에서 바로 특정 사이트의 URL을 써서 엔터 누르면 항상 GET 방식으로 요청 메시지를 보내나요? 아니면 이것도 POST 등의 다른 방식으로 구현할 수 있나요?
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ObjectMapper 출력
안녕하세요.강의와 똑같이 코드를 작성 후, jackson 라이브러리 또한 확인했습니다. HelloData 코드도 작성 후 롬복도 추가해 놓았습니다.postman으로 요청시에HelloData helloData = objectMapper.readValue(messageBody, HelloData.class); System.out.println("helloData.username = " + helloData.getUsername()); System.out.println("helloData.age = " + helloData.getAge()); response.getWriter().write("ok"); 이 부분이 출력되지 않아서 질문 남깁니다.오류 메시지는 없습니다.boot 버전은 3.2.0 입니다. 감사합니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Spring을 이용해 뒤로가기 중복 제출을 막을수도있나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]PRG를 이용해서, 불필요한 post요청을 방지하는 내용이 있었는데, 상품을 추가하고 뒤로가기를 누르게되면, 다시 제출했던 폼이 그대로 남아있어서 "추가 -> 뒤로가기 ->추가" 계속 반복적으로 작성할 수 있잖아요?이런거는 spring으로 방지 못하고, javascript로 처리해줘야하나요
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의에서 HttpServletRequest 과 HttpServletResponse객체 관련 질문있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의에서HttpServletRequestHttpServletResponse요청 마다 해당 객체가 생성이 된다고 했는데 1) hashcode로 찍었을때의 메모리 번지수가 달라야하는데 같은 값이 나옵니다 왜 그런가요?2)또 1번의 연장선에서 해당 부분에 대해서 쓰레드가 한개가 사용이 될때에는 객체가 공유되지만 ex)Clinet1)Request-> /hello Reponse (해당 요청이 끝난뒤)HttpServletRequest -> hashcode(113)HttpServletResponse -> hashcode(114)Client2) Reuqest -> /hello Response HttpServletRequest -> hashcode(113)HttpServletResponse -> hashcode(114)이런식으로 한개의 쓰레드가 사용이 될때에는 HttpServletRequest가 같은 hashcode 를 가지지만 Clinet1)Request-> /hello Reponse (해당 요청 처리중)HttpServletRequest -> hashcode(113)HttpServletResponse -> hashcode(114)Client2) Reuqest -> /hello Response HttpServletRequest -> hashcode(115)HttpServletResponse -> hashcode(116)이런식으로 다르게 나오던데 그이유가 뭔지 궁금합니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
온라인 결제 시스템에서 중복 결제 방지 방법은 어떻게 구현하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아마 조금은요)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. "PRG Post/Redirect/Get" 강의를 듣던 중 궁금한 것이 있어 질문을 드립니다.온라인 쇼핑몰의 백엔드 시스템을 개발하는 과정에서 한 가지 중요한 문제에 대해 의견을 구하고 싶습니다. 상황은 다음과 같습니다:고객이 장바구니에 있는 물품을 구매하는 과정에서, 서버로의 결제 요청은 성공적으로 처리되었으나, 네트워크 문제나 기타 이유로 인해 결제 성공 응답을 받지 못하는 경우가 있습니다. 이로 인해 고객은 결제가 실패한 것으로 오해하고 같은 결제를 다시 시도할 수 있습니다. 이는 원치 않는 중복 결제로 이어질 수 있는데, 이러한 상황을 효과적으로 방지하고 관리할 수 있는 방법이 있을까요?
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Request의 getLocale()
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]Request 객체의 getLocale()은 Accept-Language에서의 가장 높은 우선순위를 뽑는다고 이해했습니다. getLocale()의 정확한 의미가 궁금합니다.클라이언트가 보낸 요청 메시지의 Accept-Language에 써진 언어인 동시에, 서버에서 지원하는 언어들 중 가장 우선순위 높은 걸 뽑는 건가요?아니면 서버에서 지원을 하는 언어든 아니든, 요청 메시지의 Accept-Language에서 가장 우선순위가 높게 설정된 것을 선택하는 건가요? +) getLocale() 같은 건 스프링 공식 문서 가면 자세한 설명을 볼 수 있을까요? 자바 공식 문서랑 다르게 메서드 설명 찾기가 어렵네요..
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
런 버튼 비활성화
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]jdk 17, 스프링부터 3.2 모두 강의자료에 나온대로 설치 후 진행하는데, 동작확인 부분에서 실행(run)버튼이 안나옵니다.삭제 후 재설치 해도 안되는데뭐가 문제일까요? 무료버전입니다.
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
DTO를 작성할 때 lombok 어노테이션 대신 record를 사용해도 되나요?
이번에 자바를 공부하면서 record에 대해서 알게 되었는데요DTO를 작성할 때 사용할 목적으로 만들어졌다고 하더라구요그렇다면 lombok 어노테이션 대신 record를 사용해도 되는건가요?spring에서 사용해도 괜찮은지 모르겠어서 질문드려요
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
인텔리제이 무료 버전에서의 무한 로딩은 정상인가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]다른 분들 질문을 보니 인텔리제이 무료 버전에선 서버를 종료하면 에러 뜨는 게 정상이라고 하더라고요.서버를 실행하는 동안 무한 로딩 현상이 뜨는 것도 무료 버전에선 당연히 있는 현상이라고 이해하면 될까요?
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
urlPatterns의 에러에 대한 질문
강의를 듣다가 갑자기 에러가 발생하여 유심히 봤다가 urlPatterns의 매핑이 잘못 되었다는 오류가 발생했습니다. 오류는 해결하였지만, 갑자기 드는 생각이 urlPatterns의 / 의 유무인데, URL 매핑도 서블릿이 알아서 해결해주는 것 같은데, 정확하게 어떻게 스스로 URL 매핑을 하는지 궁금합니다.
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
GET 요청에서 동일한 파라미터 이름에 여러 값을 전달하는 올바른 방법은 무엇인가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, "HTTP 요청 데이터 - GET 쿼리 파라미터" 강의를 듣다가 GET 요청에서 동일한 파라미터 이름에 여러 값을 전달하는 방법에 대해 궁금증이 생겨 질문을 올립니다. 특히, 실무에서 흔히 사용되는 방법과 그 이유에 대해 알고 싶습니다.예를 들어, 같은 파라미터에 다수의 값을 전달하는 방식으로 다음 두 가지 예시를 봤습니다:http://server/action?id=a&id=bhttp://server/action?id=a,b이 스택오버플로우 포스트에 따르면 이와 관련된 표준이 명확히 정의되어 있지 않다고 언급되어 있습니다. 이에 실무에서는 어떤 방식을 주로 사용하는지, 그리고 그러한 선택의 이유가 무엇인지 궁금합니다.감사합니다.
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
HTTP 프로토콜 질문
정적, 동적 리소스, HTTP API 3가지 방식 모두 HTTP 프로토콜 기반의 통신을 하나요? 아니면 HTTP API 방식만 HTTP 프로토콜로 통신을 하는건가요?
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
WAS의 스레드풀은 초기 스레드 수가 0이 아닌 다른 숫자인가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]스레드풀의 장점에 써진 다음 내용에 대해 추가적으로 궁금한 점이 있습니다. '쓰레드가 미리 생성되어 있으므로, 쓰레드를 생성하고 종료하는 비용(CPU)이 절약되고, 응답 시간이 빠르다.' WAS에서의 스레드풀은 HTTP 요청이 오기도 전에, 미리 스레드들을 최대치만큼 만들어 두나요? 자바 문법에선 Executors.newCachedThreadPool()Executors.newFixedThreadPool(int n)두 메서드 모두 초기 스레드 수는 0으로 알고 있습니다. 작업이 생길 때마다 스레드를 생성시키는 거로 알고 있는데, WAS에서의 스레드풀은 요청이 오기도 전부터 스레드를 미리 만들어 두나요? 즉, 초기 스레드 수가 0이 아닌 다른 숫자인가요?
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
요청마다 스레드 생성할 시, 같은 프로세스 내의 스레드인가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]요청마다 스레드를 생성하는 이 그림에선 2개의 스레드가 서로 다른 요청1, 2를 처리하고 있잖아요? 근데 이 두 스레드는 하나의 프로세스 내에 있는 건가요? 아니면 서로 다른 프로세스에 있는 스레드들인가요?만약 하나의 프로세스 내에 2개의 스레드가 있는 경우라면, 스레드1에서 오류가 나면 스레드2도 영향을 받는다고 운영체제 공부하면서 배운 것 같은데 그럼 위 그림은 서로 다른 프로세스에서 생성된 스레드라고 생각하면 될까요? 그런데 스레드가 생성될 때마다 프로세스가 생성된다면 프로세스가 수십 수백 개가 될 수도 있다는 말인데 이건 말이 안 되는 것 같기도 해서.. 헷갈리네요. (학습 자료에 나온 요청마다 스레드 생성의 장점으로 '하나의 쓰레드가 지연되어도, 나머지 쓰레드는 정상 동작한다.'라는 말이 있어서 갑자기 궁금해졌네요. 물론 지연이랑 오류랑 다른 거긴 하지만요)
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
CSR과 SSR이 아직 확실히 이해되지 않아 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]위의 두 가지 상황, '정적 리소스를 제공하는 상황'과 '동적으로 HTML을 생성해서 제공하는 상황' 모두 SSR인가요? 그럼 이 세 가지 경우엔 어떤가요?'웹 클라이언트 to 서버 상황'은 CSR인 것 같기도 하고..'앱 클라이언트 to 서버 상황'도 CSR..? 같은데 확신이 안 드네요.'서버 to 서버'는 CSR과 SSR 중 뭐에 해당하나요? 결론적으로 다섯 가지 상황 각각이 CSR과 SSR 중 무엇에 해당하는지 궁금합니다. 제가 잘못 이해하고 있는 부분이 있을지도 몰라서 질문드립니다.
- 미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
DTO 질문입니다.!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의 잘 보고있습니다, ModelAttribute로 받은 HelloData객체를 받을 때 url의 username과 DTO 안에 username이 같아야 하나요?
- 해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
콘솔 한글 깨짐
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)아니요2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)아니요3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요.다른 프로젝트를 실행하면 콘솔에 한글이 안 깨지는데 해당 강의 대로 진행한 프로젝트는 한글이 깨집니다.https://velog.io/@hsjung2015/Intellij-or-Eclipse%EC%BD%98%EC%86%94%EC%B0%BD%EC%97%90-%ED%95%9C%EA%B8%80%EC%9D%B4-%EA%B9%A8%EC%A0%B8%EC%84%9C-%EB%82%98%EC%98%AC%EB%95%8C-%EC%B5%9C%ED%9B%84%EC%9D%98-%EB%B0%A9%EB%B2%95해당 사이트에 있는 3번까지 진행 했는데 한글이 깨지네여 ㅠㅠ package hello.servlet.basic.request; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet(name = "requestHeaderServlet", urlPatterns = "/request-header") public class RequestHeaderServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { printStartLine(request); printHeaderUtils(request); printEtc(request); response.getWriter().write("ok"); } private static void printStartLine(HttpServletRequest request) { System.out.println("--- REQUEST-LINE - start ---"); System.out.println("request.getMethod() = " + request.getMethod()); System.out.println("request.getProtocol() = " + request.getProtocol()); System.out.println("request.getScheme() = " + request.getScheme()); System.out.println("request.getRequestURL() = " + request.getRequestURL()); System.out.println("request.getRequestURI() = " + request.getRequestURI()); System.out.println("request.getQueryString() = " + request.getQueryString()); System.out.println("request.isSecure() = " + request.isSecure()); //https 사용 유뮤 System.out.println("--- REQUEST-LINE - end ---"); System.out.println(); } private void printHeaderUtils(HttpServletRequest request) { System.out.println("--- Header 편의 조회 start ---"); System.out.println("[Host 편의 조회]"); System.out.println("request.getServerName() = " + request.getServerName()); //Host 헤더 System.out.println("request.getServerPort() = " + request.getServerPort()); //Host 헤더 System.out.println(); System.out.println("[Accept-Language 편의 조회]"); request.getLocales().asIterator() .forEachRemaining(locale -> System.out.println("locale = " + locale)); System.out.println("request.getLocale() = " + request.getLocale()); System.out.println(); System.out.println("[cookie 편의 조회]"); if (request.getCookies() != null) { for (Cookie cookie : request.getCookies()) { System.out.println(cookie.getName() + ": " + cookie.getValue()); } } System.out.println(); System.out.println("[Content 편의 조회]"); System.out.println("request.getContentType() = " + request.getContentType()); System.out.println("request.getContentLength() = " + request.getContentLength()); System.out.println("request.getCharacterEncoding() = " + request.getCharacterEncoding()); System.out.println("--- Header 편의 조회 end ---"); System.out.println(); } private void printEtc(HttpServletRequest request) { System.out.println("--- 기타 조회 start ---"); System.out.println("[Remote 정보]"); System.out.println("request.getRemoteHost() = " + request.getRemoteHost()); // System.out.println("request.getRemoteAddr() = " + request.getRemoteAddr()); // System.out.println("request.getRemotePort() = " + request.getRemotePort()); // System.out.println(); System.out.println("[Local 정보]"); System.out.println("request.getLocalName() = " + request.getLocalName()); // System.out.println("request.getLocalAddr() = " + request.getLocalAddr()); // System.out.println("request.getLocalPort() = " + request.getLocalPort()); // System.out.println("--- 기타 조회 end ---"); System.out.println(); } }