<!-- ch09/teamList2.hsp -->
<%@page import="ch09.TeamBean"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.util.Vector"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.net.ConnectException"%>
<%@page contentType="text/html; charset=UTF-8"%>
<%
try{
String _driver = "com.mysql.cj.jdbc.Driver",
_url = "jdbc:mysql://localhost:3306/mydb2?characterEncoding=UTF-8&serverTimezone=UTC",
_user = "root",
_password = "1234";
Class.forName(_driver); // Driver 객체 생성
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
con = DriverManager.getConnection(_url,_user,_password);
String sql = "select * from tblTeam";
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
Vector<TeamBean> vlist = new Vector<TeamBean>();
while(rs.next()){
TeamBean bean = new TeamBean();
bean.setNum(rs.getInt("num"));
bean.setName(rs.getString("name"));
bean.setCity(rs.getString("city"));
bean.setAge(rs.getInt("age"));
bean.setTeam(rs.getString("team"));
vlist.addElement(bean);
}
//out.print(vlist.size());
%>
<div align="center">
<h1>Team List</h1>
<table border="1">
<tr>
<th>번호</th>
<th>이름</th>
<th>사는곳</th>
<th>나이</th>
<th>팀명</th>
</tr>
<%
for(int i=0;i<vlist.size();i++){
TeamBean bean = vlist.get(i);
%>
<tr align="center">
<td><%=bean.getNum()%></td>
<td><%=bean.getName()%></td>
<td><%=bean.getCity()%></td>
<td><%=bean.getAge()%></td>
<td><%=bean.getTeam()%></td>
</tr>
<%
}
%>
</table>
</div>
<%
}catch(Exception e){
e.printStackTrace();
}
%>
< db1 >
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = null;
try {
con = pool.getConnection();
sql = "";
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeConnection(con, pstmt, rs);
}
return;
추가하기
< db2 >
Connection con = null;
PreparedStatement pstmt = null;
String sql = null;
try {
con = pool.getConnection();
sql = "";
pstmt = con.prepareStatement(sql);
pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeConnection(con, pstmt);
}
return;
추가하기
select -> 스키마를 포함한 레코드
insert, update, delete -> 적용된 레코드 개수
sql = "select
왠만해서는 는 최대한 안쓰고 열이름을 직접 선언하는게 좋음.
<TeamMgr.java>
package ch09;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;
public class TeamMgr {
private DBConnectionMgr pool;
//생성자
public TeamMgr() {
pool = DBConnectionMgr.getInstance();
}
//리스트
public Vector<TeamBean> listTeam(){
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = null;
Vector<TeamBean> vlist = new Vector<TeamBean>();
try {
con = pool.getConnection();
sql = "select * from tblTeam";
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next()) {
TeamBean bean = new TeamBean();
bean.setNum(rs.getInt("num"));
bean.setName(rs.getString("name"));
bean.setCity(rs.getString("city"));
bean.setAge(rs.getInt("age"));
bean.setTeam(rs.getString("team"));
vlist.addElement(bean);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeConnection(con, pstmt, rs);
}
return vlist;
}
// 저장
public void insertTeam(TeamBean bean) {
Connection con = null;
PreparedStatement pstmt = null;
String sql = null;
try {
con = pool.getConnection();
sql = "insert tblTeam(name,city,age,team) values(?, ?, ?, ?)";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, bean.getName());
pstmt.setString(2, bean.getCity());
pstmt.setInt(3, bean.getAge());
pstmt.setString(4, bean.getTeam());
// values('홍길동','부산',23,'산적')
pstmt.executeUpdate();// SQL로 실행
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeConnection(con, pstmt);
}
}
// 한개의 레코드 가져오기
public TeamBean getTeam(int num) {
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = null;
TeamBean bean = new TeamBean();
try {
con = pool.getConnection();
sql = "select * from tblTeam where num = ?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, num);
rs = pstmt.executeQuery();
// where 절 이하에 조건이 pk 로 선언된 컬럼일때 if문으로 사용.
if (rs.next()) {
bean.setNum(rs.getInt(1));
bean.setName(rs.getString(2));
bean.setCity(rs.getString(3));
bean.setAge(rs.getInt(4));
bean.setTeam(rs.getString(5));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeConnection(con, pstmt, rs);
}
return bean;
}
// 수정
public boolean updateTeam(TeamBean bean) {
Connection con = null;
PreparedStatement pstmt = null;
String sql = null;
boolean flag = false;
try {
con = pool.getConnection();
sql = "update tblTeam set name=?, city = ?,"
+ " age = ? , team = ? where num =?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, bean.getName());
pstmt.setString(2, bean.getCity());
pstmt.setInt(3, bean.getAge());
pstmt.setString(4, bean.getTeam());
pstmt.setInt(5, bean.getNum());
int cnt = pstmt.executeUpdate();
if (cnt == 1)
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeConnection(con, pstmt);
}
return flag;
}
// 삭제
public void deleteTeam(int num) {
Connection con = null;
PreparedStatement pstmt = null;
String sql = null;
try {
con = pool.getConnection();
sql = "delete from tblTeam where num =?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, num);
pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeConnection(con, pstmt);
}
}
}
<MYUti.java>
package ch09;
import javax.servlet.http.HttpServletRequest;
public class MyUtil {
//매개변수가 숫자이면 true, 숫자가 아니면 false
public static boolean isNumeric(String s) {
try {
Integer.parseInt(s);
return true;
} catch(NumberFormatException e) {
return false;
}
}
public static int parseInt(HttpServletRequest request,
String name) {
return Integer.parseInt(request.getParameter(name));
}
}
<teamInsert.html>
<!-- ch09/teamInsert.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Team Mgr</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
function check() {
f= document.frm;
if(f.name.value==""){
alert("이름 입력하세요");
f.name.focus();
return; // 함수 빠져나옴
}
if(f.city.value==""){
alert("사는곳 입력하세요");
f.city.focus();
return; // 함수 빠져나옴
}
if(f.age.value==""){
alert("나이 입력하세요");
f.age.focus();
return; // 함수 빠져나옴
}
if(f.team.value==""){
alert("팀 입력하세요");
f.team.focus();
return; // 함수 빠져나옴
}
f.submit(); // 제출
}
function check2() {
document.frm.action = "teamInsertProc2.jsp";
document.frm.submit();
}
</script>
</head>
<body>
<div align="center">
<h1>Team Insert</h1>
<form name="frm" method="post" action="teamInsertProc.jsp">
<table border="1">
<tr>
<td width="50" align="center">이름</td>
<td width="150"><input name="name" value="홍길동"></td>
</tr>
<tr>
<td align="center">사는곳</td>
<td><input name="city" value="부산"></td>
</tr>
<tr>
<td align="center">나이</td>
<td><input name="age" value="27"></td>
</tr>
<tr>
<td align="center">팀명</td>
<td><input name="team" value="산적"></td>
</tr>
<tr>
<td align="center" colspan="2"><input type="button"
value="SAVE" onclick="check()"> <input type="button"
value="SAVE2" onclick="check2()"></td>
</tr>
</table>
</form><p>
<a href="teamList.jsp">LIST</a>
</div>
</body>
</html>
<teamList.jsp>
<!-- ch09/teamList.jsp -->
<%@page import="ch09.TeamBean"%>
<%@page import="java.util.Vector"%>
<%@page contentType="text/html; charset=UTF-8"%>
<jsp:useBean id="mgr" class="ch09.TeamMgr"/>
<%
Vector<TeamBean> vlist = mgr.listTeam();
//out.println(vlist.size());
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Team Mgr</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div align="center">
<h1>Team List</h1>
<table border="1">
<tr>
<th>번호</th>
<th>이름</th>
<th>사는곳</th>
<th>나이</th>
<th>팀명</th>
</tr>
<%
for(int i=0;i<vlist.size();i++){
TeamBean bean = vlist.get(i);
%>
<tr align="center">
<td><%=bean.getNum()%></td>
<td>
<a href="teamRead.jsp?num=<%=bean.getNum()%>"><%=bean.getName()%></a>
</td>
<td><%=bean.getCity()%></td>
<td><%=bean.getAge()%></td>
<td><%=bean.getTeam()%></td>
</tr>
<%
} //-for
%>
</table><p>
<a href="teamInsert.html">INSERT</a>
</div>
</body>
</html>
<teamInsertProc.jsp>
<!-- ch09/teamInsertProc.jsp -->
<%@page import="ch09.TeamBean"%>
<%@page import="ch09.TeamMgr"%>
<%@page contentType="text/html; charset=UTF-8"%>
<%
TeamMgr mgr =new TeamMgr();
TeamBean bean = new TeamBean();
String name = request.getParameter("name");
String city = request.getParameter("city");
int age = Integer.parseInt(request.getParameter("age"));
String team = request.getParameter("name");
bean.setName(name);
bean.setCity(city);
bean.setAge(age);
bean.setTeam(team);
mgr.insertTeam(bean);
response.sendRedirect("teamList.jsp");
%>
<teamInsertProc2.jsp>
<!-- ch09/teamInsertProc2.jsp -->
<%@page contentType="text/html; charset=UTF-8"%>
<jsp:useBean id="mgr" class="ch09.TeamMgr"/>
<jsp:useBean id="bean" class="ch09.TeamBean"/>
<jsp:setProperty property="*" name="bean"/>
<%
mgr.insertTeam(bean); // 저장
response.sendRedirect("teamList.jsp");
%>
<teamDelete.jsp>
<!-- ch09/teamDelete.jsp -->
<%@page import="ch09.MyUtil"%>
<%@page contentType="text/html; charset=UTF-8"%>
<jsp:useBean id="mgr" class="ch09.TeamMgr"/>
<%
int num = MyUtil.parseInt(request, "num");
mgr.deleteTeam(num); // 삭제
response.sendRedirect("teamList.jsp");
%>
<teamUpdate.jsp>
<!-- ch09/teamUpdate.jsp -->
<%@page import="ch09.TeamBean"%>
<%@page import="ch09.MyUtil"%>
<%@page contentType="text/html; charset=UTF-8"%>
<jsp:useBean id="mgr" class="ch09.TeamMgr" />
<%
int num = MyUtil.parseInt(request, "num");
TeamBean bean = mgr.getTeam(num);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Team Mgr</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div align="center">
<h1>Team Update</h1>
<form name="frm" method="post" action="teamUpdateProc.jsp">
<table border="1">
<tr>
<td width="50" align="center">번호</td>
<td width="150"><input name="num" value="<%=bean.getNum()%>" readonly></td>
</tr>
<tr>
<td width="50" align="center">이름</td>
<td width="150"><input name="name" value="<%=bean.getName()%>"></td>
</tr>
<tr>
<td align="center">사는곳</td>
<td><input name="city" value="<%=bean.getCity()%>"></td>
</tr>
<tr>
<td align="center">나이</td>
<td><input name="age" value="<%=bean.getAge()%>"></td>
</tr>
<tr>
<td align="center">팀명</td>
<td><input name="team" value="<%=bean.getTeam()%>"></td>
</tr>
<tr>
<td align="center" colspan="2">
<%-- 화면에 안보이게 하는 태그
<input type="hidden" name="num" value="<%=bean.getNum()%>"> --%>
<input type="submit" value="UPDATE"></td>
</tr>
</table>
</form>
<p>
<a href="teamRead.jsp?num=<%=num%>">READ</a>
</div>
</body>
</html>
<teamUpdateProc.jsp>
<!-- ch09/teamUpdateProc.jsp -->
<%@page contentType="text/html; charset=UTF-8"%>
<jsp:useBean id="mgr" class="ch09.TeamMgr"/>
<jsp:useBean id="bean" class="ch09.TeamBean"/>
<jsp:setProperty property="*" name="bean"/>
<%
boolean result = mgr.updateTeam(bean);
//out.print(result);
String msg = "수정실패";
String url = "teamList.jsp";
if(result){
msg = "수정성공";
url = "teamRead.jsp?num="+bean.getNum();
}
%>
<script>
alert("<%=msg%>");
location.href = "<%=url%>"
</script>
<teamRead.jsp>
<!-- ch09/teamRead.jsp -->
<%@page import="ch09.TeamBean"%>
<%@page import="ch09.TeamMgr"%>
<%@page import="ch09.MyUtil"%>
<%@page contentType="text/html; charset=UTF-8"%>
<%
// teamList.jsp 에서 num 값을 넘겨 처리해야함
int num = 0;
TeamBean bean = null;
if(request.getParameter("num")==null){
// num 값이 넘어 오지 않음
response.sendRedirect("teamList.jsp");
return;
}else if(!MyUtil.isNumeric(request.getParameter("num"))){
// num 값이 숫자 형태로 넘어 오지 않음.
response.sendRedirect("teamList.jsp");
return;
}else{
num = MyUtil.parseInt(request, "num");
TeamMgr mgr = new TeamMgr();
bean = mgr.getTeam(num);
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Team Mgr</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div align="center">
<h1>Team Read</h1>
<table border="1">
<tr>
<td>번호</td>
<td><%=bean.getNum()%></td>
</tr>
<tr>
<td>이름</td>
<td><%=bean.getName()%></td>
</tr>
<tr>
<td>사는곳</td>
<td><%=bean.getCity()%></td>
</tr>
<tr>
<td>나이</td>
<td><%=bean.getAge()%></td>
</tr>
<tr>
<td>팀명</td>
<td><%=bean.getTeam()%></td>
</tr>
</table><p/>
<a href="teamList.jsp">LIST</a>
<a href="teamInsert.html">INSERT</a>
<a href="teamUpdate.jsp?num=<%=num%>">UPDATE</a>
<a href="teamDelete.jsp?num=<%=num%>">DELETE</a>
</div>
</body>
</html>
<결과>