23.03.15(Jsp)

MH S·2023년 3월 15일
0

Jsp

목록 보기
3/16

MVC 패턴 사용유무 차이

teamList2.jsp(MVC패턴 사용 x)

<!-- 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();
	}
%>



INSERT, UPDATE, DELETE

자바 템플릿 추가

< 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 -> 적용된 레코드 개수

TeamMgr.java, MyUtil.java, teamInsert.html, teamList.jsp, teamInsertProc.jsp, teamInsertProc.jsp,teamDelte.jsp, teamUpdate.jsp,teamUpdateProc.jsp, teamRead.jsp

tip!

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>&nbsp;&nbsp;
<a href="teamInsert.html">INSERT</a>&nbsp;&nbsp;
<a href="teamUpdate.jsp?num=<%=num%>">UPDATE</a>&nbsp;&nbsp;
<a href="teamDelete.jsp?num=<%=num%>">DELETE</a>&nbsp;&nbsp;
</div>
</body>
</html>

<결과>




0개의 댓글

관련 채용 정보