• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

filter 질문

24.02.25 18:10 작성 조회수 105

0

@PostMapping("/login")
public String loginHttpSession(@Validated @ModelAttribute("member") LoginForm loginForm,
                    BindingResult bindingResult,HttpServletRequest request, @RequestParam(value = "redirectURL") String redirectURL) {
    if(bindingResult.hasErrors()) {
        log.info("로그인 에러");
        return "login/login";
    }
    SignUpMember signUpMember = loginService.loginMember(loginForm.getLoginId(), loginForm.getPassword());

    if(signUpMember == null) {
        bindingResult.reject("loginFail", "아이디 또는 비밀번호가 틀렸습니다");
        return "login/login";
    }

    HttpSession session = request.getSession();
    session.setAttribute(SessionConst.LOGIN_MEMBER, signUpMember);

    return "redirect:/guPage/index";
}

 

위 코드를 작성해서 http://localhost:8080/login?redirectURL=/basic/items

위 url을 post로 받으려 하는데 405 error가 뜨네요 어떻게 하면 될까요?

그리고 제가 알기론 @RequestParam(value = "redirectURL") String redirectURL에서 value를 제거해도 된다고 알고 있는데 value를 안적어주니 이것도 에러가 나더라고요 어떻게 하면 될까요?

 

 

 

답변 2

·

답변을 작성해보세요.

0

OMG님의 프로필

OMG

2024.02.25

안녕하세요. III님, 공식 서포터즈 OMG입니다.

405에러 관련

브라우저에서 http://localhost:8080/login?redirectURL=/basic/items 를 엔터를 눌러 요청을 보낼 경우 GET요청이 발생해서 405가 발생할 수 있을 것 같습니다.

PostMan과 같은 api 클라이언트 툴을 사용하여 확인해보시겠어요?

-

value 생략 관련

스프링부트 3.2를 사용하신다면 다음과 같은 이유(클릭)일 수 있습니다.

빌드 실행을 gradle로 하거나, 강의 진행이 아닌 개인 프로젝트라면 변경된 사항에 맞게 생략하지 않고 사용하시는 것을 고려하면 좋을 것 같아요.

 

 

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.02.25

안녕하세요, 인프런 AI 인턴입니다.

질문자님의 질문과 유사한 상황에 대한 답변을 찾아본 결과, @RequestParam 사용 및 리다이렉트 문제와 관련된 몇 가지 유사한 질문과 그에 대한 답변을 찾을 수 있었습니다.

  1. POST 메서드로 정의한 /login 경로에서 405 Method Not Allowed 오류가 발생한다면, 서버는 해당 경로에 POST 요청을 지원하지 않는다는 의미입니다. 이는 일반적으로 해당 경로에 POST 요청을 처리하는 컨트롤러 메서드가 없거나, 정의가 잘못 되었을 수 있습니다. 이미 정의하신 @PostMapping("/login") 메서드가 있는 경우, 서버 설정 문제일 수 있으므로 실제 요청을 처리하는 컨트롤러와 매핑 경로, 메서드 등을 다시 한 번 확인해주시길 바랍니다.

  2. @RequestParamvalue 속성은 요청 파라미터의 이름을 명시하는데 사용됩니다. value 속성을 생략할 경우 메서드 파라미터의 이름을 요청 파라미터의 이름으로 사용합니다. value 속성을 생략했을 때 에러가 발생한다면, 컴파일 시 JVM이 메서드 내 파라미터의 이름을 보존하지 않기 때문에 발생할 수 있습니다. 이 경우, -parameters 컴파일 옵션을 사용하거나, 명시적으로 value를 지정해야 합니다.

아래는 질문과 관련된 몇 가지 답변 링크입니다:

진문자님의 코드에 문제가 발생하는 구체적인 상황, 특히 오류가 나는 부분의 자세한 메시지나 스택 트레이스 등이 없기 때문에 정확한 해결책을 제시하기는 어렵습니다만, 위 링크의 답변 내용이 유사한 문제를 해결하는 데 도움이 될 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.