학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 지금은 저장소가 자바 코드에 있어서 동시접근에 이슈가 있을수 있지만 실제 db를 연동한 저장소를 ㄱ사용하면 db에서 동시요청에 대한 처리를 전담하기 때문에 고려해주지 않아도 되는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] BasicErrorController 질문있습니다. 저희가 직접만든 ErrorPageController 의 경우 오류 코드에 따라 맵핑되는 uri가 달라 각각 코드에 따라 다른 viewName을 리턴하여 각각 다른 화면을 보여주는 것이 가능해 보입니다. @Slf4j @Controller public class ErrorPageController { public static final String ERROR_EXCEPTION = "jakarta.servlet.error.exception"; public static final String ERROR_EXCEPTION_TYPE = "jakarta.servlet.error.exception_type"; public static final String ERROR_MESSAGE = "jakarta.servlet.error.message"; public static final String ERROR_REQUEST_URI = "jakarta.servlet.error.request_uri"; public static final String ERROR_SERVLET_NAME = "jakarta.servlet.error.servlet_name"; public static final String ERROR_STATUS_CODE = "jakarta.servlet.error.status_code"; @RequestMapping("/error-page/404") public String errorPage404(HttpServletRequest request, HttpServletResponse response) { log.info("error-page404"); printErr(request); return "error-page/404"; } @RequestMapping(value = "error-page/500", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<Map<String, Object>> errorPage500api( HttpServletRequest request, HttpServletResponse response) { log.info("API errorPage500"); Map<String, Object> result = new HashMap<>(); Exception ex = (Exception) request.getAttribute(ERROR_EXCEPTION); result.put("status", request.getAttribute(ERROR_STATUS_CODE)); result.put("message", ex.getMessage()); Integer statusCode = (Integer) request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE); return new ResponseEntity<>(result, HttpStatus.valueOf(statusCode)); } @RequestMapping("/error-page/500") public String errorPage500(HttpServletRequest request, HttpServletResponse response) { log.info("error-page500"); printErr(request); return "error-page/500"; } public void printErr(HttpServletRequest request) { log.info("ERROR_EXCEPTION : {}", request.getAttribute(ERROR_EXCEPTION)); log.info("ERROR_EXCEPTION_TYPE : {}", request.getAttribute(ERROR_EXCEPTION_TYPE)); log.info("ERROR_MESSAGE : {}", request.getAttribute(ERROR_MESSAGE)); log.info("ERROR_REQUEST_URI : {}", request.getAttribute(ERROR_REQUEST_URI)); log.info("ERROR_SERVLET_NAME : {}", request.getAttribute(ERROR_SERVLET_NAME)); log.info("ERROR_STATUS_CODE : {}", request.getAttribute(ERROR_STATUS_CODE)); log.info("dispatcherType = {}", request.getDispatcherType()); } } 하지만 BasicErrorController의 어떤 errorCode가 오더라도 전부 /error로 매핑이 되어 반환값도 viewName이 아니라 ModelAndView이어 이해해 약간의 어려움을 겪고 있습니다. 일단 제가 추상적으로 생각했을때 BasicErrorController의 errorHtml에서 반환받는 ModelAndView를 Servlet에서 받아 ModelAndView에 있는 "error"라고 하는 viewName을 directory 이름 으로 사용하고 model에 들어있는 status를 조합하여 RequestDispatcher dispatcher = request.getRequestDispatcher(viewPath+"/"+model.getAttribute("status"); 이런느낌의 로직으로 처리한다 라고 이해하면 제대로 이해하고 있는게 맞을까요??? 추상적으로 이런 느낌이겠지정도고 확신이 들지 않아 질문합니다. @Controller @RequestMapping({"${server.error.path:${error.path:/error}}"}) public class BasicErrorController extends AbstractErrorController { private final ErrorProperties errorProperties; public BasicErrorController(ErrorAttributes errorAttributes, ErrorProperties errorProperties) { this(errorAttributes, errorProperties, Collections.emptyList()); } public BasicErrorController(ErrorAttributes errorAttributes, ErrorProperties errorProperties, List<ErrorViewResolver> errorViewResolvers) { super(errorAttributes, errorViewResolvers); Assert.notNull(errorProperties, "ErrorProperties must not be null"); this.errorProperties = errorProperties; } @RequestMapping( produces = {"text/html"} ) public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) { HttpStatus status = this.getStatus(request); Map<String, Object> model = Collections.unmodifiableMap(this.getErrorAttributes(request, this.getErrorAttributeOptions(request, MediaType.TEXT_HTML))); response.setStatus(status.value()); ModelAndView modelAndView = this.resolveErrorView(request, response, status, model); return modelAndView != null ? modelAndView : new ModelAndView("error", model); } @RequestMapping public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) { HttpStatus status = this.getStatus(request); if (status == HttpStatus.NO_CONTENT) { return new ResponseEntity(status); } else { Map<String, Object> body = this.getErrorAttributes(request, this.getErrorAttributeOptions(request, MediaType.ALL)); return new ResponseEntity(body, status); } } //생략
안녕하세요. 터미널에서 h2.sh이 안됩니다. h2 w.bat을 직접 열어서 연결을 누르면 이런 화면이 나오긴 합니다. java --version 화면입니다. H2환경 별수 설정 화면입니다. h2.sh 를 폴더에서 더블클릭해서 실행시키면 명령프롬프트 창이 뜨면서 Error: Could not find or load main class org.h2.tools .Console Caused by: java.lang.ClassNotFoundException: org.h2.tools.Console 라고 잠깐 뜨고 창이 닫힙니다. 홈에는 test.mv .db파일 있습니다. 어떻게 하면 될까요?
[질문 내용] 여기에 질문 내용을 남겨주세요. https://drive.google.com/drive/folders/1-OMPceoH7sl_mkET-FmLH2xDZXuGfo4d mybatis를 적용시키고 ItemRepositoryTest를 실행시켰는데 오류 로그가 많이 떠서 무슨 문제인지 정확히 판단이 안되네요...일단 mybatis 관련 파일들은 제대로 쓴것같긴한데 오류가 생긴걸 보면 mybatis 적용이 안된것같은데 어디서 잘못되었는지 모르겠습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 강의 중반에 bulid한 이후 맥 환경에서 서버 종료하는 방법은 알려주셨는데 혹시 윈도우 환경에서는 서버를 종료하는 방법이 있는지 궁금합니다.
안녕하세요. 다른 질문글들을 다 참고하여 따라 해보았으나 업로드가 되지 않아 질문 남기게 되었습니다. [질문 내용] 한글 주소로 사용하지 않기 위해 로컬디스크 C에 file을 만들어 진행하였는데 사진과 같은 오류가 발생합니다. (노랗게 칠한부분은 한글로 제이름입니다.) [구글 드라이브 주소] https://drive.google.com/file/d/1VW52xdG7KyWdewGShZijEcJjhXc2v_4w/view?usp=sharing
https://www.inflearn.com/questions/1277199/%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0-%EC%84%B8%EC%85%98-%EC%A7%81%EC%A0%91-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8%EC%9E%85%EB%8B%88%EB%8B%A4 질문에 대해서 세션은 서버에 저장되고, 쿠키는 클라이언트에 저장된다는걸 깜빡했네요.... 추가질문입니다. 서로 다른 프로그렘들이 SESSION_COOKIE_NAME 을 동일하게 사용한다면 중복으로 인한 문제가 발생하겠네요? 그렇다면 이를 회피하기 위한 방법도 있나요?
ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0
안녕하세요 선생님 자주... 문의드려 죄송합니다. 로그인에서 가져온 Session 값을 활용하는 방법 DAL 부분의 활용 여부 로그인에서 가져온 Session 값을 활용하는 방법 public async Task<IActionResult> GetUser(GetUserDTO getUserDTO) { if (ModelState.IsValid) { } else { return Redirect("/login/SearchUserId"); } GetUserResponseDTO dto = await loginService.GetUser(getUserDTO); HttpContext.Session.Set("LoginUser", dto); return Redirect("/home/index"); } "LoginUser"으로 세션값을 사용하는 것은 이해했습니다. controller public async Task<IActionResult> GetUserList () { if (ModelState.IsValid) { } else { return Redirect("/home/UserList"); } GetUserResponseDTO ? user = HttpContext.Session.Get<GetUserResponseDTO>("LoginUser"); GetUserListResponseDTO dto = await UserListService.GetUserList(); return Redirect("/home/index"); } service public async Task<GetUserListResponseDTO> GetUserList(GetUserListDTO getUserListDTO) { var configuration = new MapperConfiguration(cfg => { }); Mapper mapper = new Mapper(configuration); Dictionary<string, object> dc = mapper.Map<GetUserListDTO, Dictionary<string, object>>(getUserListDTO); ProcCall procCall = new ProcCall(); DataTable dt = await procCall.RequestProcedure("SP_UserList", dc); GetUserListResponseDTO dto = new GetUserListResponseDTO(); return dto; } 구현하고자 하는 내용. 로그인 해서 나온 데이터를 활용하여 조회 화면을 구성하고자 함 A 등급을 가진 사람한테 -> A-1 화면만 조회하도록 구현하고자 합니다. Session 값을 가져와서 구현하고자 했는데.. 그럼 DTO를 거치면 안 될까요...? DAL 부분의 활용 여부 SP_ 형식을 차용하는데 DAL.Mapper와 DAL.Model 추가적인 사용은 필요가 없을 것 같습니다...? DB와 소통하는 부분으로만 남겨도 될까요?
SessionManager를 보면 SESSION_COOKIE_NAME과 로그인 할 때마다 새로 생성한 sessionId로 쿠키를 만드는 것 같습니다. 이 프로그램을 사용하는 여러 멤버들이 동시에 로그인을 한다면, sessionId는 다르지만 SESSION_COOKIE_NAME이 동일한 쿠키가 중복되서 생기지 않나요? findCookie에서는 SESSION_COOKIE_NAME만 가지고 로그인한 멤버가 사용하는 sessionId를 제대로 찾을 수 있는건가요?
스프링 데이터 JPA 조건2에서 SpringDataJpaRepository의 findAll 메서드의 `@Query`에서 오타를 내서 코드가 테스트에서 오류가 발생했습니다. 추후 코드를 고치니 문제를 해결할 수 있었습니다. 여기서 궁금한 점은 테스트에서 findAll에만 영향을 미치는 것이 아니라 왜 전체 테스트에서 오류가 발생하는 것인지 궁금합니다. 혹시 이 부분에 대해선 프록시 객체를 띄우는 데, 메서드의 유효성을 검사하는 로직이 존재하거나 아니면 다른 무언가가 있는지 궁금합니다. package hello.itemservice.repository.jpa; import hello.itemservice.domain.Item; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; public interface SpringDataJpaItemRepository extends JpaRepository<Item, Long> { List<Item> findByItemNameLike(String itemName); List<Item> findByPriceLessThanEqual(Integer price); // 쿼리 메서드(아래 메서드와 같은 기능 수행) List<Item> findByItemNameLikeAndPriceLessThanEqual(String itemName, Integer price); // 쿼리 직접 실행 // error를 추가해 쿼리 오류 생성 @Query("error select i from Item i where i.itemName like :itemName and i.price <= :price") List<Item> findItems(@Param("itemName") String itemName, @Param("price") Integer price); }