JSP
[JSP] 44. <JSP와 MVC 패턴을 사용한 to-do 프로젝트> (3)
Song hyun
2024. 7. 9. 12: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
반응형