이전 버전의 hello 프로젝트에는

일단 흐름을 계속 보면서 익힙시다 (가능하다면)


기능소개



로그인 

1. 서비스에서 req.getParameter로 input값을 저장할 String 변수 두 개를 만듬. (username , password)

2. UserDao의 login(Users uesrs) 함수의 매개변수를 만들어주기위해 Users 객체의 틀을 만든다.

3. UserDao 에서 DB연결 후 Users 객체 userEntity 에 DB에서 get해온값으로 build 한다. userEntity를 반환한다.

4. 다시 서비스로 돌아와, if(UserEntity != null) 이라면 



UsersService.java 일부

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
32
33
34
35
36
37
38
39
40
41
public Users 로그인(HttpServletRequest req, HttpServletResponse resp) throws SQLException, IOException {
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println("=========loginPorc Start=========");
        System.out.println(username);
        System.out.println(password);
        System.out.println("=========loginPorc End=========");
        // 2번 DB값이 있는지 select 해서 확인
        // login함수 의 매개변수를 만들어주기위한 빌드업 (Users 틀 만들기)
        Users user = Users.builder()
                .username(username)
                .password(password)
                .build();
 
        // login 함수 실행 (sql로 데이터베이스에 select)
        UsersDao usersDao = new UsersDao();
        //login 의 반환형이 Users
        Users userEntity = usersDao.login(user);       // UserDao
        
        if(userEntity != null) {
            // session에는 사용자 패스워드 절대넣지않기
            // 3번 세션 키 발급
 
            // session 두 줄 이 무슨 역할 하는건가요??
            HttpSession session = req.getSession();
            //setAttribute : name으로 지정한 이름에 value값을 할당합니다.
            session.setAttribute("sessionUser", userEntity); // name , Object(value)
            
            Script.href(resp, "index.jsp""로그인 성공123");
            //한글처리를 위해 resp객체를 건드린다.
            // mime타입
            // http header 에 context-type
            
//            resp.sendRedirect("index.jsp"); 데이터를 들고 이동하는게 아니고 그냥 페이지이동만하는 기능.(필요없음)
            return user;
        }else {
            Script.back(resp, "로그인실패 -1");
            resp.sendRedirect("auth/login.jsp");
        }
        return null;
    }
cs





UserDao.java 일부

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
public Users login(Users users) throws SQLException {
        StringBuffer sb = new StringBuffer();
        sb.append("SELECT id, username, password, email FROM users WHERE username = ? AND password = ?");
        String sql = sb.toString();
        Connection conn = DBConnMySQL.getInstance();
        try {
            PreparedStatement pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, users.getUsername());
            pstmt.setString(2, users.getPassword());
//            int result2 = pstmt.executeQuery(sql); // 변경된 row count를 리턴, 오류 시 -1를 리턴
//            System.out.println("result2 : " + result2);
            ResultSet rs = pstmt.executeQuery();
            if(rs.next()) { //출력할 행이 여러개면 while
                Users userEntity = Users.builder()
                        .id(rs.getInt("id"))  //Resultset rs 에서 가져오는중 = DB에서 가져오는중
                        .username(rs.getString("username"))
                        .password(rs.getString("password"))
                        .build();
                System.out.println("로그인 성공");
                return userEntity;
            }
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("로그인 실패");
        return null;
    }
cs




+ Recent posts