MemberSql
<!-- 아이디에 따른 이름 반환 -->
<select id="getNameById" parameterType="String" resultType="String">
select name from bootmember where id=#{id}
</select>
<!-- id와 pass 파라미터로 넘겨서 1 / 0 -->
<select id="loginIdPassCheck" parameterType="Map" resultType="int">
select count(*) from bootmember where id=#{id} and pass=#{pass}
</select>
<select id="getDataById" parameterType="String" resultType="MemberDto">
select * from bootmember where id=#{id}
</select>
MemberMapperInter
public String getNameById(String id);
public int loginIdPassCheck(Map<String, String> map);
public MemberDto getDataById(String id);
MemberServiceInter
public String getNameById(String id);
public int loginIdPassCheck(String id, String pass);
public MemberDto getDataById(String id);
MemberService
@Override
public String getNameById(String id) {
return mapper.getNameById(id);
}
@Override
public int loginIdPassCheck(String id, String pass) {
Map<String, String> map = new HashMap<>();
map.put("id", id);
map.put("pass", pass);
return mapper.loginIdPassCheck(map);
}
@Override
public MemberDto getDataById(String id) {
return mapper.getDataById(id);
}
loginController
@Controller
public class LoginController {
@Autowired
MemberService service;
@GetMapping("/login/main")
public String loginform(HttpSession session, Model model) {
// 폼에 아이디 얻기
String loginUser = (String) session.getAttribute("loginUser");
// 로그인 상태?
String loginOk = (String) session.getAttribute("loginOk");
// 한번도 실행 x -> null
if (loginOk == null)
return "/login/loginForm";
else {
// 로그인 중일 때 request에 로그인 한 이름 저장
String name = service.getNameById(loginUser);
model.addAttribute("name", name);
return "/login/logoutForm";
}
}
@PostMapping("/login/loginProcess")
public String loginProc(@RequestParam String id, @RequestParam String pass,
@RequestParam(required = false) String cbSave, HttpSession session, Model model) {
int check = service.loginIdPassCheck(id, pass);
if (check == 1) {
session.setMaxInactiveInterval(60 * 60 * 8);
session.setAttribute("loginUser", id);
session.setAttribute("loginOk", "yes");
session.setAttribute("saveOk", cbSave);
// id에 대한 데이터
MemberDto dto = service.getDataById(id);
session.setAttribute("loginPhoto", dto.getPhoto());
return "redirect:main";
} else {
return "/member/passFail";
}
}
@GetMapping("/login/logoutProcess")
public String logoutProc(HttpSession session) {
session.removeAttribute("loginOk");
return "redirect:main";
}
}
loginForm
<div align="center">
<form action="loginProcess" method="post">
<table class="table table-bordered" style="width: 400px; height: 200px;">
<caption>
<b style="font-size: 1.5em">USER LOGIN</b>
</caption>
<tr>
<td style="vertical-align: middle;"><input type="text" name="id" placeholder="Input ID" style="height: 45px"
class="form-control" required="required" autofocus="autofocus" value="${sessionScope.saveOk==null?"":sessionScope.loginUser }"></td>
</tr>
<tr>
<td style="vertical-align: middle;"><input type="password" name="pass" placeholder="Input PW" style="height: 45px"
class="form-control" required="required"></td>
</tr>
<tr>
<td><input type="checkbox" name="cbSave" ${sessionScope.saveOk==null?"":"checked" }> save
ID
<button style="float: right" type="submit" class="btn btn-success">LOGIN</button></td>
</tr>
</table>
</form>
</div>
*@RequestParam*(required = false) String cbSave