- [JSP] 42. <JSP와 MVC 패턴을 사용한 to-do 프로젝트> (1)2024년 07월 09일
- Song hyun
- 작성자
- 2024.07.09.:56
728x90반응형[JSP] 42. <JSP와 MVC 패턴을 사용한 to-do 프로젝트> (1)
1. MVC 패턴을 활용한 코드 설계(1) 회원가입 + 로그인
(2) todo작성, 조회, 수정, 삭제 (CRUD)
2. 필요 라이브러리 확인 : HikariCP의 의존성
3. 코드 작성
(1) BasicDBUtil.javapackage com.tenco.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class BasicDBUtil { private static final String URL="jdbc:mysql://localhost:3306/m_todo?serverTimezone=Asia/Seoul"; private static final String USER="root"; private static final String PASSWORD="asd123"; public static Connection getConnection() throws SQLException { try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } return DriverManager.getConnection(URL,USER,PASSWORD); } }
(2) web.xml
<?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/MyDB" auth="Container" factory="com.zaxxer.hikari.HikariJNDIFactory" uniqueResourceName="MyDB" minimumIdle="5" maximumPoolSize="10" connectionTimeOut="30000" idleTimeOut="60000" maxLifeTime="1800000" jdbcUrl="jdbc:mysql://localhost:3306/m_todo?serverTimezon=Asia/Seoul" driverClassName="com.mysql.cj.jdbc.Driver" username="root" password="asd123" /> </Context>
*META_INF 폴더는 보안으로 감춰져 있기 때문에, 외부 URL 사용이 불가능하다!
**왜 context.xml을 사용하는걸까?**
-> 자원 공유의 목적
-> 환경 설정 분리
=> 즉, 대규모 애플리케이션에서는 많은 설정이 필요하다.
***context.xml의 역할과 JNDI의 개념***
-> context.xml이란?
-> JNDI(Java Naming and Directory Interface)
! 중요
(3) DBUtil.javapackage com.tenco.utils; import java.sql.Connection; import java.sql.SQLException; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; public class DBUtil { private static DataSource dataSource; // 정적 초기화 블록, static block static { // TODO - 삭제 예정 System.out.println("111111111111111"); try { // InitialContext 객체를 생성하여 JNDI API기술을 통해 // 존재하는 리소스를 찾는 방법! InitialContext ctx = new InitialContext(); dataSource=(DataSource) ctx.lookup("java:comp/env/jdbc/MySQL"); } catch (NamingException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { return dataSource.getConnection(); } }
*InitialContext 객체의 역할?
-InitialContext 객체는(4) m_todo.sql
create database If NOT EXISTS m_todo; use m_todo; -- 정규화 1,2,3 정규 테이블 설계 -- users 테이블을 생성 -- SQL에도 코딩 컨벤션이 있지만, 사마다 다르다! create table if not exists users( id int auto_increment primary key, username varchar(50) not null, password varchar(255) not null, email varchar(100) not null, created_at timestamp default current_timestamp ); desc users; alter table users add constraint unique(username); -- todos 테이블 생성 create table if not exists todos( id int auto_increment primary key, title varchar(100) not null, description text, created_at timestamp default current_timestamp, due_date date, completed boolean default false, user_id int not null, foreign key(user_id) references users(id) ); -- 샘플 데이터 삽입 -- users 테이블에 데이터 삽입 INSERT INTO users (username, password, email) VALUES ('홍길동', 'asd123', 'hong@example.com'), ('김철수', 'asd123', 'kim@example.com'), ('이영희', 'asd123', 'lee@example.com'); -- todos 테이블에 데이터 삽입 INSERT INTO todos (user_id, title, description, due_date, completed) VALUES (1, '할 일 1', '할 일 1에 대한 설명입니다.', '2023-12-31', FALSE), (1, '할 일 2', '할 일 2에 대한 설명입니다.', '2024-01-15', TRUE), (2, '할 일 3', '할 일 3에 대한 설명입니다.', '2024-02-28', FALSE), (3, '할 일 4', '할 일 4에 대한 설명입니다.', '2024-03-10', TRUE); select * from users; select * from todos;
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] 44. <JSP와 MVC 패턴을 사용한 to-do 프로젝트> (3) (0) 2024.07.09 [JSP] 43. <JSP와 MVC 패턴을 사용한 to-do 프로젝트> (2) (0) 2024.07.09 [JSP] 41. <JSP와 MVC 패턴을 사용한 to-do 프로젝트> (0) : 사전 기반 지식 (0) 2024.07.09 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)