JSP

[JSP] 43. <JSP와 MVC 패턴을 사용한 to-do 프로젝트> (2)

Song hyun 2024. 7. 9. 11:47
728x90
반응형

[JSP] 43. <JSP와 MVC 패턴을 사용한 to-do 프로젝트> (2)

 

1. UserDAO

package com.tenco.model;

import java.util.List;

public interface UserDAO {
	int addUser(UserDTO userDTO);
	UserDTO getUserById(int id);
	UserDTO getUserByUsername(String username);
	List<UserDTO> getAllUsers();
	int updateUser(UserDTO userDTO, int principalId); // 권한 (마이 정보 -> 나만 바꿔야 함!)
	// 인증 시에는 세션도 체크해야 한다. (세션 ID)
	// principalId == 세션 ID
	int deleteUser(int id); // 세션 인증 필요
}

 

 

 

2.UserDTO

package com.tenco.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

/**
 * 데이터를 변환, 담는 개념, 메서드를 사용할 수 있다.
 * 단순히 데이터만 담는 개념 => VO
 */

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
public class UserDTO {
	private int id;
	private String username;
	private String password;
	private String email;
	private String createdAt;
	
	// 필요하다면 메서드 정의 가능!ㅉ
}

 

 

 

3. UserDAOImpl

package com.tenco.model;

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) {
		// TODO Auto-generated method stub
		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;
	}

}

 

 

 

4. UserController.java

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;

// 주소설계
// 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();
		switch(action) {
		case "/signIn":
			// 로그인 페이지로 보내는 동작 처리
			request.getRequestDispatcher("/views/signIn.jsp").forward(request, response);
			break;
		case "/signUp":
			// 회원가입 페이지로 보내는 동작 처리
			request.getRequestDispatcher("/views/signUp.jsp").forward(request, response);
			break;
		default:
			response.sendError(HttpServletResponse.SC_NOT_FOUND);
			break;
		}
	}
	
	// http://localhost:8080/mvc/views/todoForm.jsp

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

 

 

5. signIn.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>여기는 로그인 JSP 파일입니다.</h1>
</body>
</html>

 

 

6. signUp.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>여기는 회원가입 JSP 파일입니다.</h1>
</body>
</html>

 

 

7. todoForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>여기는 todoForm 페이지입니다.</h1>
</body>
</html>

 

 

*페이지를 보안 처리하기

(WEB_INF -> views)

728x90
반응형