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
반응형