1월 19일(2)

SJY0000·2022년 1월 20일
0

JSP, SERVLET and DB연동

목록 보기
13/24

오늘 배운 것

  • ToDo DB연결하기

ToDo userbean 만들기

package todoApp.model;

public class User {
	private String firstName;
	private String lastName;
	private String userName;
	private String password;
	
	public User() {} // 기본 생성자는 JAVA bean용으로 필요
	
	public User(String firstName, String lastName, String userName, String password) {
		super();
		this.firstName = firstName;
		this.lastName = lastName;
		this.userName = userName;
		this.password = password;
	}
	public String getFirstName() {
		return firstName;
	}
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

DB연결 Class 생성

package todoApp.utils;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.time.LocalDate;

// DB연결을 도와주는 Class
public class JDBCUtils {
	// demo DB, useSSL=false : SSL인증을 사용하지 않음
	private static String jdbcURL = "jdbc:mysql://localhost:3306/demo?useSSL=false";
	private static String jdbcUsername = "root";
	private static String jdbcPassword = "1234";
	
	public static Connection getConnection() {
		Connection conn = null;
		
		try {
			Class.forName("com.mysql.jdbc.Driver"); // 순서 0번
			conn = DriverManager.getConnection(jdbcURL, jdbcUsername, jdbcPassword); // 순서 1번
		} catch (ClassNotFoundException e) {
			System.out.println("Driver class not found!");
		} catch (SQLException e) {
			System.out.println("SQL ERROR!");
		}
		
		return conn; //DB에 연결하여 Connection을 받아옴
	}
	// JAVA날짜를 SQL날짜로 변경
	public static Date getSQLDate(LocalDate date) {
		return java.sql.Date.valueOf(date);
	}
	// SQL날짜를 JAVA날짜로 변경
	public static LocalDate getUtilDate(Date sqlDate) {
		return sqlDate.toLocalDate();
	}
}

입력받은 데이터로 new User 객체를 생성

package todoApp.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import todoApp.dao.UserDao;
import todoApp.model.User;


@WebServlet("/register")
public class UserController extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	private UserDao userDao;
	
	@Override
	public void init() throws ServletException {
		// Servlet이 만들어 질 때 한 번 실행
		userDao = new UserDao();
	}

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

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// User 입력 시 post로 입력 데이터를 
		request.setCharacterEncoding("UTF-8"); // 한글설정
		
		String firstName = request.getParameter("firstName");
		String lastName = request.getParameter("lastName");
		String userName = request.getParameter("userName");
		String password = request.getParameter("password");
		
		// DB에 new user를 입력
		User user = new User(firstName, lastName, userName, password);

생성한 user 객체로 DB에 입력하기

package todoApp.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import todoApp.model.User;
import todoApp.utils.JDBCUtils;

// DAO는 DB에 연결해 DATA를 조작하는 Class
public class UserDao {
	// User 입력 => DB에 UserData를 입력
	public int registerUSer(User user) { // 결과가 성공이면 1, 실패면 0이하 (에러나면 - 출력) RETURN
		String INSERT_USER_SQL = "INSERT INTO users(firstName, lastName, userName, password) "
									+ "VALUES (?, ?, ?, ?)";
		
		int result = 0;
		
		try {
			Connection conn = JDBCUtils.getConnection();
			PreparedStatement pstmt = conn.prepareStatement(INSERT_USER_SQL);
			pstmt.setString(1, user.getFirstName());
			pstmt.setString(2, user.getLastName());
			pstmt.setString(3, user.getUserName());
			pstmt.setString(4, user.getPassword()); // pstmt 완성
			
			// 결과 실행의 갯수를 result에 저장 = 1 실패면 0
			result = pstmt.executeUpdate();	// pstmt 실행, 결과가 없는 Update, Delete, Drop, Insert 등은 executeUpdate() 사용
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return result;
	}
}

0개의 댓글

관련 채용 정보