월 49,500원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
springboot sign-up test 질문드립니다.
안녕하세요 백기선선생님. 현재 강좌를 잘보고 있습니다. 저는 타임리프를 사용하지 않고 기존에 만든 프로젝트가 있어서 jsp로 예제를 따라하는 중인데요 스프링시큐리티 적용하고 jsp 페이지를 컨트롤러에서 호출해서 정상적으로 로드되는 것은 확인 하였습니다. 그런데 테스트를 진행시에 404에러가 뜨면서 호출이 되지 않는데요 원인을 잘 모르겠습니다. application.properties 파일 spring.mvc.view.prefix= /WEB-INF/views/spring.mvc.view.suffix= .jsp 따라서/user/sign-up 을 리턴하구요 @GetMapping("/sign-up")public String signUpForm(Model model) { return "/user/sign-up";} 컨드롤러에서는 위에 url을 호출시에 정상적으로 페이지가 열립니다. 아래는 컨트롤러 테스트입니다. package com.seongbindb.recipe.controller;import org.junit.jupiter.api.DisplayName;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.web.servlet.MockMvc;import static org.junit.jupiter.api.Assertions.*;import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;@SpringBootTest@AutoConfigureMockMvcclass UserControllerTest { @Autowired private MockMvc mockMvc; @DisplayName("회원 가입 화면 보이는지 테스트") @Test void signUpForm() throws Exception { mockMvc.perform(get("/sign_up")) .andExpect(status().isOk()) .andExpect(view().name("/user/sign-up")); }} 아래는 콘솔 로그입니다. java.lang.AssertionError: Status expected:<200> but was:<404> Expected :200 Actual :404 <Click to see difference> at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:59) at org.springframework.test.util.AssertionErrors.assertEquals(AssertionErrors.java:122) at org.springframework.test.web.servlet.result.StatusResultMatchers.lambda$matcher$9(StatusResultMatchers.java:627) at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:196) at com.seongbindb.recipe.controller.UserControllerTest.signUpForm(UserControllerTest.java:24) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688) at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53) 2021-02-15 21:20:56.279 INFO 11843 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor' Process finished with exit code 255
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
javaMailSender bean 등록문제
안녕하세요. 좋은강의 잘 듣고 있습니다. 강사님 코드를 라이브코딩으로 따라치며 강의를 듣는 중인데요 spring-jpa-웹앱 강의 <회원가입 폼 및 서브밋 처리> 부분에서 저는 이런 오류가 뜨네요. Description: Parameter 2 of constructor in com.stdmark.stdmakr.account.AccountController required a bean of type 'org.springframework.mail.javamail.JavaMailSender' that could not be found. Action: Consider defining a bean of type 'org.springframework.mail.javamail.JavaMailSender' in your configuration. 스프링 부트에서는 javaMailSender가 자동으로 빈으로 등록되는 것으로 알고있는데 이와 같은 오류가 뜨는 이유가 뭔지요? 그리고 이를 해결하고 정상적으로 앱을 기동하려면 config 파일 하나 만들어서 빈과 설정정보를 입력해야할까요? 답변 미리 감사드립니다.
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
rest api + 관리자 페이지 제작 및 oauth 관련하여 질문드립니다.
안녕하세요. 현재 모바일 앱 연동을 위해 bearer 인증 기반으로 rest api 서버를 구축하였습니다. 회원가입은 firebase 의 id_token 인증을 통해 진행됩니다. 여기서 관리자페이지 제작을 하려고 하는데 보통 관리자 페이지는 api서버 프로젝트와 따로 프로젝트를 생성하여 만드는지 아니면 한 프로젝트에 모든 기능을 한 번에 구축하는지 일반적으로 현업에서는 어떤 구조로 이루어져있는지 궁금합니다. 프로젝트를 따로 가져가는 경우 공통된는 service 기능이나 domain은 중복해서 생성해야할거같아서 비효율적일거 같아 우선 저의경우 한 프로젝트에 앱 서버와 관리자 서버 모두 구축하는 방법을 진행해 봤는데 rest api 기반 시큐리티 설정과 웹 시큐리티 설정이 동시에 구축되는게 문제가 있는지 웹 로그인이 진행이 안됩니다. 다른 질문으론 oAuth2가 스프링에서 deprecated 된거같은데 선생님께서는 다른 방안을 어떻게 생각하고 계신가요?? 답변 부탁드립니다. 감사합니다!
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
프로젝트 세팅 중 maven compile시 에러발생합니다
프로젝트 실행하기 강의중에 maven compile시에 아래와 같은 에러가 발생합니다. 해결 방법이 있을까요? Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.8.0:npm (npm install) on project studyolle: Failed to run task
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
회원 가입 리팩토링 및 테스트 영상 질문입니다.
@DisplayName("회원 가입 처리 - 입력값 정상") @Test void signUpSubmit_with_correct_input() throws Exception { mockMvc.perform(post("/sign-up") .param("nickname", "keesun") .param("email", "email@gmail.com") .param("password", "12345678") .with(csrf())) .andExpect(status().is3xxRedirection()) .andExpect(view().name("redirect:/")); assertTrue(accountRepository.existsByEmail("email@gmail.com")); BDDMockito.then(JavaMailSender).should().send(any(SimpleMailMessage.class)); } 회원 가입 처리 - 입력값 정상 테스트의 마지막줄인 BDDMockito.then(JavaMailSender).should().send(any(SimpleMailMessage.class)); 쪽이 인식을 못하고 빨간줄을 내보냅니다. 영상에서는 then(JavaMailSender).should().send(any(SimpleMailMessage.class)); 코드인데 then 앞에 BDDMockito.를 선언 안하면 아예 인식을 못하더군요. BDDMockito를 사용하여 then을 인식시키면 에러가 뜹니다. .send(any(SimpleMailMessage.class)); 센드쪽에서 any들어가는걸 인식 못하는것 같은데 junit을 써본적이 없어서 이부분을 잘 모르겠습니다. 어디가 잘못 된건지 알 수 있을까요??? spring boot version 2.4.2 입니다. java 11입니다. ======================================================================================= package com.studyolle; import static org.hamcrest.CoreMatchers.any; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; import javax.mail.internet.MimeMessage; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.mockito.BDDMockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.test.web.servlet.MockMvc; import com.studyolle.account.AccountRepository; @SpringBootTest @AutoConfigureMockMvc class AppTests { @Autowired private MockMvc mockMvc; @Autowired private AccountRepository accountRepository; @MockBean JavaMailSender JavaMailSender; @DisplayName("회원 가입 화면 보이는지 테스트") @Test void signUpForm() throws Exception { mockMvc.perform(get("/sign-up")) .andDo(print()) .andExpect(status().isOk()) .andExpect(view().name("account/sign-up")) .andExpect(model().attributeExists("signUpForm")); } @DisplayName("회원 가입 처리 - 입력값 오류") @Test void signUpSubmit_with_wrong_input() throws Exception { mockMvc.perform(post("/sign-up") .param("nickname", "keesun") .param("email", "email..") .param("password", "12345") .with(csrf())) .andExpect(status().isOk()) .andExpect(view().name("account/sign-up")); } @DisplayName("회원 가입 처리 - 입력값 정상") @Test void signUpSubmit_with_correct_input() throws Exception { mockMvc.perform(post("/sign-up") .param("nickname", "keesun") .param("email", "email@gmail.com") .param("password", "12345678") .with(csrf())) .andExpect(status().is3xxRedirection()) .andExpect(view().name("redirect:/")); assertTrue(accountRepository.existsByEmail("email@gmail.com")); BDDMockito.then(JavaMailSender).should().send (any(SimpleMailMessage.class)); } }
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
왼쪽 상단에 표시되는 단축키
왼쪽 상단에 별도로 표시되는 단축키는 플러그인을 사용하신건가요? 아니면 인텔리제이에서 제공하는 기능인가요?
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
idea에서 @Valid사용시 import javax.validation.Valid가 안되면은 뭘 좀 보면은 해결이 가능할가요?
jetbrain idea에서 @Valid import javax.validation.Valid가 안되면은 뭘 좀 보면은 해결이 가능할가요?
- 해결됨스프링과 JPA 기반 웹 애플리케이션 개발
처음 로그인시에만 빈 화면에 timestamp가 찍혀나와요.
안녕하세요. 강사님 첫 로그인시에 간혈적으로 빈화면에 timestamp가 찍혀나오고 콘솔화면에는 에러 메시지가 안나오는데 이유가 뭔지 모르겠습니다. 혹시 짐작 가는부분이 있으신가요?
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
[자문자답] 패스워드를 잊어버렸습니다. (안되시는 분 참고)
강의에서 언급하신 부분 외에 SecurityConfig.java 에 mvcMatchers 부분을 수정하셔야 정상적으로 동작합니다. 헤매시는 분이 있을 것 같아 글 작성 합니다.
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
위 처럼 회원가입을 하고 테스트를 하면..
Repository를 Autowire 했기 대문에 실제 서버와 연결된 db에 자료가 계속 쌓이지 않나요?
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
프론트는 vue.js라고 했을때..
현업에서는 보통 vue.js와 스프링 부트로 웹을 만들면 시큐리티의 csrf 기능을 꺼두나요? 아니면 vue 쪽에서 토큰을 보내주는 식으로 만드나요??
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
formLogin().loginPage에 대해서..
강의 초반 부분엔 get요청에 대한 컨트롤러를 만드시고 9분 40초쯤에는 저 formLogin().loginPage("경로") 설정으로 해당 경로에 post요청을 보내서 로그인이 된다고 하셨는데 그럼 formLogin().loginPage("경로") <- 이 설정은 get, post 경로 설정 두개를 다 해주는건가요?
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
SignUpForm을 따로 만드신 이유가 있나요?
Account에 nickname, email, password 모두 있는데 따로 SignUpForm을 만들어서 form에 넘겨주신 이유가 있나요?
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
입력값 오류 테스트 진행중에...
안녕하세요. 강의보면서 따라가는 도중에 해결안되는 부분이 있어 혹시나 하고 질문 드립니다. 입력값 오류 테스트 진행중에... 기대값은 200 ok 인데 자꾸 redirect 302가 떨어져서 디버그 돌려봤는데 아래와 같이 오류 입력값임에도 불구하고 에러를 못잡더라구요.. 사인업 폼은 아래와 같구요. 강의와 다르게 진행된 부분은 @Valid 어노테이션이 안먹어서 import javax.validation.Valid를 해줘도 못찾아 오길래 그래들에, compileOnly 'org.springframework.boot:spring-boot-starter-validation'을 추가해주고 진행하고 있는 중입니다. 테스트 코드는 강의와 동일합니다. 한참 허우적대고 있는중에 혹시나 의심가는 부분이 있으실까 해서 질문 드립니다~
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
updateStudyPath 코드 관련 질문.
강의 코드 line 242~ 247 저는 이런 식으로 작성했는데강의에서는 model에 담아서 바로 view로 return 합니다저와 강의 코드의 차이점은제 코드에서 한 번 더 select 쿼리가 나가는 거 말고는 차이점이 없나요?일단 제 코드는 select 쿼리가 한 번 더 발생되는 것만으로도 일단강의 코드가 더 좋은 코드인 것을 느꼈습니다 하지만 다른 차이점도 있는지 궁금합니다.
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
Study settings - tags and zones 커밋질문
fragments.html 커밋 목록에서 311- 354 line 사용하지 않는 코드가 맞나요 ? 스스로 해보고 커밋 분석하다가 발견해서 질문합니다
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
질문드립니다.
안녕하세요. 개발 강의를 잘 듣고있는 개발자입니다. 먼저 덕분에 도움이 많이 되었습니다. 감사드립니다. 질문이 있는데 @Controller@RequiredArgsConstructorpublic class SettingsController { private final AccountService accountService; @GetMapping( "/settings/profile") public String profileUpdateForm(@CurrentUser Account account, Model model){ model.addAttribute(account); model.addAttribute(new Profile(account)); return "settings/profile"; } @PostMapping( "/settings/profile") public String updateProfile(@CurrentUser Account account, @Valid Profile profile, Errors errors, Model model, RedirectAttributes attributes){ if(errors.hasErrors()){ model.addAttribute(account); return "settings/profile"; } accountService.updateProfile(account,profile); attributes.addFlashAttribute("message","프로필을 수정했습니다."); // 한번 쓰고 말 데이터 return "redirect:/settings/profile"; }} 해당 코드에서 @PostMapping 이후 @GetMapping으로 Redirect 된 후의 @CurrentUser Account account는 세션에 이미 있던 업데이트 되기 전의 계정이기 때문에 bio나 url이 없는 것으로 생각했는데요, 예상외로 잘 반영이 된 것 같아 어떻게 업데이트가 된 것인지 궁굼해서 질의드립니다. 감사합니다.^^
- 해결됨스프링과 JPA 기반 웹 애플리케이션 개발
강의를 전부 수강한뒤 궁금증과 오류를 발견한것이 있어서 질문 남깁니다!!
1. index페이지에서 nav바에 있는 스터디버튼은 비활성화 되어있는데 원래의도는 프로필의 스터디 페이지로 보내주는것이였는지 궁금합니다. 2. 프로필의 스터디 페이지가 study만 출력하여 보여주고있는데 원래의도는 현재 관리중이거나 참여중인 스터디를 보여주는것인지 궁금합니다. 3. 회원가입 후 이메일 인증을 하지않은상태에서 프로필 소개 페이지를 보게되면 "가입을 완료하려면 이메일을 확인하세요." 를 눌렀을때에 404에러가 발생하게되는데 이부분 에러 발생이 제가 강의중 놓친부분이 있어서 404에러가 발생한것인지 궁금합니다. 4. index-after-login.html 에서 참여중인 스터디를 보여주는 부분에 75line의 코드가 class="list-group-item list-group-item-action" th:each="study: ${studyManagerOf}"> 로 구성되어있어서 참여중인 스터디가 아닌 관리중인 스터디가 출력되는 오류가 있었습니다.! class="list-group-item list-group-item-action" th:each="study: ${studyMemberOf}"> 로 변경하여 정상작동 확인했습니다. 수준높은 강의 감사합니다. 친절한 설명덕분에 스프링과 JPA를 많이 배우게되었습니다. 감사합니다!
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
압축파일관련
강의와 관련 압축파일을 푸는데 파일이름이 너무 길다며 약 920개 정도의 파일이 압축해제가 안되었다고 뜨는데... 이게 정상적인가요..? 이런경우는 처음이라 질문드려요
- 미해결스프링과 JPA 기반 웹 애플리케이션 개발
Login 페이지로 redirect
안녕하세요 /logged-in-by-email로 get요청을 보내면 처음에 /login 페이지로 간다음에, 거기서 로그인을 하면 이제서야 /logged-in-by-email 이쪽 페이지로 넘어갑니다..! 테스트 코드를 짜봐도 /logged-in-by-email 여기가 아니라 /login 페이지로 redirect되어 302가 뜹니다..ㅠㅠ 몇일을 고민하고 해결해보려고 하는데 무엇이 문제인지 모르겠습니다 ㅠㅠ 방법이 혹시 있을까요? 감사합니다.