본문 바로가기

공부/JSP

8월26일 - JSP 4 : 성적테이블

성적테이블 CRUD

 

Create  - 행추가  insert

Read    - 조회     select

Update - 수정     update

Delete  - 삭제     delete

 

[성적테이블 CRUD]

sungjukForm.jsp 성적쓰기 -> sungjukIns.jsp

 

                                  sno                                                                                  sno

sungjukList.jsp 성적목록 --------> sungjukRead.jsp 상세보기 (수정, 삭제할 수 있는 부모 jsp) -------> 삭제

                                                                                                                          sno

                                                                                                                       -------> 수정 

 

 

목록과 상세보기는 연결되어 있는 페이지처럼 보이는 것이지만, 실제로는 다 각자 존재하는 페이지다.

 

[페이지이동]

 

<a href=""></a>

location.href=""

<form action="">

<jsp:forward page=""></jsp:forward>

 

1. 성적 폼 생성

 

<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sungjukForm.jsp</title>
<style>
	/* .line{border:3px solid ; } */
</style>
</head>
<body>
	<h1>*성적 입력 폼*</h1>
	<p><a href="sungjukList.jsp">[성적목록]</a></p>
	
	<form method="post" action="sungjukIns.jsp">
	<table border='1'>
	<tr>
		<th>이름</th>
		<td>
			<input type="text" name="uname" maxlength="20" required autofocus> <!-- autofocus는 폼당 하나만 가능 -->
		</td>
	</tr>
	<tr>
		<th>국어</th>
		<td>
			<input type="number" name="kor" size="5" min="0" max="100" placeholder="숫자입력"> 
		</td>
	</tr>
	<tr>
		<th>영어</th>
		<td>
			<input type="number" name="eng" size="5" min="0" max="100" placeholder="숫자입력"> 
		</td>
	</tr>
	<tr>
		<th>수학</th>
		<td>
			<input type="number" name="mat" size="5" min="0" max="100" placeholder="숫자입력"> 
		</td>
	</tr>	
	<tr>
		<th>주소</th>
		<td>
			<select name="addr">
				<option value="Seoul">서울</option>
				<option value="Jeju">제주</option>
				<option value="Busan">부산</option>
				<option value="Suwon">수원</option>
			</select>
		</td>
	</tr>
	<tr>
		<td colspan="2" align="center">
			<input type="submit" value="전송">
			<input type="reset" value="취소">
		</td>
	</tr>
	</table>	
	</form>	
</body>
</html>

 

2. 성적 INSERT 생성

 

<%@ page contentType="text/html; charset=UTF-8"%>

<%@page import="java.sql.PreparedStatement" %>
<%@page import="java.sql.DriverManager" %>
<%@page import="java.sql.Connection" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sungjukIns.jsp</title>
</head>
<body>
	<h1>*성적 결과*</h1>
	<p><a href="sungjukForm.jsp">[성적쓰기]</a></p>
<%
	//한글 인코딩
	request.setCharacterEncoding("UTF-8");

	//입력정보 가져와서 변수에 담기
	String uname=request.getParameter("uname").trim();
	int kor=Integer.parseInt(request.getParameter("kor").trim());
	int eng=Integer.parseInt(request.getParameter("eng").trim());
	int mat=Integer.parseInt(request.getParameter("mat").trim());
	String addr=request.getParameter("addr").trim();
	
	//평균구하기
	int aver=(kor+eng+mat)/3;
	
	//출력
	out.println("이름 : "+uname+"<hr>");
	out.println("국어 : "+kor+"<hr>");
	out.println("영어 : "+eng+"<hr>");
	out.println("수학 : "+mat+"<hr>");
	out.println("평균 : "+aver+"<hr>");
	out.println("주소 : "+addr+"<hr>");
	out.println("요청IP : "+request.getRemoteAddr()+"<hr>");
	
	//Oracle DB 저장----------------------------------------------------------
	try{
		//1)Oracle 드라이버 (ojdbc.jar)
		Class.forName("oracle.jdbc.OracleDriver");
		
		//2)Oracle DB 연결
		Connection con=DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521/xe","java0514","1234");
		
		PreparedStatement pstmt=null;
		
		//3)SQL문 작성
		StringBuilder sql=new StringBuilder();
		sql.append(" INSERT INTO sungjuk(sno,uname,kor,eng,mat,aver,addr,wdate) ");
		sql.append(" VALUES((SELECT NVL(MAX(sno),0)+1 FROM sungjuk) ");
		sql.append("         ,?,?,?,?,?,?,sysdate) ");
		
		//4)SQL문 변환
		pstmt=con.prepareStatement(sql.toString());
		pstmt.setString(1, uname);
		pstmt.setInt(2, kor);
		pstmt.setInt(3, eng);
		pstmt.setInt(4, mat);
		pstmt.setInt(5, aver);
		pstmt.setString(6, addr);
		
		//5)SQL문 실행
		int cnt=pstmt.executeUpdate();
		if(cnt==0){
			out.println("<p>성적 입력에 실패했습니다</p>");
			out.println("<p><a href='javascript:history.back()'>[다시시도]</a></p>");
		}else{
			out.println("<script>");
			out.println("	alert('성적이 입력되었습니다.');");
			out.println("	location.href='sungjukList.jsp';"); //목록페이지 이동
			out.println("</script>");
		}//if end				
	}catch(Exception e){
		out.println("실패!"+e);
	}//try end	
%>
</body>
</html>

 

3. 성적 LIST 생성

 

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sungjukList.jsp</title>
</head>
<body>
	<h1>*성적 목록*</h1>
	<p><a href="sungjukForm.jsp">[성적쓰기]</a></p>
	<table border='1'>
	<tr>
		<th>이름</th>
		<th>국어</th>
		<th>영어</th>
		<th>수학</th>
		<th>평균</th>
		<th>등록일</th>
	</tr>
<%
	try{
		Class.forName("oracle.jdbc.OracleDriver");
		Connection con=DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521/xe","java0514","1234");
		
		StringBuilder sql=new StringBuilder();
		sql.append(" SELECT sno,uname,kor,eng,mat,aver,wdate ");
		sql.append(" FROM sungjuk ");
		sql.append(" ORDER BY wdate DESC ");
		
		PreparedStatement pstmt=con.prepareStatement(sql.toString());
		ResultSet rs=pstmt.executeQuery();
		if(rs.next()){ //cursor가 있나?
			do{
%>
				<tr>
				
					<td><a href='sungjukRead.jsp?sno=<%=rs.getInt("sno")%>'><%=rs.getString("uname")%></a></td>
					<td><%=rs.getInt("kor")%></td>
					<td><%=rs.getInt("eng")%></td>
					<td><%=rs.getInt("mat")%></td>
					<td><%=rs.getInt("aver")%></td>
					<td><%=rs.getString("wdate")%></td>
				</tr>

<%
			}while(rs.next());				
		}else{
			out.println("<tr>");
			out.println("	<td colspan='7'>글없음!</td>");
			out.println("</tr>");
		}//if end	
		
	}catch(Exception e){
		out.println("실패 : "+e);
	}//try end
	
%>
	</table>
</body>
</html>

 

4. 성적 READ 생성

 

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sungjukRead.jsp</title>
</head>
<body>
	<h1>*성적 상세보기*</h1>
	<p>
	<a href="sungjukForm.jsp">[성적쓰기]</a>
	<a href="sungjukList.jsp">[성적목록]</a>
	</p>
<%
int sno=Integer.parseInt(request.getParameter("sno"));
out.print(sno);
%>

</body>
</html>

 

LIST 페이지에서 sno를

 

DBOpen 이라는 클라스를 만들어서 굳이 매번 db를 연결해주지않고 class로 만들어서 넣어준다. 

 

[성적 수정 sungjukUpdate.jsp]

수정하고자 하는 행을 가져와서 -> select문

                                         -> sungjukRead.jsp

폼에 출력하고-> sungjukForm.jsp 

해당 데이터를 수정한다. -> sungjukUpdateProc.jsp

                                -> update문

 

'공부 > JSP' 카테고리의 다른 글

8월23일 - JSP 3 : 기본문법  (0) 2019.08.23
8월22일 - JSP 2 : 기본문법 (배열, 메소드)  (0) 2019.08.22
8월21일 - JSP 1  (0) 2019.08.21