- [JSP] 44. <JSP와 MVC 패턴을 사용한 to-do 프로젝트> (3)2024년 07월 09일
- Song hyun
- 작성자
- 2024.07.09.:39
728x90반응형[JSP] 44. <JSP와 MVC 패턴을 사용한 to-do 프로젝트> (3)
1.UserController.java
*보안상의 이유로 [views]를 [WEB-INF]에 넣는다.
*GET/POST는 방식 상의 차이가 있는 것이지, URL은 동일하다.
package com.tenco.controller; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import com.tenco.model.UserDAO; import com.tenco.model.UserDAOImpl; import com.tenco.model.UserDTO; // 주소설계 // http://localhost:8080/mvc/user/ @WebServlet("/user/*") public class UserController extends HttpServlet { private static final long serialVersionUID = 1L; private UserDAO userDAO; public UserController() { super(); } @Override public void init() throws ServletException { userDAO=new UserDAOImpl(); } // GET 방식으로 들어올 때, // http://localhost:8080/mvc/user/signUp --> 회원가입 페이지 // http://localhost:8080/mvc/user/signIn --> 로그인 페이지 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getPathInfo(); System.out.println("action : "+action); switch(action) { case "/signIn": break; case "/signUp": signUp(request,response); break; default: response.sendError(HttpServletResponse.SC_NOT_FOUND); break; } } // 회원 가입 기능 private void signUp(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 인증 검사 필요 없는 기능 String username = request.getParameter("username"); String password=request.getParameter("password"); String email=request.getParameter("email"); // 방어적 코드 작성 (username) if(username==null || username.trim().isEmpty()) { request.setAttribute("errorMessage", "사용자 이름을 입력하시오."); request.getRequestDispatcher("/WEB-INF/views/signUp.jsp").forward(request,response); return; } // 방어적 코드 작성 (password) // 방어적 코드 작성 (email) UserDTO userDTO = UserDTO.builder() .username(username) .password(password) .email(email) .build(); int resultRowCount = userDAO.addUser(userDTO); System.out.println("resultRowCount : "+resultRowCount); if(resultRowCount==1) { response.sendRedirect(" http://localhost:8080/mvc/user/signIn"); } else { response.sendRedirect(" http://localhost:8080/mvc/user/signIn"); } } // 로그인 기능 요청 (자원의 요청 -- GET 방식, 하지만 예외 처리 -> because of 보안) // POST 요청 시 - 로그인 기능 구현, 회원 가입 기능 구현 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getPathInfo(); System.out.println("action : "+action); switch(action) { case "/signIn": // 로그인 페이지로 보내는 동작 처리 request.getRequestDispatcher("/WEB-INF/views/signIn.jsp").forward(request, response); break; case "/signUp": // 회원가입 페이지로 보내는 동작 처리 request.getRequestDispatcher("/WEB-INF/views/signUp.jsp").forward(request, response); break; default: response.sendError(HttpServletResponse.SC_NOT_FOUND); break; } } }
2. UserDAOImpl.java
package com.tenco.model; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.List; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; public class UserDAOImpl implements UserDAO{ private DataSource dataSource; public UserDAOImpl() { try { InitialContext ctx=new InitialContext(); dataSource=(DataSource)ctx.lookup("java:comp/env/jdbc/MyDB"); } catch (NamingException e) { e.printStackTrace(); } } @Override public int addUser(UserDTO userDTO) { int resultCount = 0; String sql= "INSERT INTO users(username,password,email) VALUES (?,?,?)"; try (Connection conn = dataSource.getConnection();){ PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, userDTO.getUsername()); pstmt.setString(2, userDTO.getPassword()); pstmt.setString(3, userDTO.getEmail()); resultCount = pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } return 0; } @Override public UserDTO getUserById(int id) { // TODO Auto-generated method stub return null; } @Override public UserDTO getUserByUsername(String username) { // TODO Auto-generated method stub return null; } @Override public List<UserDTO> getAllUsers() { // TODO Auto-generated method stub return null; } @Override public int updateUser(UserDTO userDTO, int principalId) { // TODO Auto-generated method stub return 0; } @Override public int deleteUser(int id) { // TODO Auto-generated method stub return 0; } }
728x90반응형'JSP > Todo 리스트 만들기' 카테고리의 다른 글
[JSP] 46. <JSP와 MVC 패턴을 사용한 to-do 프로젝트> (5) (0) 2024.07.09 [JSP] 45. <JSP와 MVC 패턴을 사용한 to-do 프로젝트> (4) (0) 2024.07.09 [JSP] 43. <JSP와 MVC 패턴을 사용한 to-do 프로젝트> (2) (0) 2024.07.09 [JSP] 42. <JSP와 MVC 패턴을 사용한 to-do 프로젝트> (1) (0) 2024.07.09 [JSP] 41. <JSP와 MVC 패턴을 사용한 to-do 프로젝트> (0) : 사전 기반 지식 (0) 2024.07.09 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)