
MyBatis에서 쿼리 넘길 때 기본적으로 파라미터 하나만을 보낼 수 있음
=> 2개 이상 보내기 위에서는
@Param("이름") 으로 명시해주는 방법#{arg0}, #{arg1} ... 또는 #{param1}, #{param2} ... 로 사용request.getSession(false) : 세션이 없으면 생성하지 말고, 있는것만 리턴해
request.getSession(true) : 세션이 없으면 생성해서 리턴, 있으면 있는거 리턴 (기본값)
사이트 돌아다니다가 로그인 하고, 로그인 하고나면 보던 페이지로 가는 방법
<form action="/login/login" method="post">
<input type="hidden" name="acc_url" value="${header.referer}">
<div><span>아이디 : <input type="text" name="user_id" id="user_id" <c:if test="${!empty cookie['save_id'].value}">value="${cookie['save_id'].value}" </c:if></span></div>
<div><span>비밀번호 : <input type="password" name="pwd" id="pwd" value=""></span></div>
<div>
<label for="save_id"><input type="checkbox" name="save_id" id="save_id" <c:if test="${!empty cookie['save_id'].value}">checked</c:if> >아이디 저장</label>
<label for="auto_login"><input type="checkbox" name="auto_login" id="auto_login" <c:if test="${!empty cookie['auto_login'].value}">checked</c:if> >자동 로그인</label>
</div>
<div>
<button type="submit">로그인</button>
</div>
</form>
@RequestParam을 이용해서 기본값을 지정해준 후 값을 받는다. @RequestMapping(value = "/login", method = RequestMethod.POST)
public String loginPOST(@Valid MemberDTO memberDTO,
@RequestParam(name = "acc_url", defaultValue = "/bbs/list") String acc_url,
@RequestParam(name = "save_id", defaultValue = "") String save_id,
@RequestParam(name = "auto_login", defaultValue = "") String auto_login,
RedirectAttributes redirectAttributes,
HttpServletRequest request,
HttpServletResponse response,
BindingResult bindingResult
) {
log.info("---------------------");
log.info("LoginController => loginPOST()");
log.info("user_id : " + memberDTO.getUser_id());
log.info("pwd : " + memberDTO.getPwd());
log.info("save_id : " + save_id);
log.info("auto_login : " + save_id);
log.info("---------------------");
if(bindingResult.hasErrors()) {
redirectAttributes.addFlashAttribute("err", bindingResult.getAllErrors());
return "redirect:/login/login";
}
MemberDTO loginDTO = serviceIf.login(memberDTO.getUser_id(), memberDTO.getPwd());
if (loginDTO != null) {
if (save_id.equals("on")) {
Cookie cookie = new Cookie("save_id", loginDTO.getUser_id());
cookie.setPath("/");
cookie.setMaxAge(999999);
response.addCookie(cookie);
}
if (auto_login.equals("on")) {
Cookie cookie = new Cookie("auto_login", loginDTO.getUser_id());
cookie.setPath("/");
cookie.setMaxAge(999999);
response.addCookie(cookie);
}
HttpSession session = request.getSession();
session.setAttribute("user_id", loginDTO.getUser_id());
return "redirect:"+acc_url;
}
redirectAttributes.addFlashAttribute("err", "로그인 실패");
return "redirect:/login/login";
}
@RequestMapping(value = "/logout")
public String logout(HttpServletRequest request) {
log.info("---------------------");
log.info("LoginController => logout()");
log.info("---------------------");
HttpSession session = request.getSession(false);
//`request.getSession(false)` : 세션이 없으면 생성하지 말고, 있는것만 리턴해
//`request.getSession(true)` : 세션이 없으면 생성해서 리턴, 있으면 있는거 리턴 (기본값)
session.invalidate();
return "redirect:/bbs/list";
}
}