44일차 JSP [ 커넥션풀, 마이페이지 만들기 ]
[ 데이터베이스 커넥션 풀 ]
- 웹 페이지에 접속자의 수가 많게 되면 커넥션을 그만큼 걸어주어야하기 때문에 서버에 부하가 발생!!
-> 서버가 다운되는 현상 발생!! -> 커넥션 풀 필요
- DBCP(DataBase Connection Pool) : 접속 인원이 많은 웹 페이지에서 데이터베이스의 효율성과 속도를 높이기 위해 사용됨
-> DBCP 매니저가 어느 정도의 연결을 확보해 놓고 있다가 클라이언트의 요청이 들어오면 연결해주고,
클라이언트의 작업이 다 끝나면 연결을 다시 DBCP매니저에게 반환한다.
[ 자바빈, 폼 ]
디비 먼저 만들고 !
- 서버에서 입력한 값을 빈(useBean+setProperty)에다 저장
- 빈에서 저장한 값을 가져와 테이블에 삽입
[ eclipse와 Mysql 연결 ]
- JSP에서 직접 연결 하는 과정 !!!
[ MemberJoin.jsp JSP 파일 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<form action="MemberJoinProc.jsp" method="post">
<table width="500" border="1">
<tr height="50">
<td width="150" align="center">아이디</td>
<td widht="350" align="center"><input type="text" name="id"
size="40"></td>
<tr height="50">
<td width="150" align="center">패스워드</td>
<td widht="350" align="center"><input type="password"
name="pass1" size="40"></td>
<tr height="50">
<td width="150" align="center">패스워드확인</td>
<td widht="350" align="center"><input type="password"
name="pass2" size="40"></td>
<tr height="50">
<td width="150" align="center">이메일</td>
<td widht="350" align="center"><input type="email" name="email"
size="40"></td>
<tr height="50">
<td width="150" align="center">전화번호</td>
<td widht="350" align="center"><input type="tel" name="tel"
size="40"></td>
<tr height="50">
<td width="150" align="center">당신의관심분야</td>
<td width="350" align="center"><input type="checkbox"
name="hobby" value="캠핑">캠핑 <input type="checkbox"
name="hobby" value="등산">등산 <input type="checkbox"
name="hobby" value="영화">영화 <input type="checkbox"
name="hobby" value="독서">독서</td>
</tr>
<tr height="50">
<td width="150" align="center">당신의직업은</td>
<td width="350" align="center"><select name="job">
<option value="교사">교사</option>
<option value="변호사">변호사</option>
<option value="의사">의사</option>
<option value="기술사">기술사</option>
</select></td>
</tr>
<tr height="50">
<td width="150" align="center">당신의연령은</td>
<td width="350" align="center"><input type="radio" name="age"
value="10">10대 <input type="radio" name="age" value="20">20대
<input type="radio" name="age" value="30">30대 <input
type="radio" name="age" value="40">40대</td>
</tr>
<tr height="50">
<td width="150" align="center">하고싶은말</td>
<td width="350" align="center"><textarea rows="5" cols="40"
name="info"></textarea></td>
</tr>
<tr height="50">
<td align="center" colspan="2"><input type="submit"
value="회원가입"> <input type="reset" value="취소"></td>
</tr>
</table>
</form>
</center>
</body>
[ MemberJoinProc.jsp JSP 파일 ]
<%@ page import="java.sql.Connection, java.sql.DriverManager, java.sql.PreparedStatement, java.sql.SQLException" %>
<%@ page import="kr.co.bit.MemberBean" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
request.setCharacterEncoding("UTF-8");
//관심분야 같은 건 여러개 선택할 수 있어서(=복수)는 usebean(*맵핑)으로 못 받고 배열로 받아야함!!
String []hobby=request.getParameterValues("hobby"); // 파라미터 이름을 전달해야 함
String str="";
//배열에 있는 내용을 하나의 문자열로 저장하겠다
for(int i=0;i<hobby.length;i++) {
str+=hobby[i]+"";
}
%>
<!-- useBean을 이용하여 한꺼번에 데이터 받기 -->
<jsp:useBean id="mbean" class="kr.co.bit.MemberBean">
<jsp:setProperty property="*" name="mbean" /> <!-- useBean안에 setProperty가 있어야 한다 -->
</jsp:useBean>
<%
mbean.setHobby(str);
String id="root";
String pw="00000000";
String url="jdbc:mysql://localhost:3306/yujung";
try{
Class.forName("com.mysql.cj.jdbc.Driver");
//da에 접속
Connection con=DriverManager.getConnection(url,id,pw);
String sql="insert into member values(?,?,?,?,?,?,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
//?에 맞게 데이터를 맵핑
//MemberBean필드에 저장되어 있는 값을 빼서 Member 테이블 필드에 삽입
pstmt.setString(1, mbean.getId());
pstmt.setString(2, mbean.getPass1()); //여기선 pass2는 DB에 넣어줄 필요 없음 !!!
pstmt.setString(3, mbean.getEmail());
pstmt.setString(4, mbean.getTel());
pstmt.setString(5, mbean.getHobby());
pstmt.setString(6, mbean.getJob());
pstmt.setString(7, mbean.getAge());
pstmt.setString(8, mbean.getInfo());
pstmt.executeUpdate();
con.close();
}catch(Exception e){
e.printStackTrace();
}
%>
디비 완료 !!!
</body>
</html>
[ eclipse와 server.xml을 통헤 Mysql 연결 ]
- Servers 파일에서 JDBC 연결 하고 JSP에선 코드만 가져와서 연결하는 과정
1) JSP 파일에 먼저 JDBC 연결 코드 작성
[ serverTest.jsp JSP 파일 ]
<%@page import="java.sql.Connection"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="javax.naming.Context"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
Context init=new InitialContext();
DataSource ds=(DataSource) init.lookup("java:comp/env/jdbc/pool"); //정해져있는 코드
Connection conn=ds.getConnection();
out.print("db연동 성공");
%>
</body>
</html>
2) Servers -> server.xml -> Open With -> Text Editor
3) 아래 코드 삭제 후 아래 코드 복붙
[ 이거 삭제 후 ]
<Context docBase="Tomcat" path="/Tomcat" reloadable="true" source="org.eclipse.jst.jee.server:Tomcat"/><Context docBase="A0419" path="/A0419" reloadable="true" source="org.eclipse.jst.jee.server:A0419"/><Context docBase="A0422" path="/A0422" reloadable="true" source="org.eclipse.jst.jee.server:A0422"/><Context docBase="A0423" path="/A0423" reloadable="true" source="org.eclipse.jst.jee.server:A0423"/></Host>
[ 이거 삽입 비번 이름 맞게 고쳐서 ]
<Context docBase="A0423" path="/A0423" reloadable="true" source="org.eclipse.jst.jee.server:A0423">
<Resource auth="Container" driverClassName="com.mysql.cj.jdbc.Driver"
name="jdbc/pool" password="00000000" type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/yujung" username="root"/>
</Context>
</Host>
[ 마이페이지 만들기 ]
1. MemberJoin.jsp (html로 폼 구조 만듦) -> "회원가입" 버튼 누르면 MemberJoinProc.jsp 페이지 이동
2. MemberJoinProc.jsp
-> MemberJoin.jsp에서 입력했던 값들을 읽어 들인다.
-> 회원들 삽입, 삭제, 수정을 위해 MemberDAO 클래스 만듦.
-> insertMember라는 함수를 호출
-> 회원가입을 하면 목록이 뜨도록 MemberArray.jsp
3. MemberDAO.java
-> Mysql 데이터베이스에 연결하고 select, insert, update, delete 작업을 실행해주는 클래스
-> insertMember() : 한 사람의 회원 정보를 저장한다. (추가)
-> 입력폼에서 적은 데이터들을 테이블에 저장한다. (setString)
-> allSelectMember() : 모든 회원들을 조회한다 (select * from member). 모든 회원들이기 때문에 가변길이인 Vector를 사용해서 입력폼에서 적은 데이터들을 테이블에서 가져와 MemberBean필드에 저장 (setString)
-> oneMember(String id) : 한 사람 회원을 조회(id 기준으로). 한 사람 회원이기 때문에 모든 정보를 담고 있는 MemberBean 클래스를 사용해서 입력폼에서 적은 데이터들을 테이블에서 가져와 MemberBean 필드에 저장
-> getPass(String id) : 매개변수 id를 기준으로 비밀번호가 맞는지 판단한다.
-> updateMember(MemberBean mbean) : 회원정보를 수정하고 싶으면 비밀번호를 입력해 비밀번호가 맞으면 수정가능할 수있도록 구현(update)
-> deleteMember(String id) : 비밀번호를 입력해 비밀번호가 맞으면 한 사람의 회원 삭제할 수 있도록 delete 명령(=쿼리) 써서 구현
4. MemberBean.java
-> useBean을 사용해 데이터를 읽어들일 수 있도록 만듦(set: 저장, get:얻기)
5. MemberArray.jsp
-> 모든 회원의 정보를 출력해야 하므로 MemberDAO에서 만든 Vector 객체 생성하고 allSelectMember() 함수 호출한다. 웹에 모든 회원 정보를 출력해야 한다. 폼에서 입력했던 값이 저장되었던 MemberBean.java에 있는 get() 호출하여 출력한다.
6. MemberIn.jsp
-> MemberArray에서 넘긴 id를 받아주고, 데이터베이스에서 한 회원의 정보를 가져온다.
-> 버튼을 만들어 페이지 이동시킨다(수정, 삭제, 전체목록, 회원가입). 회원의 정보를 리턴받는다.
7. MemberUpdate.jsp
-> 회원정보를 수정하기 위해 id를 기준으로 MemberDAO에서 만든 oneMember() 호출한다,
-> "전체목록" 버튼을 만들어 MemberArray.jsp로 이동
-> "회원수정" 버튼을 만들어 UpdateProc.jsp로 이동
8. UpdateProc.jsp
-> "회원수정" 버튼 누르면 수정할 수 있도록 비밀번호가 일치하는지 확인하기 위해 MemberDAO에서 만든 getPass함수 호출해 입력했던 비밀번호(DB에서 가져옴)과 현재 입력한 비밀번호 일치하면 MemberDAO에서 만든 updateMember() 함수를 호출해서 수정할 수있도록 구현.
-> 수정 후 다시 MemberArray.jsp로 이동 (잘 수정되었는지 확인)
9. MemberDelete.jsp
-> 회원정보 삭제하기 위해 id를 기준으로 id값 불러온다.
-> "회원전체" 버튼을 만들어 MemberArray.jsp로 이동
-> "삭제" 버튼을 누르면 DeleteProc.jsp로 이동
10. DeleteProc.jsp
-> UpdateProc.jsp와 비슷하게 비밀번호 확인해서 일치하면 MemberDAO에서 만든 deleteMember함수 호출해서 삭제됨.
-> 삭제 후 다시 MemberArray.jsp로 이동. 비밀번호 안 맞으면 자바스크립트로 경고창 뜨게함 (alert)
[ MemberJoin.jsp 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>
<form action="MemberJoinProc.jsp" method="post">
<table width="500" border="1">
<tr height="50">
<td width="150" align="center">아이디</td>
<td widht="350" align="center"><input type="text" name="id"
size="40"></td>
<tr height="50">
<td width="150" align="center">패스워드</td>
<td widht="350" align="center"><input type="password"
name="pass1" size="40"></td>
<tr height="50">
<td width="150" align="center">패스워드확인</td>
<td widht="350" align="center"><input type="password"
name="pass2" size="40"></td>
<tr height="50">
<td width="150" align="center">이메일</td>
<td widht="350" align="center"><input type="email" name="email"
size="40"></td>
<tr height="50">
<td width="150" align="center">전화번호</td>
<td widht="350" align="center"><input type="tel" name="tel"
size="40"></td>
<tr height="50">
<td width="150" align="center">당신의관심분야</td>
<td width="350" align="center"><input type="checkbox"
name="hobby" value="캠핑">캠핑 <input type="checkbox"
name="hobby" value="등산">등산 <input type="checkbox"
name="hobby" value="영화">영화 <input type="checkbox"
name="hobby" value="독서">독서</td>
</tr>
<tr height="50">
<td width="150" align="center">당신의직업은</td>
<td width="350" align="center"><select name="job">
<option value="교사">교사</option>
<option value="변호사">변호사</option>
<option value="의사">의사</option>
<option value="기술사">기술사</option>
</select></td>
</tr>
<tr height="50">
<td width="150" align="center">당신의연령은</td>
<td width="350" align="center"><input type="radio" name="age"
value="10">10대 <input type="radio" name="age" value="20">20대
<input type="radio" name="age" value="30">30대 <input
type="radio" name="age" value="40">40대</td>
</tr>
<tr height="50">
<td width="150" align="center">하고싶은말</td>
<td width="350" align="center"><textarea rows="5" cols="40"
name="info"></textarea></td>
</tr>
<tr height="50">
<td align="center" colspan="2"><input type="submit"
value="회원가입"> <input type="reset" value="취소"></td>
</tr>
</table>
</form>
</center>
</body>
[ memberJoinProc.jsp JSP 파일 ]
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page import="kr.co.bit.MemberBean, kr.co.bit.MemberDAO" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
request.setCharacterEncoding("UTF-8");
// 관심분야 같은 건 여러개 선택할 수 있어서(=복수)는 usebean(*맵핑)으로 못 받고 배열로 받아야함!!
String[] hobby = request.getParameterValues("hobby"); // 파라미터 이름을 전달해야 함
String str = "";
// 배열에 있는 내용을 하나의 문자열로 저장하겠다
for(int i=0;i<hobby.length;i++) {
str+=hobby[i]+"";
}
%>
<!-- useBean을 이용하여 한꺼번에 데이터 받기 -->
<jsp:useBean id="mbean" class="kr.co.bit.MemberBean">
<jsp:setProperty property="*" name="mbean" /> <!-- useBean안에 setProperty가 있어야 한다 -->
</jsp:useBean>
<%
mbean.setHobby(str);
MemberDAO mdao = new MemberDAO(); //Data Access Object
mdao.insertMember(mbean);
//회원가입이 되었다면 회원정보를 보여주는 페이지로 이동
response.sendRedirect("MemberArray.jsp");
%>
</body>
</html>
[ MemberDAO.java 클래스 ]
package kr.co.bit;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;
public class MemberDAO {
String id = "root";
String pw = "00000000";
String url = "jdbc:mysql://localhost:3306/yujung";
Connection conn;
PreparedStatement pstmt;
ResultSet rs;
public void getCon() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(url, id, pw);
} catch (Exception e) {
}
}
public void insertMember(MemberBean mbean) {
try {
getCon();
String sql = "insert into member values(?,?,?,?,?,?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
// ?에 맞게 데이터를 맵핑
// MemberBean필드에 저장되어 있는 값을 빼서 Member 테이블 필드에 삽입
pstmt.setString(1, mbean.getId());
pstmt.setString(2, mbean.getPass1());
pstmt.setString(3, mbean.getEmail());
pstmt.setString(4, mbean.getTel());
pstmt.setString(5, mbean.getHobby());
pstmt.setString(6, mbean.getJob());
pstmt.setString(7, mbean.getAge());
pstmt.setString(8, mbean.getInfo());
pstmt.executeUpdate();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public Vector<MemberBean> allSelectMember() {
Vector<MemberBean> v = new Vector<MemberBean>();
try {
getCon();
String sql = "select * from member";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
MemberBean bean = new MemberBean();
bean.setId(rs.getString(1));
bean.setPass1(rs.getString(2));
bean.setEmail(rs.getString(3));
bean.setTel(rs.getString(4));
bean.setHobby(rs.getString(5));
bean.setJob(rs.getString(6));
bean.setAge(rs.getString(7));
bean.setInfo(rs.getString(8));
v.add(bean); // 테이블에 삽입된 정보들을 다 꺼내서 Memberbean필드에 저장한다
// 저장 후 백터에 삽입
}
conn.close();
} catch (Exception e) {
}
return v;
}
public MemberBean oneMember(String id) {
MemberBean bean = new MemberBean();
try {
getCon();
String sql = "select * from member where id=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if (rs.next()) {
bean.setId(rs.getString(1));
bean.setPass1(rs.getString(2));
bean.setEmail(rs.getString(3));
bean.setTel(rs.getString(4));
bean.setHobby(rs.getString(5));
bean.setJob(rs.getString(6));
bean.setAge(rs.getString(7));
bean.setInfo(rs.getString(8));
}
conn.close();
} catch (Exception e) {
}
return bean;
}
public String getPass(String id) {
String pass = "";
try {
getCon();
String sql = "select pass1 from member where id=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if (rs.next()) {
pass = rs.getString(1);
}
conn.close();
} catch (Exception e) {
}
return pass;
}
public void updateMember(MemberBean mbean) {
getCon();
try {
String sql = "update member set email=?, tel=? where id=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, mbean.getEmail());
pstmt.setString(2, mbean.getTel());
pstmt.setString(3, mbean.getId());
pstmt.executeUpdate();
conn.close();
} catch (Exception e) {
}
}
public void deleteMember(String id) { // id 기준으로 삭제
getCon();
try {
String sql = "delete from member where id=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.executeUpdate();
conn.close();
} catch (Exception e) {
}
}
}
[ MemberArray.jsp JSP 파일 ]
<%@page import="kr.co.bit.MemberBean, kr.co.bit.MemberDAO"%>
<%@page import="java.util.Vector"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
// 모든 회원정보 가져온다
MemberDAO mdao = new MemberDAO();
// 가변길이인 vector를 이용해 데이터를 저장한 후 -> 화면에 회원들 정보 출력
Vector<MemberBean> vec = mdao.allSelectMember();
%>
<center>
<table width="800" border="1">
<tr height="50">
<td width="150" align="center">아이디</td>
<td width="150" align="center">이메일</td>
<td width="150" align="center">전화번호</td>
<td width="150" align="center">취미</td>
</tr>
<%
for(int i=0;i<vec.size();i++) {
MemberBean bean=vec.get(i);
%>
<tr height="50">
<td width="150" align="center">
<a href="MemberIn.jsp?id=<%=bean.getId() %>"><%=bean.getId() %></a></td>
<td width="250" align="center"><%=bean.getEmail() %></td>
<td width="200" align="center"><%=bean.getTel() %></td>
<td width="200" align="center"><%=bean.getHobby() %></td>
</tr>
<%
}
%>
</table>
</center>
</body>
</html>
[ MemberIn.jsp JSP 파일 ]
<%@page import="kr.co.bit.MemberBean"%>
<%@page import="kr.co.bit.MemberDAO"%>
<%@ 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>
<!-- 데이터베이스에서 한 회원의 정보를 가져 옴 -->
<%
String id=request.getParameter("id");
MemberDAO mdao=new MemberDAO();
MemberBean mbean=mdao.oneMember(id); //해당하는 id의 회원정보를 리턴받을거임
%>
<center>
<h2>회원정보 상세보기</h2>
<table width="400" border="1">
<tr height="50">
<td width="150" align="center">아이디</td>
<td width="250" align="center"><%=mbean.getId() %></td>
</tr>
<tr height="50">
<td width="150" align="center">비밀번호</td>
<td width="250" align="center"><%=mbean.getPass1() %></td>
</tr>
<tr height="50">
<td width="150" align="center">이메일</td>
<td width="250" align="center"><%=mbean.getEmail() %></td>
</tr>
<tr height="50">
<td width="150" align="center">전화번호</td>
<td width="250" align="center"><%=mbean.getTel() %></td>
</tr>
<tr height="50">
<td width="150" align="center">취미</td>
<td width="250" align="center"><%=mbean.getHobby() %></td>
</tr>
<tr height="50">
<td width="150" align="center">직업</td>
<td width="250" align="center"><%=mbean.getJob() %></td>
</tr>
<tr height="50">
<td width="150" align="center">아이디</td>
<td width="250" align="center"><%=mbean.getId() %></td>
</tr>
<tr height="50">
<td width="150" align="center">정보</td>
<td width="250" align="center"><%=mbean.getInfo() %></td>
</tr>
<tr height="50">
<td colspan="2" align="center">
<button onclick="location.href='MemberUpdate.jsp?id=<%=mbean.getId() %>'">수정</button>
<button onclick="location.href='MemberDelete.jsp?id=<%=mbean.getId() %>'">삭제</button>
<button onclick="location.href='MemberArray.jsp'">전체목록</button>
<button onclick="location.href='MemberJoin.jsp'">회원가입</button>
</tr>
</table>
</center>
</body>
</html>
[ UpdateProc.jsp JSP 파일 ]
<%@page import="kr.co.bit.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="mbean" class="kr.co.bit.MemberBean">
<jsp:setProperty property="*" name="mbean" />
</jsp:useBean>
<%
String id=request.getParameter("id");
MemberDAO mdao=new MemberDAO();
//데이터베이스에서 패스워드 가져오기
String pass=mdao.getPass(id);
if(mbean.getPass1().equals(pass)) {
mdao.updateMember(mbean);
response.sendRedirect("MemberArray.jsp");
//DB패스워드와 입력패스워드가 같다면 member 테이블 수정할 수 있다.
}
else{
%>
<script type="text/javascript">
alert("패스워드가 틀렸다. 다시 입력해라");
history.go(-1);
</script>
<%
}
%>
</body>
</html>
[ MemberUpdate.jsp JSP 파일 ]
<%@page import="kr.co.bit.MemberDAO"%>
<%@page import="kr.co.bit.MemberBean"%>
<%@page import="java.lang.reflect.Member"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
String id=request.getParameter("id");
MemberDAO mdao=new MemberDAO();
MemberBean mbean=mdao.oneMember(id);
%>
<center>
<h2>회원정보 수정하기</h2>
<table width="400" border="1">
<form action="UpdateProc.jsp" method="post">
<tr height="50">
<td width="150" align="center">아이디</td>
<td width="250"><%=mbean.getId() %></td>
</tr>
<tr height="50">
<td width="150" align="center">이메일</td>
<td width="250">
<input type="email" name="email" value="<%=mbean.getEmail() %>"></td>
</tr>
<tr height="50">
<td width="150" align="center">전화번호</td>
<td width="250">
<input type="tel" name="tel" value="<%=mbean.getTel() %>"></td>
</tr>
<tr height="50">
<td width="150" align="center">패스워드</td>
<td width="250">
<input type="password" name="pass1"></td>
</tr>
<tr height="50">
<td colspan="2" align="center">
<input type="hidden" name="id" value="<%=mbean.getId() %>"> <!--hidden값(=숨겨서 서버에 전송한다)으로 걸어놈 !!! -->
<input type="submit" value="회원수정">
</form>
<button onclick="location.href='MemberArray.jsp'">전체목록</button> <!-- 회원정보상세보기 -> 회원목록전체보기 -->
</td>
</tr>
</form>
</table>
</center>
</body>
</html>
[ DeleteProc.jsp JSP 파일 ]
<%@page import="kr.co.bit.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="mbean" class="kr.co.bit.MemberBean">
<jsp:setProperty property="*" name="mbean" />
</jsp:useBean>
<%
MemberDAO mdao=new MemberDAO();
//MemberDAO에서 패스워드 가져오기
String pass=mdao.getPass(mbean.getId());
if(mbean.getPass1().equals(pass)) {
mdao.deleteMember(mbean.getId());
response.sendRedirect("MemberArray.jsp");
//DB패스워드와 입력패스워드가 같다면 member 테이블 삭제할 수 있다.
}
else{
%>
<script type="text/javascript">
alert("패스워드가 틀렸다. 다시 입력해라");
history.go(-1);
</script>
<%
}
%>
</body>
</html>
[ MemberDelete.jsp JSP 파일 ]
<%@page import="kr.co.bit.MemberBean"%>
<%@page import="kr.co.bit.MemberDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
String id=request.getParameter("id");
MemberDAO mdao=new MemberDAO();
MemberBean mbean=mdao.oneMember(id);
%>
<center>
<h2>회원정보 삭제하기</h2>
<table width="400" border="1">
<form action="DeleteProc.jsp" method="post">
<tr height="50">
<td width="150" align="center">아이디</td>
<td width="250"><%=mbean.getId() %></td>
</tr>
<tr height="50">
<td width="150" align="center">이메일</td>
<td width="250">
<input type="email" name="email" value="<%=mbean.getEmail() %>"></td>
</tr>
<tr height="50">
<td width="150" align="center">전화번호</td>
<td width="250">
<input type="tel" name="tel" value="<%=mbean.getTel() %>"></td>
</tr>
<tr height="50">
<td width="150" align="center">패스워드</td>
<td width="250">
<input type="password" name="pass1"></td>
</tr>
<tr height="50">
<td colspan="2" align="center">
<input type="hidden" name="id" value="<%=request.getParameter("id") %>"> <!--hidden값(=숨겨서 서버에 전송한다)으로 걸어놈 !!! -->
<input type="submit" value="회원삭제">
</form>
<button onclick="location.href='MemberArray.jsp'">전체목록</button> <!-- 회원정보상세보기 -> 회원목록전체보기 -->
</td>
</tr>
</table>
</center>
</body>
</html>
[ 복습 ]
1) Person.java : 본인 정보를 저장하는 자바 빈
2) PersonForm.jsp : 이름, 별명, 직업, 이메일 입력받는 폼
3) Person.jsp : 자바 빈에 저장하고 정보 얻어와 출력
[ PersonBean.java JavaBean 파일 ]
package kr.co.bit;
public class PersonBean {
private String name;
private String nik;
private String job;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNik() {
return nik;
}
public void setNik(String nik) {
this.nik = nik;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
——————————
[ personForm.jsp 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>
<form action="Person.jsp">
이름: <input type="text" name="name"><br>
별명: <input type="text" name="nik"><br>
직업: <input type="text" name="job"><br>
이메일: <input type="text" name="email"><br>
<input type="submit" value="제출하기">
</form>
</body>
</html>
——————————
[ person.jsp 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>
<%
request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="person" class="kr.co.bit.PersonBean" />
<jsp:setProperty property="*" name="person"/>
이름: <jsp:getProperty property="name" name="person"/><br>
별명: <jsp:getProperty property="nik" name="person"/><br>
직업: <jsp:getProperty property="job" name="person"/><br>
이메일: <jsp:getProperty property="email" name="person"/>
</body>
</html>
1) param.js에서 유효성 체크
2) param.jsp 폼 작성
3) param.java Servlet 클래스로 전송된 값 출력
[ param.js JavaScript 파일 ]
function validateForm() {
var id = document.getElementById("id").value;
var age = document.getElementById("age").value;
if (id == "" || age == "") {
alert("아이디와 나이를 모두 입력하세요.");
return false;
}
if (isNaN(age)) {
alert("나이는 숫자만 입력 가능합니다.");
return false;
}
return true;
}
-------------
[ param.jsp JSP 파일 ]
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Parameter Form</title>
<script src="param.js"></script>
</head>
<body>
<form action="param" method="post" onsubmit="return validateForm()">
아이디: <input type="text" id="id" name="id"><br>
나이: <input type="text" id="age" name="age"><br>
<input type="submit" value="전송">
</form>
</body>
</html>
--------------
[ param.java Servlet 클래스 ]
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String id = request.getParameter("id");
int age = Integer.parseInt(request.getParameter("age"));
out.println("입력된 아이디: " + id + "<br>");
out.println("입력된 나이: " + age + "<br>");
}
1) movie.jsp
2) mivieBean.java
3) movie2.jsp
[ movie.jsp JSP 파일 ]
%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<form action="movie2.jsp" method="post">
<table>
<tr><td>영화제목</td>
<td><input type="text" name="title"></tr>
<tr><td>가격</td>
<td><input type="text" name="price"></tr>
<tr><td>감독</td>
<td><input type="text" name="director"></tr>
<tr><td>시놉시스</td>
<td><textarea name="synopsis"></textarea></tr>
<tr><td>장르</td>
<td><select name="genre">
<option value="호러">호러
<option value="멜로">멜로
<option value="코미디">코미디
</select>
</table>
<input type="submit" value="전송">
</form>
</body>
</html>
---------------
[ MovieBean.java JavaBean ]
package kr.co.bit;
public class movieBean {
private String title;
private String price;
private String director;
private String synopsis;
private String genre;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getDirector() {
return director;
}
public void setDirector(String director) {
this.director = director;
}
public String getSynopsis() {
return synopsis;
}
public void setSynopsis(String synopsis) {
this.synopsis = synopsis;
}
public String getGenre() {
return genre;
}
public void setGenre(String genre) {
this.genre = genre;
}
}
-----------------
[ movie2.jsp JSP 파일 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<!-- useBean으로 세팅해 getPropert로 출력 -->
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="movie" class="kr.co.bit.movieBean">
<jsp:setProperty property="*" name="movie"/>
</jsp:useBean>
영화제목 : <%=movie.getTitle() %><br>
가격: <%=movie.getPrice() %><br>
감독 : <%=movie.getDirector() %><br>
시놉시스 : <%=movie.getSynopsis() %><br>
장르 : <%=movie.getGenre() %><br>
</body>
</html>
1) itemForm.jsp
2) item.jsp
3) itemBean.java
[ itemForm.jsp JSP 파일 ]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<form method="get" action="item.jsp">
name : <input type="text" name="name"><br>
가격 : <input type="text" name="price"><br>
desc1 : <input type="text" name="desc1"><br>
<input type="submit" value="전송">
</form>
</body>
</html>
----------------
[ item.Bean.java JavaBean 파일 ]
package kr.co.bit;
public class itemBean {
private String name;
private int price;
private String desc1;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getDesc1() {
return desc1;
}
public void setDesc1(String desc1) {
this.desc1 = desc1;
}
}
--------------------
[ item.jsp JSP 파일 ]
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="item" class="kr.co.bit.itemBean">
<jsp:setProperty property="*" name="item" />
</jsp:useBean>
<%
String id="root";
String pw="00000000";
String url="jdbc:mysql://localhost:3306/yujung";
try{
Class.forName("com.mysql.cj.jdbc.Driver");
//da에 접속
Connection con=DriverManager.getConnection(url,id,pw);
String sql="insert into item values(?,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
//?에 맞게 데이터를 맵핑
//itemBean필드에 저장되어 있는 값을 빼서 item 테이블 필드에 삽입
pstmt.setString(1, item.getName());
pstmt.setInt(2, item.getPrice());
pstmt.setString(3, item.getDesc1());
pstmt.executeUpdate();
con.close();
}catch(Exception e){
e.printStackTrace();
}
%>
db에 <%=item.getName() %>값 삽입(=추가) 완료 !!
</body>
</html>