국비지원 Spring프레임워크/JSP
이전 MVC 프로젝트에 delete 기능 추가하기.
대엽
2020. 12. 24. 17:54
이전 버전의 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 |