1. 프로젝트 - src - main - webapp - WEB-INF - jsp - main 폴더 하위에 login.jsp 파일 생성
<login.jsp 주요 코드>
<form action="${pageContext.request.contextPath}/loginCK.do" novalidate="novalidate" method="post">
<fieldset>
<div>
<section>
<div class="row input_size">
<label class="label col col-4">아이디</label>
<div class="col col-8">
<label class="input">
<input type="text" name="id" autocomplete="off" autofocus>
</label>
</div>
</div>
</section>
<section>
<div class="row input_size">
<label class="label col col-4">비밀번호</label>
<div class="col col-8">
<label class="input">
<input type="password" name="pw" autocomplete="current-password">
</label>
</div>
</div>
</section>
</div>
</fieldset>
<button class="btn btn-user btn-block" style="color: white; background-color: red" type="submit">로그인</button>
</form>
위 코드는 로그인 기능을 수행하기 위해 임시로 만든 아직 꾸며지지 않은 jsp파일이다.
또한, jsp 내 코드에서 주요 코드만 가져온 것이기 때문에 아래와 같이 나오지 않을 수도 있다.
2. Controller
@RequestMapping(value = "/loginCK.do")
public void loginCK(CommandMap commandMap, HttpServletRequest req, HttpServletResponse res) throws Exception {
res.setContentType("text/html; charset=UTF-8");
PrintWriter out = res.getWriter();
if (commandMap.getMap().get("id").equals("")) {
out.print("<script>alert('아이디를 입력해주세요.');window.location.href='login_page.do'</script>");
return;
}
int flag = memberService.Login(commandMap.getMap(), req);
if (flag == 1) {
out.print("<script>alert('가입된 아이디가 아닙니다. 회원가입을 진행해주세요.');window.location.href='login_page.do'</script>");
} else if (flag == 2) {
out.print("<script>alert('비밀번호를 잘못 입력하였습니다.');window.location.href='login_page.do'</script>");
} else if (flag == 3) {
HttpSession session = req.getSession();
Map<String, Object> map = (Map<String, Object>) session.getAttribute("member_info");
out.print("<script>window.location.href='sample/openSampleBoardList.do'</script>");
}
}
3. Service
public interface MemberService {
int Login(Map<String, Object> map, HttpServletRequest req) throws Exception;
}
4. ServiceImpl
@Resource(name = "memberDAO")
private MemberDAO memberDAO;
@Override
public int Login(Map<String, Object> map, HttpServletRequest req) throws Exception {
HttpSession session = req.getSession();
Map<String, Object> resultMap = new HashMap<>();
if ((resultMap = memberDAO.Login(map)) == null) {
log.error("등록이 안된 회원 ID : " + map.get("id"));
return 1;
} else {
try {
map.put("pw", (String)map.get("pw"));
} catch (Exception e) {
log.error("비밀번호 sha 암호화 오류 : " + e);
}
if ((resultMap = memberDAO.Login_2(map)) == null) {
log.error("비밀번호 오류 ID : " + map.get("id"));
return 2;
}
}
session.setAttribute("member_info", resultMap);
log.debug("로그인 : " + resultMap);
return 3;
}
5. DAO
@Repository
public class MemberDAO extends AbstractDAO {
Logger log = Logger.getLogger(this.getClass());
public Map<String, Object> Login(Map<String, Object> map) {
return (Map<String, Object>) selectOne("member.Login", map);
}
public Map<String, Object> Login_2(Map<String, Object> map) {
return (Map<String, Object>) selectOne("member.Login_2", map);
}
}
6. SQL
<mapper namespace="member">
<select id="Login" parameterType="hashmap" resultType="hashmap">
<![CDATA[
SELECT
id, pw
FROM
member_info
WHERE
id=#{id}
]]>
</select>
<select id="Login_2" parameterType="hashmap" resultType="hashmap">
<![CDATA[
SELECT
id, pw, name
FROM
member_info
WHERE
id=#{id}
AND
pw=#{pw}
]]>
</select>
</mapper>
7. 결과
로그인 수행 시 로그에 "로그인 : {pw, name, id} 의 값들이 나타나면서 정상적으로 로그인 기능이 수행된 것을 확인할 수 있다.
'Spring' 카테고리의 다른 글
[MAVEN] 환경변수 설정 (mvn명령 사용하기) (0) | 2021.12.06 |
---|---|
Spring(스프링) 로그아웃 기능 구현 (0) | 2021.10.17 |
Spring(스프링) 비밀번호 암호화 (SHA-256 알고리즘) (0) | 2021.10.17 |