티스토리 뷰

JSP로 게시판 만들기 할때 해보고 스프링으로 처음 만들어보는 로그인!

jsp와는 다르게 스프링은 먼저 설정해 주어야 하는 것들이 많다!

그건 다 넣었다고 생각하고 포스팅 하기로 하자

스프링 설정 방법 포스팅은 다음으로

로그인 할 때  필요한 것
1. 해당 아이디와 비밀번호 정보가 DB에 있는지 확인
2. 해당 아이디와 비밀번호로 로그인이 가능한지
3. 로그인 한 아이디 유저의 정보 가져오기

1. 먼저 db 테이블에 등록된 컬럼들로 dto를 만들어주기

2.  로그인 jsp 작성

<form action="/login/login" method="post">
	<div>
		<h1 style="font-size: 68px;">Login</h1>
	</div>
	<div class="input_box">
		<label for="userId"></label>
		<input type="text" name="userId" id="userId" placeholder=" ID"><br>
	</div>
	<div class="input_box">
		<label for="userPw"></label>
		<input type="password" name="userPw" id="userPw"placeholder=" PASSWORD"><br>
	</div>
	<div class="input_box">
		<label for="autologin"></label>
		<input type="checkbox">자동 로그인
	</div>
	<br>
	<div class="forget">
		<a href="#">아이디 찾기</a> | <a href="#">비밀번호 찾기</a> | <a href="/login/join">회원가입</a>
	</div>
	<br>
	<div class="loginbtn">
		<button class="btn">Login</button><br>
	</div>
</form>

3.  userController 작성해주기

// 로그인 페이지 이동
@GetMapping("/login/login")
public void loginPage() {}

// 로그인 - true or false
@PostMapping("/login/login")
 public String userlogin(HttpSession session, Users users) {
	logger.info("{}", users);
	
    // 로그인 인증
	boolean isLogin = usersService.login(users);			
	Users info = usersService.getuserInfo(users);
		if (isLogin) {
			logger.info("userlogin() - 로그인 성공");
			
			// 세션에 파라미터 값 저장
			session.setAttribute("login", isLogin);
			session.setAttribute("userno", info.getUserno());
			session.setAttribute("userId", info.getUserId());
			session.setAttribute("role", info.getRole());
			
			logger.info("userno : {}",info.getUserno());
			logger.info("userrole : {}",info.getRole());

			// 메인 페이지로 리다이렉트
			return "redirect:/login/main";
		} else {
			logger.info("userlogin() - 로그인 실패");

			// 세션 삭제
			session.invalidate();

			// 로그인실패시 로그인 페이지로 리다이렉트
			return "redirect:/login/login";
		} // if(isLogin)문 end
	} // userlogin() end
    
    @RequestMapping("/login/logout")
//	public String userLogout(HttpSession session) {
//		logger.info("userLogout() - 로그아웃 성공");
//		// 세션 삭제
//		session.invalidate();
//		// 메인페이지로 리다이렉트
//		return "redirect:/login/main";
//	}
  • 로그인 하면 유저 아이디를 세션에 저장하고 저장된 아이디로 유저의 정보들을 저장해둔다.
  • role은 관리자가 로그인 했을 때 유저와는 다르게 페이지 상단 부분에 관리자 페이지로 갈 수 있게 하려고 저장함
  • 후에 인터셉터로 로그인 한 사용자만 페이지 이용할 수 있도록 구현할것임

4. userService 

//유저 정보 가져오기
@Override
public Users getuserInfo(Users users) {
	return usersDao.selectuserByUserId(users);
}

// 로그인 유무
@Override
public boolean login(Users users) {
  // 파라미터 값을 가져와 dao에서 일치하는 행을 확인해야함.
  // 매개변수 다시 확인해보기
  int res = usersDao.selectCntByUserIdPw(users);
 
  // 유저 유저 아이디로 role가져오기 (admin, user 구분)
 String role = usersDao.selectroleByuseridpw(users);
		
		if(res>0) {
			logger.info("login() - 로그인 성공");		
			return true;
		}else {		
			logger.info("login() - 로그인 실패");			
			return false;
		}
	}

 

5. userMapper.xml 구현

  <select id="selectCntByUserIdPw" resultType="int" parameterType="com.kh.jaManChw.dto.Users">
  	SELECT count(*)
  	FROM USERS
  	WHERE USER_ID=#{userId} AND USER_PW=#{userPw}
  </select>
  
  <select id="selectuserByUserId" resultType="com.kh.jaManChw.dto.Users" parameterType="string">
  	SELECT * 
  	FROM USERS 
  	WHERE USER_ID=#{userId} 
  </select>
  
  <select id="selectroleByuseridpw" resultType="String" parameterType="com.kh.jaManChw.dto.Users">
  	SELECT ROLE
  	FROM USERS
  	WHERE USER_ID=#{userId} AND USER_PW=#{userPw}
  </select>

후에 다시 정리 필요함

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/07   »
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 31
글 보관함