π₯ λ§μ΄λ°ν°μ€, μΈν°μ ν°, λΉμ€μ½ν 17κ°
1οΈβ£ λ§€λ² Rq κ°μ²΄κ° μμ±λλλ‘ (@RequestScope μ νμ©)
β‘οΈ @SessionScope μ κ²½μ° νλ‘κ·Έλ¨ μ€ν μ΅μ΄ 1νμ μμ±λμ΄ μ¬μ©λλ―λ‘, @RequestScope λ₯Ό νμ©νμ¬ μμ²μ΄ λ€μ΄μ¬ λλ§λ€ Rq κ°μ²΄κ° λ§€λ² μλ‘ μμ±λλλ‘ ν μ μλ€.
β Rq κ°μ²΄λ₯Ό ν΅ν΄ μμ²λ§λ€ μμ² URL μ νλ©΄μμ νμΈν μ μλλ‘
- Rq
@Component // Bean λ±λ‘
@RequestScope // μμ²λ§λ€ μμ±
@RequiredArgsConstructor
public class Rq {
// μλ΅
private final HttpServletRequest req;
// μλ΅
public String getCurrentUrl() { // url νμΈ
String url = req.getRequestURL().toString();
String queryString = req.getQueryString();
if (queryString != null && queryString.length() > 0) {
url += "?" + queryString;
}
return url;
}
}
- list.html
κ²μλ¬Ό 리μ€νΈ <br>
[[${@rq.getCurrentUrl()}]]
- write.html
κ²μλ¬Ό μμ± νμ΄μ§ <br>
[[${@rq.getCurrentUrl()}]]

β‘ Rq κ°μ²΄λ₯Ό ν΅ν΄ λ‘κ·ΈμΈ μ¬λΆνμΈ (μΈν°μ ν°μ κΈ°λ³Έ λ‘μ§μ μ μ¬)
// μλ΅
public class Rq {
// μλ΅
private final HttpServletRequest req;
private final HttpSession session;
// μλ΅
public long getLoginedMemberId() {
Long id = (Long) session.getAttribute("loginedMemberId");
if (id == null) {
return -1;
}
return id;
}
public boolean isLogined() {
return getLoginedMemberId() >= 0;
}
public boolean isLogout() {
return isLogined() == false;
}
}
- μΈν°μ ν° μμ
// μλ΅
public class NeedToLoginInterceptor implements HandlerInterceptor {
private final Rq rq;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
log.debug("NeedToLoginInterceptor::preHandle μ€νλ¨");
rq.increaseCount();
log.debug("rq : " + rq + ", rq count : " + rq.getCount());
// // Rq λ₯Ό @RequestScope λ‘ μ€μ ν λ‘κ·ΈμΈ λ‘μ§ μΆκ°ν¨μΌλ‘μ μλ΅λλ μ½λ
// // Session νμ©
// HttpSession session = request.getSession();
// Long loginedMemberId = (Long) session.getAttribute("loginedMemberId");
//
// boolean isLogined = loginedMemberId != null;
if(!rq.isLogined()) { // rq μ λ§€μλλ₯Ό νμ©νμ¬ μ½κ² νμΈ κ°λ₯
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
response.getWriter().append("λ‘κ·ΈμΈ ν μ΄μ©λ°λλλ€.");
return false; // Controller μ§μ
λͺ»ν΄λ³΄κ³ μ’
λ£λ¨
}
return HandlerInterceptor.super.preHandle(request, response, handler);
}
}

β’ Rq κ°μ²΄λ₯Ό ν΅ν΄ μ μ λ‘κ·ΈμΈμ νμμ μ 보λ₯Ό μΈμ μ μ μ₯νλλ‘
- MemberController μμ λ‘κ·ΈμΈ μ rq κ°μ²΄μ λ‘κ·ΈμΈ member μ 보 μ λ¬
@Controller
@RequiredArgsConstructor
@RequestMapping("/member")
public class MemberController {
private final MemberService memberService;
private final Rq rq;
// (μλ΅)
@PostMapping("/login")
public String login(String username, String password, HttpSession session ) {
Member member = memberService.getMemberByUsername(username);
// (μλ΅)
// λ‘κ·ΈμΈ μ±κ³΅ μ Rq λ‘ λ©€λ² μ 보 μ λ¬
rq.setLoginDone(member);
return "redirect:/?msg=loginSuccess";
}
}
- Rq κ°μ²΄μμ session μ νμμ μ 보 μ μ₯ (μμ΄λ, μ΄λ¦, μ΄λ©μΌ λ±)
@RequiredArgsConstructor
public class Rq {
// (μλ΅)
private final HttpSession session;
// (μλ΅)
public void setLoginDone(Member member) {
// login κ΄λ ¨ μΈν°μ
ν°μκ² λ‘κ·ΈμΈ μ 보λ₯Ό μ λ¬
// λ¨μν logined μ T/F λ₯Ό 보λ΄λ©΄ λ‘κ·ΈμΈν μ μ κ° λκ΅°μ§ μ μ μμ
session.setAttribute("loginedMemberId", member.getId());
session.setAttribute("loginedMemberName", member.getName());
// μ΄λ©μΌ λ±λ± λ±λ‘ κ°λ₯
}
}'TIL π' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| TIL 24μΌμ°¨ (2022.01.05) (0) | 2023.01.05 |
|---|---|
| TIL 23μΌμ°¨ (2022.12.29) (0) | 2023.01.02 |
| TIL 21μΌμ°¨ (2022.11.08) (0) | 2022.11.08 |
| TIL 20μΌμ°¨ (2022.11.07) (0) | 2022.11.07 |
| TIL 19μΌμ°¨ (2022.11.04) (0) | 2022.11.04 |