티스토리 뷰
전 글에서 200 ok와 302 Found의 차이를 알아보았다.
자세한 내용은 아래 링크로 들어가면 볼 수 있다.
https://resian-programming.tistory.com/57
- 회원가입 시 302 Found 적용하기 -
이제 코드를 실제로 구현하기 위해 response302Header라는 Method를 생성하고
200 OK와는 달리 HTTP Code와 Location만 넣었다.
/user/create의 요청일 때만 response302Header Method를 호출하기 때문에 if문으로 분기를 나눴다.
테스트를 위해 실행해본 결과 Location 지정하지 않은 /user/create.html으로 이동하는 것을 확인하고,
html로 들어가 action의 "/user/create.html"을 "/user/create"로 변경하였다.
다시 테스트를 진행한 결과 브라우저와 콘솔에서 /index.html로 이동하는 것을 확인할 수 있었다.
- login을 구현하고 302 Found 적용하기 -
login을 하기 위해서는 회원가입 할 때 DataBase에 저장이 되어야 한다.
스승님께서 미리 구현하신 Map 형태의 DataBase에 User 객체를 저장해야 하므로
아래와 같이 회원가입을 할 때 response302Header Method를 호출하기 전에 DataBase에 저장하였다.
위에 코드는 /user/create에 해당하는 요청만 하므로
if문을 이용하여 /user/login에 해당하는 요청을 처리하도록 하였다.
이제 login302Header Method를 생성하였는데, response302Header Method와 다른 점은
parameter가 추가된 점과 location이라는 Method를 통해 302 Found의 Location을 정해주고 있다는 점이다.
location Method를 호출하게 되면 사용자가 보낸 request body의 값을 Map으로 만들고 원하는 key값에 해당하는 값을
isLogin Method로 넘기면 DataBase에 저장된 userId의 키값에 해당하는 user 객체를 가져온 뒤 값이 동일한지 비교한다.
이후 location Method로 돌아온 흐름은 isLogin이 true인지 false인지에 따라 Location을 String 값으로 반환해준다.
login 성공 테스트 진행을 위해
userId = a / password = 123 / name = a / email = a@a.a로 회원가입을 하고
login을 하였을 때 location으로 지정해둔 /user/list.html로 잘 이동하는 걸 확인하였다.
하지만 이상하게도 login이 실패할 경우 location의 url이 아니라 /user/login으로 이동하였는데 이 부분은 나의 실수였다.
실패했을 경우 /user/login.html이 아닌 /user/login_failed.html로 이동하도록 변경해주고 다시 테스트한 결과
원하는 페이지로 이동한 것을 확인할 수 있었다.
- 회고 -
이미 만들어진 Class나 Method 등을 이용하여 구현해오던 나에겐
처음엔 302 Found를 적용하는 것도 힘들었다.
Location을 지정할 때 ":" 차이로 읽히지 않는 때도 있었고, 이런저런 삽질은 있었지만
삽질한 시간에 비해 더 많은 것을 배울 수 있었다.
'읽고 쓰고 씹고 즐기고 > Java' 카테고리의 다른 글
Request Handler - stylesheet 지원하도록 구현하기. (0) | 2020.04.06 |
---|---|
Request Handler - Login 여부를 cookie를 통해 확인하기. (0) | 2020.04.06 |
Request handler - 302Found (0) | 2020.04.03 |
Request Handler - body의 값을 이용하여 객체 만들기 (0) | 2020.04.03 |
Request Handler - Header의 body를 읽어오기. (0) | 2020.03.11 |
- Total
- Today
- Yesterday
- spring-boot
- 개발일지
- Java
- springboot
- 일지
- 회고
- 모듈
- web
- Request Handler
- 스터디 회고
- 인텔리J
- JAR
- mapping
- @Autowired
- body
- 프로그래머스
- MySQL
- 멀티모듈
- Spring Boot
- HTTP
- JavaScript
- homebrew
- 한 입 크기로 잘라먹는 리액트
- graphQL
- header
- 자바스크립트
- 개발
- Spring
- RequestHandler
- Gradle
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |