[๊ตฌ๋์์นด๋ฐ๋ฏธ IT๊ตญ๋น์ง์] ์ ๋ณด์๋๊ณผ ์บก์ํ์ ๋ํด ๋ฐฐ์ฐ๊ณ , ์ค๋ผํด์ ์ค์นํ๊ณ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๊ฐ ๋ฌด์์ธ์ง ์์๋ณด์๋ค. ๊ทธ๋ฆฌ๊ณ ๋จ๋ ์๊ฐ์ ์นดํ
๊ณ ๋ฆฌ๋ณ ํ์์ ์ฉ ๊ฒ์ํ ํ๋ก์ ํธ ์์
์ ํ๋ค.
์บก์ํ๋ ์ ๋ณด์๋์ ๊ฐ๋
์ค ํ๋์ด๋ค. ์ ๋ณด์๋์ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ฅผ ์ค๊ณํ๊ธฐ ์ํด์๋ ๋นผ๋์ ์ ์๋ ๊ฐ๋
์ด๋ค.
๋ง๊ทธ๋๋ก ์ฐ๋ฆฌ๊ฐ ๋จน๋ ์์ฝ์ ๋ ์ฌ๋ฆฌ๋ฉด ์ดํดํ๊ธฐ ์ฝ๋ค. ์ธ๋ถ์์ ํจ๋ถ๋ก ์ ๊ทผํ ์ ์๋๋ก ์บก์ ์์ ์จ๊ฒจ๋๋ ๊ฒ์ธ๋ฐ, ์จ๊ฒจ๋์ ๊ฒ์ ์ ํ๋ ์กฐ๊ฑด์์ ๊บผ๋ด๋ณด์ฌ์ค ์๋ ์๋ค.
package vo;
public class Data {
public int x;
public int y;
}
์ฐ๋ฆฌ๊ฐ ์ง๊ธ๊น์ง ์จ์จ ๋ฐฉ๋ฒ๋๋ก Data ํด๋์ค๋ฅผ ์์ฑํด๋ณด์๋ค.
package vo;
public class Data2 {
// ์ ๋ณด์๋์ ๋จ๊ณ private - default - protected - public
public int x;
private int y;
}
์ด๋ฒ์๋ ์ผ๋ถ๋ฅผ ์ ๋ณด์๋ํ์ฌ Data2 ํด๋์ค๋ฅผ ์์ฑํด๋ณด์๋ค.
์ ๋ณด์๋์ ํ๊ธฐ ์ํด์๋ ์ ๊ทผ์ ์ด์๊ฐ ํ์ํ๋ฐ, ์ด ์ ๊ทผ์ ์ด์๋ 4๋จ๊ณ๋ก ๋๋๋ค.
// ํ๋๊ฐ ์ ๋ณด์๋์ด ๋์ง ์์ Data ํด๋์ค
Data d = new Data();
d.x = 7;
d.y = 10;
System.out.println(d.x);
System.out.println(d.y);
// ์ ๋ณด์๋์ด ๋์์ ๊ฒฝ์ฐ (private) ์ธ๋ถ์์ ์ฝ๊ณ ์ฐ๊ธฐ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค
Data2 d2 = new Data2();
d2.x = 7;
// d2.y = 10;
System.out.println(d2.x);
// System.out.println(d2.y);
Data ํด๋์ค๋ public์ด๊ธฐ ๋๋ฌธ์ ์ธ๋ถ์์ ์ฝ๊ณ ์ฐ๊ธฐ(์์ )๊ฐ ์์ ๋กญ๋ค.
ํ์ง๋ง Data2 ํด๋์ค์ private ์ ๊ทผ์ ์ด์๋ก ์ค์ ํ y๋ ์ฝ๊ณ ์ฐ๊ธฐ๊ฐ ๋ชจ๋ ๋ถ๊ฐ๋ฅํ ๊ฒ์ ๋ณผ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด private์ผ๋ก ์ ๋ณด์๋ํ ํด๋์ค๋ฅผ ์ธ๋ถ์์ ์ฝ๊ฑฐ๋ ์ฐ๊ณ ์ถ์ผ๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? ์ด๋ ์ฐ์ด๋ ๊ฒ์ด ๋ฐ๋ก ์บก์ํ์ด๋ค.
package vo;
//ํ๋ ์ ๋ณด์๋ + ํ๋ ์บก์ํ
public class Data3 {
// ์ ๋ณด์๋
private int x;
private int y;
// ์บก์ํ
// ์ฝ๊ธฐ ์บก์ํ ๋ฉ์๋
public int getX() {
return this.x; // this ์ฌ์ฉ์ ์์ฑ๋ ๊ฐ์ฒด(์๊ธฐ์์ )์ ๊ฐ๋ฅดํด
}
public int getY() {
return this.y;
}
// ์ฐ๊ธฐ ์บก์ํ ๋ฉ์๋
public void setX(int x) {
this.x = x;
}
public void setY(int y) {
this.y = y;
}
}
getter ๋ฉ์๋๋ก ๊ฐ์ ๋ถ๋ฌ์ ์ฝ๊ณ , setter ๋ฉ์๋๋ก ๊ฐ์ ๋ณ๊ฒฝํ๋ค. ํ์ฌ ์ด ๋ฉ์๋๋ค์ public์ผ๋ก ์ค์ ๋์๊ธฐ ๋๋ฌธ์ ์ธ๋ถ์์๋ ์ฝ๊ณ ์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํ๋ค.
this ๋ฉ์๋๋ ์๊ธฐ ์์ , ์ฆ ์์ฑ๋ ํ์ฌ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฅดํจ๋ค.
์๋์ผ๋ก get, set ์์ค์ฝ๋ ์์ฑํ๋ ๋ฐฉ๋ฒ
: ๋ง์ฐ์ค ์ฐํด๋ฆญ - Sorce - Generate Gets and Sets ๋ฅผ ์ ํํ์ฌ ์์ฑํ ํญ๋ชฉ์ ์ฒดํฌํ๋ฉด ๋!
๋ง์ฝ์ ์ ํ๋ ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ฐ์ ์ฝ๊ณ ์ธ ์ ์๊ฒ ํ๊ณ ์ถ๋ค๋ฉด get, set ๋ฉ์๋์ if๋ฌธ์ ์ถ๊ฐํ๋ฉด ๋๋ค!
Data3 d1 = new Data3();
Data3 d2 = new Data3();
// d1.x = 1;
// d2.x = 100;
d1.setX(777);
d2.setX(444);
System.out.println(d1.getX()); // this๋ d1์ ๊ฐ๋ฆฌํด
System.out.println(d2.getX()); // this๋ d2๋ฅผ ๊ฐ๋ฆฌํด
private์ผ๋ก ์ค์ ๋์์ง๋ง get, set ๋ฉ์๋๋ฅผ ํตํด ์ธ๋ถ์์ ๊ฐ์ ์ฝ๊ณ ์ด ๊ฒ์ ๋ณผ ์ ์๋ค.
์ฐ๋ฆฌ๋ ํด๋์ค๊ฐ ๋ฉ์๋์ ์์์ญํ ์ ํ๋ค๋ ๊ฒ์ ๋ฐฐ์ ๋ค. ๋ฐ๋ผ์ ๋น์ฐํ ๋ฉ์๋๋ ์ ๋ณด์๋๊ณผ ์บก์ํ๊ฐ ๊ฐ๋ฅํ๋ค!
package vo;
public class A {
private String getFirstName() {
return "๊ตฌ๋";
}
private String getSecondName() {
return "์์นด๋ฐ๋ฏธ";
}
public String getFullName() {
return this.getFirstName() + this.getSecondName();
}
}
FirstName๊ณผ SecondName์ ์ธ๋ถ์์ ํจ๋ถ๋ก ์ ๊ทผํ ์ ์๋๋ก private์ผ๋ก ์ค์ ํ๊ณ , ์ด ๋์ ๊ฐ์ ํฉ์ณ์ ๋ณด์ฌ์ค FullName ๋ฉ์๋๋ฅผ ์์ฑํ์ฌ public์ผ๋ก ๋๋ค.
A a = new A();
String name = a.getFullName();
System.out.println(name);
get๋ฉ์๋๋ฅผ ํตํด ์ธ๋ถ์์ ๊ฐ์ ๋ถ๋ฌ์ฌ ์ ์๋ค.
package vo;
import java.util.Calendar;
public class Person {
private int birth; // ์ ๋ณด์๋ (ํ๋ ์๋)
/*
private int getBirth() { // ์ ๋ณด์๋ (๋ฉ์๋ getter ์๋)
return birth;
}
*/
public void setBirth(int birth) {
if(birth > 0) {
this.birth = birth;
}
}
public int getAge() { // ์บก์ํ
if(this.birth > 0) {
Calendar c = Calendar.getInstance();
int y = c.get(Calendar.YEAR);
return y - this.birth;
}
return 0;
}
}
birth์ ๋
๋๋ฅผ ์
๋ ฅ(set)ํ๋ฉด ๋์ด๋ฅผ ๋ฐํ(get)ํ๋ age ๋ฉ์๋๋ฅผ ์์ฑํ๋ค. ์ด๋, ๋จ์ํ ๊ฐ์ ์
๋ ฅ๋ฐ๋ birth๋ ํ๋ ์ ๋ณด์๋์ด๊ณ ์กฐ๊ฑด(if)์ ์ถ๊ฐํ๋ค. ์ค๋ ๋ ์ง๋
๋์์ ์
๋ ฅ๋ฐ์ ๋
๋๋ฅผ ๊ณ์ฐํ๋ ์์ด ๋ค์ด๊ฐ๋ age๋ ๋ฉ์๋ ์ ๋ณด์๋์ด๋ค.
Person kyh = new Person();
kyh.setBirth(1995);
// System.out.println(kyh.birth); ์ ๋ณด์๋๋์ด ์์ผ๋ฏ๋ก
System.out.println(kyh.getAge());
birth์ ์
๋ ฅํ ๊ฐ์ private๋ก ์ ๋ณด์๋ ๋์ด์๊ธฐ ๋๋ฌธ์ ์ถ๋ ฅํ ์ ์์ง๋ง, ์ด ๊ฐ์ ์ด์ฉํ age๋ฉ์๋๋ get์ผ๋ก ์ถ๋ ฅ์ด ๊ฐ๋ฅํ ๊ฒ์ ๋ณผ ์ ์๋ค!
1. ๋ฐ์ดํฐ๋ฒ ์ด์ค
๋
ผ๋ฆฌ์ ๋จ์(ํ)๋ก ์ด๋ฃจ์ด์ง ๊ด๋ จ ์ ๋ณด์ ์งํฉ(ํ์ ์งํฉ)
์ง์ธ์ ์ ํ๋ฒํธ์ ์ฃผ์๋ฅผ ๊ธฐ๋กํด(ํ
์ด๋ธ ํํ) ๋์ ๋ฌธ์(์ฃผ์๋ก)
--> ์ ์ฐํ๋ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๊ฒ์ ๋งค์ปค๋์ฆ ์์คํ
์ด ํ์ --> ํ์ผ์์คํ
(ex ์์
) --> ํ์ผ์์คํ
์ ํ๊ณ(ํ์ผ์ ๋ถ์ฌ, ๋จ์ผ์ ๊ทผ, ์๊ฒฉ์ ๊ทผ, ....) --> ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
--> ํ
์ด๋ธ ํํ๋ก ๊ด๋ฆฌ --> ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
(RDBMS)
2. ๊ด๊ณํ ๋ชจ๋ธ
๋ฐ์ดํฐ๋ฅผ ํ
์ด๋ธ์ ์งํฉ์ผ๋ก ํํ
ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๋ จ ์ํฐํฐ(entity):ํ ๋ฅผ ์กฐํํ๋ ๋์ , ์ค๋ณต๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ํ
์ด๋ธ์ ๋ ๊ณ ๋:ํ๋ฅผ ์ฐ๊ฒฐ
ํฌ์ธํธ ์ ๊ทผ : ํ๊ธธ๋ํ์์ด ์๊ฐํ ๊ณผ์ ํ ์ด๋ธ์ ์ฒซ๋ฒ์ฌ ํ์ด๋ค
์ค๋ณต๋ฐ์ดํฐ(key) ์ ๊ทผ : ํ๊ธธ๋ํ์์ด ์๊ฐํ ๊ณผ์ ์ด๋ฆ์ด sqld์ด๋ค(๊ณผ์ ์ด๋ฆ์ด ํ์ํ ์ด๋ธ๊ณผ ๊ณผ์ ํ ์ด๋ธ์ ์ค๋ณต๋์ด ์ ์ฅ)
์ถ์ฒ: 0509) ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค (์๋ฐ ๊ต์ค) | ์์ฑ์ ๋ฐ์ฑํ
๋ค์ํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
์ด ์์ง๋ง ๊ทธ๋์์ mariadb๋ฅผ ์ฌ์ฉํด์๋ค. ์ด๋ฒ์๋ ์ค๋ผํด์ ์ค์นํด๋ณด๋ ์๊ฐ์ ๊ฐ์ก๋ค.
์ค์น๋ ์ด๊ณณ์์ ํ๋ค.
์ค์น ํ ์์ถ์ ํ์ด์ค ๋ค setup ํ์ผ์ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์คํํ๋ค
์ค์น ์ค ์ค๋ผํด ์๋ฒ ์๋น์ค ํฌํธ๋ฒํธ๋ฅผ ํ์ธํ ์ ์๋ค.
mariadb์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค์น ํ์ธ์ ์ด๊ณณ์์ ๊ฐ๋ฅํ๋ค.
mariadb๋ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ด ์๋์ผ๋ก ์ค์น๊ฐ ๋์์ง๋ง ์ค๋ผํด์ ๋ณ๋๋ก ์ค์นํด์ฃผ์ด์ผ ํ๋ค. ์ค์น๋ ์ด๊ณณ์์ ํ๋ค.
jdk๊ฐ ์ด๋ฏธ ์ค์น๋์ด ์์ผ๋ฏ๋ก ๋๋ฒ์งธ ํ์ผ์ ๋ค์ด๋ฐ์๋ค.
๋ณ๋์ ์ค์น๊ณผ์ ์์ด ๋ค์ด ๋ฐ์ ํด๋์ ์์ถ์ ํ์ด exe ํ์ผ์ ์คํํ๋ค.
๋จผ์ ๊ด๋ฆฌ์ ๊ณ์ ์ผ๋ก ์ ์ํ๋ค. ๋น๋ฐ๋ฒํธ๋ ์ค์น์ ์ ๋ ฅํ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ฉด ๋๋ค.
CREATE USER ๊ณ์ ์ด๋ฆ์
๋ ฅ IDENTIFIED BY ๋น๋ฐ๋ฒํธ์
๋ ฅ;
GRANT connect, resource, dba to ๊ณ์ ์ด๋ฆ์
๋ ฅ;
๊ด๋ฆฌ์ ๊ณ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ๋ฌธ์ ์ ๋ ฅํ์ฌ ์๋ก์ด ๊ณ์ ์ ์์ฑํด์ค๋ค ์์ฑํ ๊ณ์ ์ผ๋ก ๋ค์ ์ ์ํ๋ฉด ๋๋ค!
CREATE TABLE DEPT(
DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
DNAME VARCHAR2(14),
LOC VARCHAR2(13)
);
CREATE TABLE EMP(
EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT
);
-- deptํ
์ด๋ธ 4๊ฐ์ ํ์ ์
๋ ฅ
INSERT INTO DEPT(deptno,dname,loc) VALUES(10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT(deptno,dname,loc) VALUES(20,'RESEARCH','DALLAS');
INSERT INTO DEPT(deptno,dname,loc) VALUES(30,'SALES','CHICAGO');
INSERT INTO DEPT(deptno,dname,loc) VALUES(40,'OPERATIONS','BOSTON');
INSERT INTO dept(deptno,dname,loc) VALUES(50,'IT', 'NEW YORK');
select * from dept;
commit;
-- empํ
์ด๋ธ : insert๋ฌธ์์ ํ
์ด๋ธ์ด๋ฆ๋ค ์ปฌ๋ผ๋ช
์ ์๋ตํ๋ฉด ์ ์ฒด ์ปฌ๋ผ์ ๊ฐ๋ฅดํด
INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,to_date('17-12-2000','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,to_date('20-2-2001','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN',7698,to_date('22-2-2001','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,to_date('2-4-2001','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,to_date('28-9-2001','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER',7839,to_date('1-5-2001','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER',7839,to_date('9-6-2001','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,to_date('13-2-2005','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',NULL,to_date('17-11-2001','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,to_date('13-2-2007','dd-mm-yyyy'),1100,NULL,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK',7698,to_date('3-12-2001','dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST',7566,to_date('3-12-2001','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK',7782,to_date('23-1-2002','dd-mm-yyyy'),1300,NULL,10);
INSERT INTO EMP VALUES
(9999,'ACE','CLERK',7782,to_date('23-1-2002','dd-mm-yyyy'),1300,NULL,NULL);
select * from emp;
commit;
์ํ๋ฐ์ดํฐ๋ฅผ ์๋ชป ์ ๋ ฅํ์๋ ๋ค์ ์ง์ฐ๋ ค๋ฉด ๋ค์ ์ฟผ๋ฆฌ๋ฌธ์ ์ ๋ ฅ
delete from dept;
commit;
delete from emp;
commit;
์ค๋ผํด์ mariadb์ ๋ค๋ฅด๊ฒ ์คํ ์ปค๋ฐ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ปค๋ฐ์ ํด์ฃผ์ด์ผํ๋ค!
์ค๋ ๋ฐฐ์ด ์บก์ํ๋ฅผ ๊ธฐ์กด ํ์ผ์ ์ ๋ถ ์ ์ฉํ์ฌ ์์ ํ๋ ์์
์ ํ ๋ค, ํ์์ ๋ณด ์กฐํ/์์ /ํํด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค.
(๊ธฐ์กด ํ์ผ ์์ ์์
)
Board.java
Comment.java
Member.java
home.jsp
boardOne.jsp
insertCommentAction.jsp
insertMemberAction.jsp
loginAction.jsp
memberOne.jsp
๐ ์์ฑ
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="vo.*" %>
<%
// 1. ์ธ์
์ ํจ์ฑ ๊ฒ์ฌ
if(session.getAttribute("loginMemberId") == null) {
response.sendRedirect(request.getContextPath() + "/home.jsp");
return;
}
String memberId = (String)session.getAttribute("loginMemberId");
System.out.println(memberId + " <- memberOne session loginMemberId");
// 2. ๋ชจ๋ธ๊ฐ ๊ตฌํ๊ธฐ // member๋ชจ๋ธ
// 2-1. ๋๋ผ์ด๋ฒ ๋ก๋ฉ ๋ฐ db ์ ์
String driver = "org.mariadb.jdbc.Driver";
String dburl = "jdbc:mariadb://127.0.0.1:3306/userboard";
String dbuser = "****";
String dbpw = "****";
Class.forName(driver);
Connection conn = DriverManager.getConnection(dburl, dbuser, dbpw);
// 2.2 ์ฟผ๋ฆฌ ์์ฑ
String membersql = "SELECT member_id memberId, createdate createdate, updatedate updatedate, member_birth memberBirth, member_gender memberGender FROM member WHERE member_id = ?";
PreparedStatement memberStmt = null;
ResultSet memberRs = null;
memberStmt = conn.prepareStatement(membersql);
memberStmt.setString(1, memberId);
System.out.println(memberStmt + " <- memberOne memberStmt");
// Voํ์
์ผ๋ก ๋ฐ๊พธ๊ธฐ
memberRs = memberStmt.executeQuery();
Member member = null;
if(memberRs.next()) {
member = new Member();
member.setMemberId(memberRs.getString("memberId"));
member.setCreatedate(memberRs.getString("createdate"));
member.setUpdatedate(memberRs.getString("updatedate"));
member.setMemberBirth(memberRs.getString("memberBirth"));
member.setMemberGender(memberRs.getString("memberGender"));
}
// ๋๋ฒ๊น
System.out.println(member.getMemberId() + " <- memberOne memberId");
System.out.println(member.getMemberBirth() + " <- memberOne memberBirth");
System.out.println(member.getMemberGender() + " <- memberOne memberGender");
System.out.println(member.getCreatedate() + " <- memberOne createdate");
System.out.println(member.getUpdatedate() + " <- memberOne updatedate");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>memberOne.jsp</title>
<!-- ๋ถํธ์คํธ๋ฉ5 ์ฌ์ฉ -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<!-- include ํ์ด์ง : ๋ฉ์ธ๋ฉ๋ด(๊ฐ๋ก) -->
<div>
<!-- ์ก์
ํ๊ทธ -->
<jsp:include page="/inc/mainmenu.jsp"></jsp:include>
</div>
<!-------- include ํ์ด์ง ๋ ------->
<div class="container mt-5">
<!--------------------------- member ๋ชจ๋ธ์ถ๋ ฅ ์์ --------------------------->
<h3 class="mt-4"><%=memberId%>๋์ ํ์์ ๋ณด์
๋๋ค</h3>
<!-- msg ๋ฐ์์ ๋ฉ์ธ์ง ์ถ๋ ฅ -->
<div class="text-danger">
<%
if(request.getParameter("msg") != null) {
%>
<%=request.getParameter("msg")%>
<%
}
%>
</div>
<table class="table container">
<tr>
<th class="table-success">์์ด๋</th>
<td><%=member.getMemberId()%></td>
</tr>
<tr>
<th class="table-success">์๋
์์ผ</th>
<td><%=member.getMemberBirth()%></td>
</tr>
<tr>
<th class="table-success">์ฑ๋ณ</th>
<td>
<%
if(member.getMemberGender().equals("M")) {
%>
๋จ์
<%
} else {
%>
์ฌ์
<%
}
%>
</td>
</tr>
<tr>
<th class="table-success">ํ์๊ฐ์
์ผ</th>
<td><%=member.getCreatedate()%></td>
</tr>
<tr>
<th class="table-success">์ต๊ทผ์์ ์ผ</th>
<td><%=member.getUpdatedate()%></td>
</tr>
</table>
<!---------------------------- member ๋ชจ๋ธ์ถ๋ ฅ ๋ ---------------------------->
<!----------- ์์ / ํํด ----------->
<div class="text-center">
<a href="<%=request.getContextPath()%>/member/updateMemberForm.jsp" class="btn btn-success">ํ์์ ๋ณด ์์ </a>
<a href="<%=request.getContextPath()%>/member/updatePwForm.jsp" class="btn btn-success">๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ</a>
<a href="<%=request.getContextPath()%>/member/deleteMemberForm.jsp" class="btn btn-danger">ํ์ ํํด</a>
</div>
<!--------------- ๋ --------------->
</div>
<br>
<!-- include ํ์ด์ง : Copyright -->
<div>
<!-- ์ก์
ํ๊ทธ -->
<jsp:include page="/inc/copyright.jsp"></jsp:include>
</div>
<!-------- include ํ์ด์ง ๋ ------->
</body>
</html>
๐ ๊ฒฐ๊ณผ
updateMemberForm.jsp
๐ ์์ฑ
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="vo.*" %>
<%
//1. ์ธ์
์ ํจ์ฑ ๊ฒ์ฌ
if(session.getAttribute("loginMemberId") == null) {
response.sendRedirect(request.getContextPath() + "/home.jsp");
return;
}
String memberId = (String)session.getAttribute("loginMemberId");
System.out.println(memberId + " <- memberOne session loginMemberId");
// 2. ๋ชจ๋ธ๊ฐ ๊ตฌํ๊ธฐ // member๋ชจ๋ธ
// 2-1. ๋๋ผ์ด๋ฒ ๋ก๋ฉ ๋ฐ db ์ ์
String driver = "org.mariadb.jdbc.Driver";
String dburl = "jdbc:mariadb://127.0.0.1:3306/userboard";
String dbuser = "****";
String dbpw = "****";
Class.forName(driver);
Connection conn = DriverManager.getConnection(dburl, dbuser, dbpw);
// 2.2 ์ฟผ๋ฆฌ ์์ฑ
// SELECT * FROM member WHERE member_id = ?
String membersql = "SELECT member_id memberId, createdate createdate, updatedate updatedate, member_birth memberBirth, member_gender memberGender FROM member WHERE member_id = ?";
PreparedStatement memberStmt = null;
ResultSet memberRs = null;
memberStmt = conn.prepareStatement(membersql);
memberStmt.setString(1, memberId);
System.out.println(memberStmt + " <- memberOne memberStmt");
// Voํ์
์ผ๋ก ๋ฐ๊พธ๊ธฐ
memberRs = memberStmt.executeQuery();
Member member = null;
if(memberRs.next()) {
member = new Member();
member.setMemberId(memberRs.getString("memberId"));
member.setCreatedate(memberRs.getString("createdate"));
member.setUpdatedate(memberRs.getString("updatedate"));
member.setMemberBirth(memberRs.getString("memberBirth"));
member.setMemberGender(memberRs.getString("memberGender"));
}
// ๋๋ฒ๊น
System.out.println(member.getMemberId() + " <- memberOne memberId");
System.out.println(member.getMemberBirth() + " <- memberOne memberBirth");
System.out.println(member.getMemberGender() + " <- memberOne memberGender");
System.out.println(member.getCreatedate() + " <- memberOne createdate");
System.out.println(member.getUpdatedate() + " <- memberOne updatedate");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>updateMemberForm.jsp</title>
<!-- ๋ถํธ์คํธ๋ฉ5 ์ฌ์ฉ -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<!-- include ํ์ด์ง : ๋ฉ์ธ๋ฉ๋ด(๊ฐ๋ก) -->
<div>
<!-- ์ก์
ํ๊ทธ -->
<jsp:include page="/inc/mainmenu.jsp"></jsp:include>
</div>
<!-------- include ํ์ด์ง ๋ ------->
<div class="container mt-5">
<!--------------------------- ํ์์ ๋ณด ์์ ํผ --------------------------->
<h3 class="mt-4">ํ์์ ๋ณด ์์ ํ๊ธฐ</h3>
<!-- ์์ ์คํจ์ ์๋ฌ๋ฉ์ธ์ง ์ถ๋ ฅ -->
<div class="text-danger">
<%
if(request.getParameter("msg") != null) {
%>
<%=request.getParameter("msg")%>
<%
}
%>
</div>
<form action="<%=request.getContextPath()%>/member/updateMemberAction.jsp" method="post">
<table class="table container">
<tr>
<th class="table-success">์์ด๋</th>
<td>
<%=member.getMemberId()%>
</td>
</tr>
<tr>
<th class="table-success"td>๋น๋ฐ๋ฒํธ</th>
<td>
<input type="password" name="memberPw" placeholder="๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์">
</td>
</tr>
<tr>
<th class="table-success">์๋
์์ผ</th>
<td>
<input type="date" name="memberBirth" value="<%=member.getMemberBirth()%>">
</td>
</tr>
<tr>
<th class="table-success">์ฑ๋ณ</th>
<td>
<input type="radio" name="memberGender" value="M" <%if(member.getMemberGender().equals("M")){%> checked <%}%>>๋จ์
<input type="radio" name="memberGender" value="F" <%if(member.getMemberGender().equals("F")){%> checked <%}%>>์ฌ์
</td>
</tr>
<tr>
<th class="table-success">ํ์๊ฐ์
์ผ</th>
<td>
<%=member.getCreatedate()%>
</td>
</tr>
<tr>
<th class="table-success">์ต๊ทผ์์ ์ผ</th>
<td>
<%=member.getUpdatedate()%>
</td>
</tr>
</table>
<a href="<%=request.getContextPath()%>/member/memberOne.jsp" class="btn btn-success">
๋ค๋ก๊ฐ๊ธฐ
</a>
<button type="submit" class="btn btn-success">์์ </button>
</form>
<!---------------------------- ํ์์ ๋ณด ์์ ํผ ๋ ----------------------------->
</div>
<br>
<!-- include ํ์ด์ง : Copyright -->
<div>
<!-- ์ก์
ํ๊ทธ -->
<jsp:include page="/inc/copyright.jsp"></jsp:include>
</div>
<!-------- include ํ์ด์ง ๋ ------->
</body>
</html>
updateMemberAction.jsp
๐ ์์ฑ
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="vo.*" %>
<%
//1. ์ธ์
์ ํจ์ฑ ๊ฒ์ฌ
if(session.getAttribute("loginMemberId") == null) {
response.sendRedirect(request.getContextPath() + "/home.jsp");
return;
}
String memberId = (String)session.getAttribute("loginMemberId");
System.out.println(memberId + " <- memberOne session loginMemberId");
// 2. ๋ชจ๋ธ๊ฐ ๊ตฌํ๊ธฐ // member๋ชจ๋ธ
// 2-1. ๋๋ผ์ด๋ฒ ๋ก๋ฉ ๋ฐ db ์ ์
String driver = "org.mariadb.jdbc.Driver";
String dburl = "jdbc:mariadb://127.0.0.1:3306/userboard";
String dbuser = "****";
String dbpw = "****";
Class.forName(driver);
Connection conn = DriverManager.getConnection(dburl, dbuser, dbpw);
// 2.2 ์ฟผ๋ฆฌ ์์ฑ
// SELECT * FROM member WHERE member_id = ?
String membersql = "SELECT member_id memberId, createdate createdate, updatedate updatedate, member_birth memberBirth, member_gender memberGender FROM member WHERE member_id = ?";
PreparedStatement memberStmt = null;
ResultSet memberRs = null;
memberStmt = conn.prepareStatement(membersql);
memberStmt.setString(1, memberId);
System.out.println(memberStmt + " <- memberOne memberStmt");
// Voํ์
์ผ๋ก ๋ฐ๊พธ๊ธฐ
memberRs = memberStmt.executeQuery();
Member member = null;
if(memberRs.next()) {
member = new Member();
member.setMemberId(memberRs.getString("memberId"));
member.setCreatedate(memberRs.getString("createdate"));
member.setUpdatedate(memberRs.getString("updatedate"));
member.setMemberBirth(memberRs.getString("memberBirth"));
member.setMemberGender(memberRs.getString("memberGender"));
}
// ๋๋ฒ๊น
System.out.println(member.getMemberId() + " <- memberOne memberId");
System.out.println(member.getMemberBirth() + " <- memberOne memberBirth");
System.out.println(member.getMemberGender() + " <- memberOne memberGender");
System.out.println(member.getCreatedate() + " <- memberOne createdate");
System.out.println(member.getUpdatedate() + " <- memberOne updatedate");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>updateMemberForm.jsp</title>
<!-- ๋ถํธ์คํธ๋ฉ5 ์ฌ์ฉ -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<!-- include ํ์ด์ง : ๋ฉ์ธ๋ฉ๋ด(๊ฐ๋ก) -->
<div>
<!-- ์ก์
ํ๊ทธ -->
<jsp:include page="/inc/mainmenu.jsp"></jsp:include>
</div>
<!-------- include ํ์ด์ง ๋ ------->
<div class="container mt-5">
<!--------------------------- ํ์์ ๋ณด ์์ ํผ --------------------------->
<h3 class="mt-4">ํ์์ ๋ณด ์์ ํ๊ธฐ</h3>
<!-- ์์ ์คํจ์ ์๋ฌ๋ฉ์ธ์ง ์ถ๋ ฅ -->
<div class="text-danger">
<%
if(request.getParameter("msg") != null) {
%>
<%=request.getParameter("msg")%>
<%
}
%>
</div>
<form action="<%=request.getContextPath()%>/member/updateMemberAction.jsp" method="post">
<table class="table container">
<tr>
<th class="table-success">์์ด๋</th>
<td>
<%=member.getMemberId()%>
</td>
</tr>
<tr>
<th class="table-success"td>๋น๋ฐ๋ฒํธ</th>
<td>
<input type="password" name="memberPw" placeholder="๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์">
</td>
</tr>
<tr>
<th class="table-success">์๋
์์ผ</th>
<td>
<input type="date" name="memberBirth" value="<%=member.getMemberBirth()%>">
</td>
</tr>
<tr>
<th class="table-success">์ฑ๋ณ</th>
<td>
<input type="radio" name="memberGender" value="M" <%if(member.getMemberGender().equals("M")){%> checked <%}%>>๋จ์
<input type="radio" name="memberGender" value="F" <%if(member.getMemberGender().equals("F")){%> checked <%}%>>์ฌ์
</td>
</tr>
<tr>
<th class="table-success">ํ์๊ฐ์
์ผ</th>
<td>
<%=member.getCreatedate()%>
</td>
</tr>
<tr>
<th class="table-success">์ต๊ทผ์์ ์ผ</th>
<td>
<%=member.getUpdatedate()%>
</td>
</tr>
</table>
<a href="<%=request.getContextPath()%>/member/memberOne.jsp" class="btn btn-success">
๋ค๋ก๊ฐ๊ธฐ
</a>
<button type="submit" class="btn btn-success">์์ </button>
</form>
<!---------------------------- ํ์์ ๋ณด ์์ ํผ ๋ ----------------------------->
</div>
<br>
<!-- include ํ์ด์ง : Copyright -->
<div>
<!-- ์ก์
ํ๊ทธ -->
<jsp:include page="/inc/copyright.jsp"></jsp:include>
</div>
<!-------- include ํ์ด์ง ๋ ------->
</body>
</html>
๐ ๊ฒฐ๊ณผ
updatePwForm.jsp
๐ ์์ฑ
<<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
// ์ธ์
์ ํจ์ฑ ๊ฒ์ฌ
if(session.getAttribute("loginMemberId") == null) {
response.sendRedirect(request.getContextPath() + "/home.jsp");
return;
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>updatePwForm.jsp</title>
<!-- ๋ถํธ์คํธ๋ฉ5 ์ฌ์ฉ -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<!-- include ํ์ด์ง : ๋ฉ์ธ๋ฉ๋ด(๊ฐ๋ก) -->
<div>
<!-- ์ก์
ํ๊ทธ -->
<jsp:include page="/inc/mainmenu.jsp"></jsp:include>
</div>
<!-------- include ํ์ด์ง ๋ ------->
<div class="container mt-5">
<h3 class="mt-4">๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ</h3>
<!-- ๋ณ๊ฒฝ ์คํจ์ ์๋ฌ๋ฉ์ธ์ง ์ถ๋ ฅ -->
<div class="text-danger">
<%
if(request.getParameter("msg") != null) {
%>
<%=request.getParameter("msg")%>
<%
}
%>
</div>
<form action="<%=request.getContextPath()%>/member/updatePwAction.jsp" method="post">
<table class="table container">
<tr>
<th class="table-success">๊ธฐ์กด ๋น๋ฐ๋ฒํธ</th>
<td>
<input type="password" name="memberPw" placeholder="๊ธฐ์กด ๋น๋ฐ๋ฒํธ">
</td>
</tr>
<tr>
<th class="table-success">์ ๊ท ๋น๋ฐ๋ฒํธ</th>
<td>
<input type="password" name="memberNewPw" placeholder="์ ๊ท ๋น๋ฐ๋ฒํธ">
</td>
</tr>
<tr>
<th class="table-success">์ ๊ท ๋น๋ฐ๋ฒํธ ํ์ธ</th>
<td>
<input type="password" name="memberNewPw2" placeholder="์ ๊ท ๋น๋ฐ๋ฒํธ ํ์ธ">
</td>
</tr>
</table>
<a href="<%=request.getContextPath()%>/member/memberOne.jsp" class="btn btn-success">
๋ค๋ก๊ฐ๊ธฐ
</a>
<button type="submit" class="btn btn-success">๋ณ๊ฒฝ</button>
</form>
</div>
<br>
<!-- include ํ์ด์ง : Copyright -->
<div>
<!-- ์ก์
ํ๊ทธ -->
<jsp:include page="/inc/copyright.jsp"></jsp:include>
</div>
<!-------- include ํ์ด์ง ๋ ------->
</body>
</html>
updatePwAction.jsp
๐ ์์ฑ
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.net.*" %>
<%@ page import="vo.*" %>
<%
// 1. ์ ํจ์ฑ ๊ฒ์ฌ
// 1-1. ์ธ์
if(session.getAttribute("loginMemberId") == null) {
response.sendRedirect(request.getContextPath() + "/home.jsp");
return;
}
String memberId = (String)session.getAttribute("loginMemberId");
System.out.println(memberId + " <- updatePwAction session loginMemberId");
// 1-2. ์์ฒญ๊ฐ
String msg = null;
if(request.getParameter("memberPw") == null
|| request.getParameter("memberPw").equals("")) {
msg = URLEncoder.encode("๊ธฐ์กด ๋น๋ฐ๋ฒํธ๊ฐ ์
๋ ฅ๋์ง ์์์ต๋๋ค", "utf-8");
} else if(request.getParameter("memberNewPw") == null
|| request.getParameter("memberNewPw").equals("")) {
msg = URLEncoder.encode("์ ๊ท ๋น๋ฐ๋ฒํธ๊ฐ ์
๋ ฅ๋์ง ์์์ต๋๋ค", "utf-8");
} else if(request.getParameter("memberNewPw2") == null
|| request.getParameter("memberNewPw2").equals("")) {
msg = URLEncoder.encode("์ ๊ท ๋น๋ฐ๋ฒํธ ํ์ธ์ด ์
๋ ฅ๋์ง ์์์ต๋๋ค", "utf-8");
}
if(msg != null) {
response.sendRedirect(request.getContextPath() + "/member/updatePwForm.jsp?msg=" + msg);
return;
}
String memberPw = request.getParameter("memberPw");
String memberNewPw = request.getParameter("memberNewPw");
String memberNewPw2 = request.getParameter("memberNewPw2");
// 1-3. ์ ๊ท ๋น๋ฐ๋ฒํธ ํ์ธ
if(!memberNewPw.equals(memberNewPw2)) {
msg = URLEncoder.encode("์ ๊ท ๋น๋ฐ๋ฒํธ ํ์ธ์ด ์ผ์นํ์ง ์์ต๋๋ค", "utf-8");
response.sendRedirect(request.getContextPath() + "/member/updatePwForm.jsp?msg=" + msg);
return;
}
// 1-4. ๋๋ฒ๊น
System.out.println(memberPw + " <- updatePwAction ๊ธฐ์กด ๋น๋ฐ๋ฒํธ");
System.out.println(memberNewPw + " <- updatePwAction ์ ๊ท ๋น๋ฐ๋ฒํธ");
System.out.println(memberNewPw + " <- updatePwAction ์ ๊ท ๋น๋ฐ๋ฒํธ ํ์ธ");
// 2. update
// 2-1. ๋๋ผ์ด๋ฒ ๋ก๋ฉ ๋ฐ db ์ ์
String driver = "org.mariadb.jdbc.Driver";
String dburl = "jdbc:mariadb://127.0.0.1:3306/userboard";
String dbuser = "****";
String dbpw = "****";
Class.forName(driver);
Connection conn = DriverManager.getConnection(dburl, dbuser, dbpw);
// 2-2. ์ฟผ๋ฆฌ ์์ฑ
// ํจ์ค์๋ ์ํธํ ํด์ฃผ๊ธฐ!
String sql = "UPDATE member SET member_pw = PASSWORD(?), updatedate = NOW() WHERE member_id = ? AND member_pw = PASSWORD(?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, memberNewPw);
stmt.setString(2, memberId);
stmt.setString(3, memberPw);
System.out.println(stmt + " <- updatePwAction stmt");
// 2-3. ์ฟผ๋ฆฌ๊ฐ ์ ์งํ๋์๋์ง ํ์ธ
int row = stmt.executeUpdate();
if(row == 1) { // ์ฑ๊ณต์ memberOne์ผ๋ก
System.out.println(row + " <- updatePwAction ์ฑ๊ณต");
msg = URLEncoder.encode("๋น๋ฐ๋ฒํธ๊ฐ ์ ์์ ์ผ๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค", "utf-8");
response.sendRedirect(request.getContextPath() + "/member/memberOne.jsp?msg=" + msg);
return;
} else if(row == 0) { // ์คํจ์ Form์ผ๋ก
System.out.println(row + " <- updatePwAction ์คํจ");
msg = URLEncoder.encode("๊ธฐ์กด ๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ์ง ์์ต๋๋ค", "utf-8");
response.sendRedirect(request.getContextPath() + "/member/updatePwForm.jsp?msg=" + msg);
return;
} else { // ๊ทธ ์ธ ์ค๋ฅ์
System.out.println(row + " <- updatePwAction ์ค๋ฅ");
msg = URLEncoder.encode("๋น๋ฐ๋ฒํธ๊ฐ ๋ณ๊ฒฝ๋์ง ์์์ต๋๋ค ๋ค์ ์๋ํด์ฃผ์ธ์", "utf-8");
response.sendRedirect(request.getContextPath() + "/member/updatePwForm.jsp?msg=" + msg);
return;
}
%>
๐ ๊ฒฐ๊ณผ
๐ง ํ์์ ๋ณด ์์ , ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ, ํํด ๋ฑ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฟผ๋ฆฌ์ ์
๋ ฅํ ๋์๋ PASSWORD()๋ก ์ํธํํด์ฃผ๋ ๊ฒ ์์ง ๋ง๊ธฐ!
deleteMemberForm.jsp
๐ ์์ฑ
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
// ์ธ์
์ ํจ์ฑ ๊ฒ์ฌ
if(session.getAttribute("loginMemberId") == null) {
response.sendRedirect(request.getContextPath() + "/home.jsp");
return;
}
String memberId = (String)session.getAttribute("loginMemberId");
System.out.println(memberId + " <- memberOne session loginMemberId");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>deleteMemberForm.jsp</title>
<!-- ๋ถํธ์คํธ๋ฉ5 ์ฌ์ฉ -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<!-- include ํ์ด์ง : ๋ฉ์ธ๋ฉ๋ด(๊ฐ๋ก) -->
<div>
<!-- ์ก์
ํ๊ทธ -->
<jsp:include page="/inc/mainmenu.jsp"></jsp:include>
</div>
<!-------- include ํ์ด์ง ๋ ------->
<div class="container mt-5">
<h3 class="mt-4">ํ์ ํํด</h3>
<h6><%=memberId%>๋, ํ์ ํํด ์ ์์ฑํ ๊ฒ์๊ธ๊ณผ ๋๊ธ์ด ๋ชจ๋ ์ฌ๋ผ์ง๋๋ค</h6>
<!-- ํํด ์คํจ์ ์๋ฌ๋ฉ์ธ์ง ์ถ๋ ฅ -->
<div class="text-danger">
<%
if(request.getParameter("msg") != null) {
%>
<%=request.getParameter("msg")%>
<%
}
%>
</div>
<form action="<%=request.getContextPath()%>/member/deleteMemberAction.jsp" method="post">
<table class="table container">
<tr>
<th class="table-success">๋น๋ฐ๋ฒํธ</th>
<td>
<input type="password" name="memberPw" placeholder="์ ๋ง ํํดํ์๊ฒ ์ต๋๊น?">
</td>
</tr>
</table>
<a href="<%=request.getContextPath()%>/member/memberOne.jsp" class="btn btn-success">
๋ค๋ก๊ฐ๊ธฐ
</a>
<button type="submit" class="btn btn-danger">ํ์ ํํด</button>
</form>
</div>
<br>
<!-- include ํ์ด์ง : Copyright -->
<div>
<!-- ์ก์
ํ๊ทธ -->
<jsp:include page="/inc/copyright.jsp"></jsp:include>
</div>
<!-------- include ํ์ด์ง ๋ ------->
</body>
</html>
deleteMemberAction.jsp
๐ ์์ฑ
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.net.*" %>
<%@ page import="java.sql.*" %>
<%
// ์ ํจ์ฑ ๊ฒ์ฌ
// 1-1. ์ธ์
if(session.getAttribute("loginMemberId") == null) {
response.sendRedirect(request.getContextPath() + "/home.jsp");
return;
}
String memberId = (String)session.getAttribute("loginMemberId");
System.out.println(memberId + " <- deleteMemberAction session loginMemberId");
// 1-2. ์์ฒญ๊ฐ
String msg = null;
if(request.getParameter("memberPw") == null
|| request.getParameter("memberPw").equals("")) {
msg = URLEncoder.encode("ํํดํ์๋ ค๋ฉด ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์", "utf-8");
response.sendRedirect(request.getContextPath() + "/member/deleteMemberForm.jsp?msg=" + msg);
return;
}
String memberPw = request.getParameter("memberPw");
System.out.println(memberPw + " <- deleteMemberAction memberPw");
// 2. delete
// 2-1. ๋๋ผ์ด๋ฒ ๋ก๋ฉ ๋ฐ db ์ ์
String driver = "org.mariadb.jdbc.Driver";
String dburl = "jdbc:mariadb://127.0.0.1:3306/userboard";
String dbuser = "****";
String dbpw = "****";
Class.forName(driver);
Connection conn = DriverManager.getConnection(dburl, dbuser, dbpw);
// 2-2. ์ฟผ๋ฆฌ ์์ฑ
// ํจ์ค์๋ ์ํธํ ํด์ฃผ๊ธฐ!
String sql = "DELETE FROM member WHERE member_id = ? AND member_pw = PASSWORD(?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, memberId);
stmt.setString(2, memberPw);
System.out.println(stmt + " <- deleteMemberAction stmt");
// 2-3. ์ฟผ๋ฆฌ๊ฐ ์ ์งํ๋์๋์ง ํ์ธ
int row = stmt.executeUpdate();
if(row == 1) { // ์ฑ๊ณต์ ์ธ์
์ด๊ธฐํ ํ home์ผ๋ก
System.out.println(row + " <- deleteMemberAction ์ฑ๊ณต");
msg = URLEncoder.encode("ํ์ ํํด ๋์์ต๋๋ค", "utf-8");
session.invalidate(); // ์ธ์
์ด๊ธฐํ
response.sendRedirect(request.getContextPath() + "/home.jsp?msg=" + msg);
return;
} else if(row == 0) { // ์คํจ์ Form์ผ๋ก
System.out.println(row + " <- deleteMemberAction ์คํจ");
msg = URLEncoder.encode("๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ์ง ์์ต๋๋ค", "utf-8");
response.sendRedirect(request.getContextPath() + "/member/deleteMemberForm.jsp?msg=" + msg);
return;
} else { // ๊ทธ ์ธ ์ค๋ฅ์
System.out.println(row + " <- deleteMemberAction ์ค๋ฅ");
msg = URLEncoder.encode("ํ์ ํํด๊ฐ ๋์ง ์์์ต๋๋ค ๋ค์ ์๋ํด์ฃผ์ธ์", "utf-8");
response.sendRedirect(request.getContextPath() + "/member/deleteMemberForm.jsp?msg=" + msg);
return;
}
%>
๐ ๊ฒฐ๊ณผ
๐ง ํํด ์ ์ธ์
๋ ์ด๊ธฐํ ํด์ฃผ๋ ๊ฒ ์์ง ๋ง๊ธฐ!