묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
"서블릿 필터 - 인증 체크" 강의에서 질문있습니다.
강사님께서 설명해주신대로 LoginCheckFilter를 만들어서 적용해서 Chrome에서 실행해봤는데 localhost:8080/items를 입력해도 자동으로 localhost:8080 으로 이동합니다... 그래서 혹시나 싶어서 LoginCheckFilter를 적용하기 전으로 하고 다시 localhost:8080/items 를 입력했더니, 그래도 localhost:8080 으로 이동이 됩니다.제가 코드를 잘못 입력한건가 싶었는데 Chrome이 아니라 Safari로 들어가서 localhost:8080/items를 입력하면 Filter적용전에는 localhost:8080/items 에 접근이 가능하고, Filter 적용시에는 http://localhost:8080/login?redirectURL=/items 로 redirect가 이루어집니다.Chrome에서 어떤 설정을 만져야 제대로 동작하게 될까요....?Safari에서는 제대로 동작하는데 왜 Chrome만 동작이 안되는지 모르겠습니다...
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberServiceIntegrationTest 시 Failed to obtain JDBC Connection 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]다른 오류들은 차근차근 해결했는데 h2도 정상 작동하고 다른 코드들도 다 확인하고 소스 코드 복붙도 해보고(오타 방지) 했으나 다음과 같이 오류가 발생합니다. 이 테스트 말고는 다 정상적으로 테스트가 돌아가는데 DB랑 연결이 안되는건지 문의드립니다.java.lang.IllegalStateException: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection at rrrrm._rrrr_m.repository.JdbcMemberRepository.findByName(JdbcMemberRepository.java:107) at rrrrm._rrrr_m.service.MemberService.validateDuplicateMember(MemberService.java:31) at rrrrm._rrrr_m.service.MemberService.join(MemberService.java:25) at rrrrm._rrrr_m.service.MemberServiceIntegrationTest.중복_회원_예외(MemberServiceIntegrationTest.java:46) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:84) at rrrrm._rrrr_m.repository.JdbcMemberRepository.getConnection(JdbcMemberRepository.java:113) at rrrrm._rrrr_m.repository.JdbcMemberRepository.findByName(JdbcMemberRepository.java:95) ... 6 moreCaused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database may be already in use: "C:/Users/computer/test.mv.db". Possible solutions: close all other connection(s); use the server mode [90020-224] at org.h2.message.DbException.getJdbcSQLException(DbException.java:690) at org.h2.message.DbException.getJdbcSQLException(DbException.java:489) at org.h2.message.DbException.get(DbException.java:212) at org.h2.mvstore.db.Store.convertMVStoreException(Store.java:165) at org.h2.mvstore.db.Store.<init>(Store.java:142) at org.h2.engine.Database.<init>(Database.java:326) at org.h2.engine.Engine.openSession(Engine.java:92) at org.h2.engine.Engine.openSession(Engine.java:222) at org.h2.engine.Engine.createSession(Engine.java:201) at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:343) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:125) at org.h2.Driver.connect(Driver.java:59) at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:360) at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202) at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:461) at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:550) at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:98) at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:111) at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:160) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:118) at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) ... 8 moreCaused by: org.h2.mvstore.MVStoreException: The file is locked: C:/Users/computer/test.mv.db [2.2.224/7] at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:996) at org.h2.mvstore.SingleFileStore.lockFileChannel(SingleFileStore.java:143) at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:117) at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:81) at org.h2.mvstore.MVStore.<init>(MVStore.java:286) at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2035) at org.h2.mvstore.db.Store.<init>(Store.java:133) ... 25 more2024-06-14T23:13:01.731+09:00 INFO 18164 --- [9rrrr_m] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...java.lang.IllegalStateException: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection at rrrrm._rrrr_m.repository.JdbcMemberRepository.findByName(JdbcMemberRepository.java:107) at rrrrm._rrrr_m.service.MemberService.validateDuplicateMember(MemberService.java:31) at rrrrm._rrrr_m.service.MemberService.join(MemberService.java:25) at rrrrm._rrrr_m.service.MemberServiceIntegrationTest.회원가입(MemberServiceIntegrationTest.java:29) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:84) at rrrrm._rrrr_m.repository.JdbcMemberRepository.getConnection(JdbcMemberRepository.java:113) at rrrrm._rrrr_m.repository.JdbcMemberRepository.findByName(JdbcMemberRepository.java:95) ... 6 moreCaused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database may be already in use: "C:/Users/computer/test.mv.db". Possible solutions: close all other connection(s); use the server mode [90020-224] at org.h2.message.DbException.getJdbcSQLException(DbException.java:690) at org.h2.message.DbException.getJdbcSQLException(DbException.java:489) at org.h2.message.DbException.get(DbException.java:212) at org.h2.mvstore.db.Store.convertMVStoreException(Store.java:165) at org.h2.mvstore.db.Store.<init>(Store.java:142) at org.h2.engine.Database.<init>(Database.java:326) at org.h2.engine.Engine.openSession(Engine.java:92) at org.h2.engine.Engine.openSession(Engine.java:222) at org.h2.engine.Engine.createSession(Engine.java:201) at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:343) at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:125) at org.h2.Driver.connect(Driver.java:59) at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:137) at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:360) at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202) at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:461) at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:550) at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:98) at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:111) at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:160) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:118) at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) ... 8 moreCaused by: org.h2.mvstore.MVStoreException: The file is locked: C:/Users/computer/test.mv.db [2.2.224/7] at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:996) at org.h2.mvstore.SingleFileStore.lockFileChannel(SingleFileStore.java:143) at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:117) at org.h2.mvstore.SingleFileStore.open(SingleFileStore.java:81) at org.h2.mvstore.MVStore.<init>(MVStore.java:286) at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2035) at org.h2.mvstore.db.Store.<init>(Store.java:133) ... 25 moreProcess finished with exit code -1
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
폼 전달 객체를 별도로 만드는 것의 장점
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]실무에선 groups보단 폼 데이터 전달을 위해 별도의 객체를 만드는 걸 선호한다고 이해했습니다.그런데 pdf에 있는 다음 내용에 대해 더 궁금한 점이 있습니다. "Item 도메인 객체를 폼 전달 데이터로 사용하고, 그대로 쭉 넘기면 편리하겠지만, 앞에서 설명한 것과 같이 실무에서 는 Item 의 데이터만 넘어오는 것이 아니라 무수한 추가 데이터가 넘어온다. 그리고 더 나아가서 Item 을 생성하는데 필요한 추가 데이터를 데이터베이스나 다른 곳에서 찾아와야 할 수도 있다." Item을 생성하는 데에 필요한 추가 데이터를 데이터베이스나 다른 곳에서 찾아와야 할 수 있기 때문에 폼 전달을 위한 별도의 객체를 만드는 방법이 좋다는 의미로 써져 있는 거 맞나요? 그런데 Item을 생성할 때 필요한 데이터들을 데이터베이스나 다른 곳에서 찾아와야 한다고 하면, 폼 전달 객체를 별도로 만들더라도 컨트롤러에선 Item 객체를 만들어야 하니, DB에서 추가 데이터를 가져와야 하는 건 마찬가지처럼 느껴지는데, DB에서 추가 데이터를 가져오는 것 때문에 폼 전달 객체를 별도로 만드는 게 더 좋다는 이유가 아직 잘 이해가 안 됩니다.(등록 폼과 수정 폼이 다르다는 측면에서는 폼 전달 객체를 만드는 것의 장점이 충분하다고 이해하고 있습니다.) 이 부분 제가 이해를 제대로 못 하고 있는 것 같습니다. 이 부분에 대해 조금만 더 자세히 알려주실 수 있나요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
섹션 3. 서블릿, JSP, MVC 패턴 질문 3
@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 { String viewPath = "/WEB-INF/views/new-form.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath); dispatcher.forward(request, response); } }<%@ 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> 강의 따라가면서 했는데 선생님께서는 페이지 오류없이 잘 돌아가는데 제가 했을 때는 404오류가 뜹니다...그리고 localhost:8080에 들어가거나, 서블릿 MVC 회원가입을 눌러도 인텔리제이 콘솔창에는 아무것도 뜨지 않습니다..해결방안 주실 수 있나요ㅠㅠ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
프로젝트 생성 오류 Unable to set prepareKotlinBuildScriptModel sync task
검색하니깐 tasks.register("prepareKotlinBuildScriptModel"){} 추가 작성하면 된다던데그렇게 써도 또 오류가 뜹니다.프로젝트 생성했을땐 저 오류가 뜨는데 main 이랑 빌드 실행 했을때는 별다른 오류는 안뜨는데 무시하고 계속 진행해도 될까요..?아니면 해결을 해야하나요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
빌드 오류 정정 방법
현재 java11 사용중이고스프링부트는 최신버전에 맞춰서 3.3.0 과 java17로 선택해서 생성했습니다.오류가 발생했고 라고 떴습니다. 라고 권장하는 것 같은데그럼 제가 java17을 받아야하는건가요?아니면 프로젝트 java를 11로 변경하고 스프링부트 버전도 변경하면 되는 것인가요?앞으로 더 길게 봤을때를 위해서 그냥 java17을 받는게 나을까요?프로젝트 생성할 때 항상 자바버전으로 오류가 발생하는 것 같은데 뭐가 더 나은건지 기준을 아직 잘 모르겠어서 항상 고민이 되는 것 같습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
BasicErrorController 적용시 json 안나옴.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]//@Component public class WebServerCustomizer implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {주석 해놓고 아래 포스트맨도 accept 설정 제대로 했는데 계속 json이 아니라 html 결과 값이 나옵니다ㅠ
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
모바일 어플에서의 세션방식 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]안녕하세요. 세션에 대해 공부하다가 궁금한 점이 생겨 질문드립니다.웹의 경우 브라우저에 있는 쿠키저장소에 세션아이디를 저장하고 그것을 request에 함께 보내는 방식이 세션 방식이라 이해하였습니다.그런데 로그인 기능이 있는 모바일 어플을 개발 한다고 했을때도 이와 동일한 세션방식을 사용할 수 있나요?모바일 어플에 쿠키 저장소가 있고 동일하게 request를 보낼때 마다 저장된 세션아이디를 보낸다면 문제가 없겠지만 모바일에 쿠키저장소가 없다면 어떻게 로그인을 처리해야 하나요? 클라이언트에 따로 쿠키 저장소가 아닌 다른 저장소를 직접 구현하여 요청시 마다 세션 아이디를 보내는 로직을 구현 하면 될까요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
섹션 3. 서블릿, JSP, MVC 패턴 질문 2
1.------------------------------------------------------------------------------------ Host: localhost:8080 Connection: keep-alive Content-Length: 18 Cache-Control: max-age=0 sec-ch-ua: "Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24" sec-ch-ua-mobile: ?0 sec-ch-ua-platform: "Windows" Upgrade-Insecure-Requests: 1 Origin: http://localhost:8080 Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0 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/servlet/members/new-form Accept-Encoding: gzip, deflate, br, zstd Accept-Language: ko,en;q=0.9,en-US;q=0.8 Cookie: Idea-9dddef07=3ad833a2-9560-44ed-926b-2edd236efc95 username=leo&age=5] MemberSaveServlet.service 1.------------------------------------------------------------------------------------ 2024-06-14T15:50:37.558+09:00 DEBUG 25172 --- [servlet] [nio-8080-exec-6] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [959] 2024-06-14T15:50:37.558+09:00 DEBUG 25172 --- [servlet] [nio-8080-exec-6] o.a.coyote.http11.Http11InputBuffer : Received [] 2024-06-14T15:50:37.558+09:00 DEBUG 25172 --- [servlet] [nio-8080-exec-6] o.apache.coyote.http11.Http11Processor : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@12d81083:org.apache.tomcat.util.net.NioChannel@7860389b:java.nio.channels.SocketChannel[connected local=/[0:0:0:0:0:0:0:1]:8080 remote=/[0:0:0:0:0:0:0:1]:53734]], Status in: [OPEN_READ], State out: [OPEN] 2024-06-14T15:50:37.633+09:00 DEBUG 25172 --- [servlet] [nio-8080-exec-7] o.a.coyote.http11.Http11InputBuffer : Before fill(): parsingHeader: [true], parsingRequestLine: [true], parsingRequestLinePhase: [0], parsingRequestLineStart: [0], byteBuffer.position(): [0], byteBuffer.limit(): [0], end: [959] 2024-06-14T15:50:37.634+09:00 DEBUG 25172 --- [servlet] [nio-8080-exec-7] o.a.coyote.http11.Http11InputBuffer : Received [GET /favicon.ico HTTP/1.1 Host: localhost:8080 Connection: keep-alive sec-ch-ua: "Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24" sec-ch-ua-mobile: ?0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0 sec-ch-ua-platform: "Windows" Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8 Sec-Fetch-Site: same-origin Sec-Fetch-Mode: no-cors Sec-Fetch-Dest: image Referer: http://localhost:8080/servlet/members/save Accept-Encoding: gzip, deflate, br, zstd Accept-Language: ko,en;q=0.9,en-US;q=0.8 Cookie: Idea-9dddef07=3ad833a2-9560-44ed-926b-2edd236efc95 ]늘 불철주야 강의 찍으시느라 고생하시는 지식공유자님과 답글 달아주시는 선생님들의 노고에 항상 감사드리는 마음으로 질문 남깁니다. 상황1, /servlet/members/new-form 에 들어가서 username, age를 입력해서 전송을 누른다.2, 전송 버튼을 누르면 서블릿에서 member를 저장하고 그 결과로 /servlet/members/save의 html메시지를 메시지 바디에 담아서 응답한다.질문1:전송버튼을 누르면 /servlet/members/save url로 요청이 들어가는 게 맞는 건가요? 질문2:위 코드를 2개로 쪼갰습니다. /servlet/members/new-form에서 데이터를 입력하고 전송을 눌렀을 때 부터의 콘솔창 입니다./servlet/members/new-form에서 보낸 요청 -> /servlet/members/new-form에 대한 응답으로 끝나야 하는데 요청이 두 개 들어온 거는 왜 그런 건가요??
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
섹션 3. 서블릿, JSP, MVC 패턴
@WebServlet(name = "memberFormServlet", urlPatterns = "/servlet/members/new-form") public class MemberFormServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); PrintWriter w = response.getWriter(); w.write("<!DOCTYPE html>\n" + "<html>\n" + "<head>\n" + " <meta charset=\"UTF-8\">\n" + " <title>Title</title>\n" + "</head>\n" + "<body>\n" + "<form action=\"/servlet/members/save\" method=\"post\">\n" + " username: <input type=\"text\" name=\"username\" />\n" + " age: <input type=\"text\" name=\"age\" />\n" + " <button type=\"submit\">전송</button>\n" + "</form>\n" + "</body>\n" + "</html>\n"); } }http://localhost:8080/servlet/members/new-form에 들어가서 이름하고 나이를 입력하니까 오류가 안나옵니다...아직 /servlet/members/save 를 만들지 않아서 오류 페이지가 나와야 하는데,그리고 제가 입력한 값이랑 다르게 나오는데 왜 이런거죠...ㅠ새로고침을 해도 해결되지 않습니다ㅠㅠ ++ localhost:8080을 치고 들어가도 저 화면이 뜹니다ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원목록 white label
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]회원등록은 되는데 회원목록누르면 white label 뜹니다 ㅜㅡhttps://drive.google.com/file/d/19-IiuPizWAnOi4x22F5cRLRD_8pE-19F/view?usp=drive_link링크입니다!
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
섹션 2. 서블릿 GET 쿼리
@WebServlet(name = "requestParamServlet", urlPatterns = "/request-param") public class RequestParamServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); System.out.println("username = " + username); String age = request.getParameter("age"); System.out.println("age = " + age); request.getParameterNames().asIterator() .forEachRemaining(paramName -> System.out.println(paramName + ": " + request.getParameter(paramName))); String[] parameterValues = request.getParameterValues("username"); for (String parameterValue : parameterValues) { System.out.println("parameterValue = " + parameterValue); } } }http://localhost:8080/request-param?username=kim&age=20http://localhost:8080/request-param?username=kim&age=20&username=park으로 하면 오류 없이 잘 넘어가는데,http://localhost:8080/request-param 으로 하면 왜 오류가 나는 건가요? Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Thu Jun 13 22:28:48 KST 2024There was an unexpected error (type=Internal Server Error, status=500).여러 번 시도해봤을 때,//코드3 String[] parameterValues = request.getParameterValues("username"); for (String parameterValue : parameterValues) { System.out.println("parameterValue = " + parameterValue); }질문1:코드3 때문에 오류가 나는 거 같은데 왜 오류가 나는지 이유를 모르겠습니다.http://localhost:8080/request-param은 username의 값을 꺼내는 건데, username이 없어서 null이 나올 거고, 그걸 iterator로 돌리면 결국 그냥 null값이 나와야하지 않나 하고 생각했습니다! //코드1 String username = request.getParameter("username"); System.out.println("username = " + username); String age = request.getParameter("age"); System.out.println("age = " + age);이 코드1는 null값을 뱉어내고//코드2 request.getParameterNames().asIterator() .forEachRemaining(paramName -> System.out.println(paramName + ": " + request.getParameter(paramName)));질문2:http://localhost:8080/request-param로 들어가면, 코드2는 콘솔에 아무것도 프린트 되어있지 않습니다. null값이 나와있을 거라 기대했는데 아니었습니다. 왜 이런 건가요??
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
섹션 2. 서블릿 2
private void printHeaderUtils(HttpServletRequest request) { System.out.println("--- header 편의 조회 start---"); System.out.println("[Host 편의 조회]"); System.out.println("request.getServerName() = " + request.getServerName()); System.out.println("request.getServerPort() = " + request.getServerPort()); System.out.println("--- header 편의 조회 end---"); System.out.println(); }실행하면 이 메서드 부분 출력이--- header ���� ��ȸ start---[Host ���� ��ȸ]request.getServerName() = localhostrequest.getServerPort() = 8080--- header ���� ��ȸ end---이렇게 나옵니다 ㅠㅠ한글 표시가 안 돼요ㅠㅠㅠ어떻게 해야하나요? 도와주세요!!run/debug edit configurations에 들어가서 -Dfile.encoding=UTF-8도 입력했고,File Encoding에 가서 UTF-8로 전부 변경도 했고,application.properties에 가서 server.servlet.encoding.force-response=true도 입력했습니다.인텔리제이 콘솔 한글깨짐 - 인프런 (inflearn.com)여기 링크에 나와있는 분 처럼 다해봤는데 안 됩니다...저 링크에 나와있는 것도 확인해 봤는데 안 되고요...뭐가 문제인 거죠ㅠㅠ
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
섹션 2. 서블릿
private void printHeaderUtils(HttpServletRequest request) { System.out.println("--- header 편의 조회 start---"); System.out.println("[Host 편의 조회]"); System.out.println("request.getServerName() = " + request.getServerName()); System.out.println("request.getServerPort() = " + request.getServerPort()); System.out.println("--- header 편의 조회 end---"); System.out.println(); }실행하면 이 메서드 부분 출력이--- header ���� ��ȸ start---[Host ���� ��ȸ]request.getServerName() = localhostrequest.getServerPort() = 8080--- header ���� ��ȸ end---이렇게 나옵니다 ㅠㅠ한글 표시가 안 돼요ㅠㅠㅠ 어떻게 해야하나요? 도와주세요!!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradle 빌드 실패 오류
안내에 따라 --warning-mode all 넣고 gradlew build`--scan` 결과현재 gradle-wrapper.properties에 나오는 gradle 버전은 8.5입니다.The automatic loading of test framework implementation dependencies has been deprecated. This is scheduled to be removed in Gradle 9.0. Declare the desired test framework directly on the test suite or explicitly declare the test framework implementation dependencies on the test's runtime classpath.이 문제를 해결해야 할 것 같은데, gradle 버전을 업그레이드 해야 할까요?
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
자동키?가 없는 오라클에서 useGeneratedkey 사용하는 방법??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]오라클의 경우는 시퀀스로 증가하는 방법을 사용하는데, useGeneratedkey를 사용할 방법이 있을까요
-
미해결ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0
클래스 라이브러리 추가시
클래스 라이브러리를 추가하면 계속해서 클래스 라이브러리에 대한 폴더가 생성 되는데 이것이 정상인가요?강사님이 올려주신 코드, 강의를 보면 클래스라이브러리 폴더가 추가가 되지 않던데.. 어떻게 설정을 해야 하는건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
validation 폴더 및 validation-start 폴더 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 현재 섹션4 검증1을 듣고 있습니다.validation-start 파일을 갖고 와서 실행했을 때위와 같은 화면이 뜨는데요, 강의에 의하면 이렇게 떠야 합니다.메인 페이지에 오류가 있는것 같아, 파일을 수정해주시면 감사하겠습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의소스코드
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]수업 자료 소스 코드를 다운받았습니다.여기서 서블렛에 대한 소스코드를 인텔리제이로 연결해서보고싶은데인텔리제이 들어가서 오픈프로젝트하고 build.gradle 했는데 이런식으로 뜨는데 어떻게 해야할까요?ㅠ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Controller 에서 Service 로 넘기는 파라미터에도 DTO를 사용할 수 있을까요?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]선생님 강의를 거의 다 완강하고 혼자 프로젝트를 진행중에 궁금증이 생겨 질문 남깁니다. 클린코드 원칙에 따르면 메서드의 파라미터는 적으면 적을 수록 좋다고 배웠습니다.만약 컨트롤러에서 서비스 메서드를 호출할때,필요한 파라미터 값이 많을때는 컨트롤러에서 DTO를 생성하여서비스객체에 전달하는 방법도 고려해볼 수 있을까요? DTO는 컨트롤러가 웹 호출을 받는 경우에만 사용해 왔는데 이런 방식의 DTO 활용도 가능한지 질문드립니다.