AR삽질러

JSP - Student관리프로그램(1) - 학생등록 본문

JAVA/JSP

JSP - Student관리프로그램(1) - 학생등록

아랑팡팡 2023. 4. 14. 14:38
728x90

JSP연습용 - 학생관리프로그램

JSP : Java Server Page

 

jsp에서 java코드를 사용시 
<%!  %>
<%  %> 
<%= %>

jsp 지시어
<%@ page : page지시어 - 
<%@ include : include지시어
<%@ taglib : taglib지시어

 

view : index, top, bottom, company, 

model : StudentDAO, StudentDTO

 

DAO : Data Access Object, DB와 상호작용을 담당

DTO : Data Transfer Object, 데이터 전송을 위한 객체

 

SQL의 개요
 - Structured Query Language
 - DBMS상에서 데이타를 읽고 쓰고 삭제하는 등 데이타를 관리하기 위한 일종의 
   프로그램 언어
 - 집합적 언어(데이타를 특정 집합 단위로 분류해 이 단위별로 한번에 처리하는 언어)
 - 1980년대 후반 RDBMS의 표준언어로 SQL을 채택
 - DDL, DML, DCL등으로 구별하여 사용

DDL(Data Definition Language)
 - CREATE : 테이블이나 인텍스, 뷰등 데이타베이스 객체를 생성
 - DROP : 생성된 데이타베이스 객체를 삭제
 - ALTER : 이미 생성된 데이타베이스 객체를 수정
 - TRUNCATE : 테이블이나 클러스터의 데이터를 통째로 삭제

DML(Data Manipulation Language)
 - SELECT : 테이블이나 뷰에 있는 데이터 조회
 - INSERT : 데이터를 추가
 - UPDATE : 이미 생성된 데이터를 수정
 - DELETE : 데이터를 삭제

DCL(Data Control Language)
 - GRANT : 사용자에게 특정 권한을 부여
 - REVOKE : 사용자에게 부여된 권한을 회수

트랜잭션 제어
 - COMMIT : 트랙잭션 처리, 변경된 데이터를 최종 적용
 - ROLLBACK : 트랙잭션 처리, 변경된 데이터를 적용하지 않고 이전으로 되돌림
 - SAVEPOINT : rollback 위치 지정

PL/SQL 
 - SQL을 절차적으로 사용할 수 있게 해주는 언어
 - 코드와 문법이 존재하지만, 그 중심은 SQL에 있다
 - DB프로그래밍이라는 것은 PL/SQL을 이용해 함수나 프로시저를 만들어 
   여러 작업을 처리하는 것을 말한다

create table studentex
(id varchar2(10),
pass varchar2(15),
name varchar2(15),
cname varchar2(25));

index

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!-- index.jsp -->
<%@ include file="top.jsp" %>
<h3>제 홈페이지에 오신 걸 환영합니다.</h3>
<ul>
	<li><a href="student.jsp">학생관리프로그램</a></li>
</ul>
<%@ include file="bottom.jsp" %>

 

 

top

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!-- top.jsp -->
<html>
<head>
	<title>홈페이지</title>
</head>
<body>
	<div align="center">
	<table border="1" width="800" height="600">
		<tr height="10%">
			<td colspan="2" align="center">
				<a href="index.jsp">main</a> | 로그인 | 회원가입 | 게시판 | 
				<a href="company.jsp">회사소개</a>
			</td>
		</tr>
		<tr>
			<td width="20%">tree/view</td>
			<td width="80%">

bottom

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!-- bottom.jsp -->
</td>
		</tr>
		<tr height="10%">
			<td colspan="2" align="center">KG아이티뱅크 4-5월 웹프로그램 주말반</td>
		</tr>
	</table>
	</div>
</body>
</html>

company

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!-- company.jsp -->
<%@ include file="top.jsp"%>
<h3>저희 회사는 일은 적고, 월급은 많은 좋은 회사 입니다.</h3>
<%@ include file="bottom.jsp"%>

insert

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%
	request.setCharacterEncoding("utf-8");
%>
<!-- 넘어온 데이터 넣기 -->
<jsp:useBean id="stdto" class="my.student.StudentDTO" />
<jsp:setProperty property="*" name="stdto" />

<!-- DAO객체 만들기 -->
<jsp:useBean id="stdao" class="my.student.StudentDAO" />

<%
	if (stdto.getId() == null || stdto.getId().trim().equals("") || 
		stdto.getPass() == null || stdto.getPass().trim().equals("") ||
		stdto.getName() == null || stdto.getName().trim().equals("") || 
		stdto.getCname() == null || stdto.getCname().trim().equals("")){
		response.sendRedirect("student.jsp");
		return;
	}
	int res = stdao.insertStudent(stdto);
	String msg = null, url = null;
	if (res > 0){
		msg = "학생등록 성공!! 학생목록페이지로 이동합니다.";
		url = "list.jsp";
	}else { 
		msg = "학생등록 실패!! 학생등록페이지로 이동합니다.";
		url = "student.jsp";
	}
%>
<script type="text/javascript">
    alert("<%= msg %>");
    location.href="<%= url %>";
</script>

list

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR" import="java.util.*, my.student.*"%>
<!-- list.jsp -->
<html>
<head>
	<title>학생목록</title>
</head>
<body>
	<div align="center">
		<hr color="green" width="300">
		<h2>학 생 목 록 보 기</h2>
		<hr color="green" width="300">
		<table border="1" width="600">
			<tr>
				<th>아이디</th>
				<th>비  번</th>
				<th>학생명</th>
				<th>학급명</th>
			</tr>
<jsp:useBean id="stdao" class="my.student.StudentDAO" />
<%
		List<StudentDTO> list = stdao.listStudent();	
		if (list == null || list.size() == 0){%>
			<tr>
				<td colspan="3">등록된 학생이 없습니다.</td>
			</tr>		
<%		}else {
			for(StudentDTO dto : list){%>
			<tr>
				<td><%=dto.getId()%></td>
				<td><%=dto.getPass()%></td>
				<td><%=dto.getName()%></td>
				<td><%=dto.getCname()%></td>
			</tr>		
<%			}
		}%>			
		</table>
	</div>
</body>
</html>

student

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!-- student.jsp -->
<html>
<head>
	<title>학생관리</title>
</head>
<body>
	<div align="center">
		<hr color="green" width="300">
		<h2>학 생 등 록 페 이 지</h2>
		<hr color="green" width="300">
		<form name="f" action="insert.jsp" method="post">
			<table border="1">
				<tr><td>
					아이디 : <input type="text" name="id"><br>
					비번   : <input type="password" name="pass"><br>
					학생명 : <input type="text" name="name"><br>
					학급명 : <input type="text" name="cname"><br>
					<input type="submit" value="입력">
					<input type="reset" value="다시입력">
				</td></tr>
			</table>
		</form>
		<hr color="green" width="300">
		<h2>학 생 삭 제 페 이 지</h2>
		<hr color="green" width="300">
		<form name="f" action="delete.jsp" method="post">
			<table border="1">
				<tr><td>
					아이디 : <input type="text" name="id">
					<input type="submit" value="삭제">
				</td></tr>
			</table>
		</form>
		<hr color="green" width="300">
		<h2>학 생 찾 기 페 이 지</h2>
		<hr color="green" width="300">
		<form name="f" action="find.jsp" method="post">
			<table border="1">
				<tr><td>
					학생명 : <input type="text" name="name">
					<input type="submit" value="찾기">
				</td></tr>
			</table>
		</form>
		<hr color="green" width="300">
		<h2>학 생 목 록 페 이 지</h2>
		<hr color="green" width="300">
		<form name="f" action="list.jsp" method="post">
			<table border="1">
				<tr><td>
					<input type="submit" value="학생목록리스트로 이동">
				</td></tr>
			</table>
		</form>
	</div>
</body>
</html>

delete

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!-- delete.jsp -->
<jsp:useBean id="stdao" class="my.student.StudentDAO" />
<%
	String id = request.getParameter("id");
	if (id == null || id.trim().equals("")){
		response.sendRedirect("student.jsp");
		return;
	}
	
	int res = stdao.deleteStudent(id);
	String msg = null, url = null;
	if (res > 0){
		msg = "학생삭제 성공!! 학생목록페이지로 이동합니다.";
		url = "list.jsp";
	}else { 
		msg = "학생삭제 실패!! 학생등록페이지로 이동합니다.";
		url = "student.jsp";
	}
%>
<script type="text/javascript">
	alert("<%=msg%>")
	location.href="<%=url%>"
</script>

find

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR" import="java.util.*, my.student.*"%>
<!-- find.jsp -->
<%
	request.setCharacterEncoding("EUC-KR");
	String name = request.getParameter("name");
	if (name == null || name.trim().equals("")){
		response.sendRedirect("student.jsp");
		return;
	}
%>
<html>
<head>
	<title>학생찾기</title>
</head>
<body>
	<div align="center">
		<hr color="green" width="300">
		<h2>학 생 찾 기</h2>
		<hr color="green" width="300">
		<table border="1" width="500">
			<tr>
				<th>아이디</th>
				<th>학생명</th>
				<th>학급명</th>
			</tr>
<jsp:useBean id="stdao" class="my.student.StudentDAO" />
<%
		List<StudentDTO> list = stdao.findStudent(name);	
		if (list == null || list.size() == 0){%>
			<tr>
				<td colspan="3">찾으시는 학생이 없습니다.</td>
			</tr>		
<%		}else {
			for(StudentDTO dto : list){%>
			<tr>
				<td><%=dto.getId()%></td>
				<td><%=dto.getName()%></td>
				<td><%=dto.getCname()%></td>
			</tr>		
<%			}
		}%>			
		</table>
	</div>
</body>
</html>

StudentDTO

package my.student;

//DTO : Data Trasfer Object
public class StudentDTO {
	private String id;
	private String pass;
	private String name;
	private String cname;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPass() {
		return pass;
	}
	public void setPass(String pass) {
		this.pass = pass;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getCname() {
		return cname;
	}
	public void setCname(String cname) {
		this.cname = cname;
	}
	
	
}

StudentDAO

package my.student;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

//DAO : Data Access Object - CRUD
public class StudentDAO {
	Connection con;
	PreparedStatement ps;
	ResultSet rs;
	
	String url, user, pass;
	
	public StudentDAO() {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		}catch(ClassNotFoundException e) {
			System.err.println("오라클 드라이버 검색 실패!!");
		}
		url = "jdbc:oracle:thin:@localhost:1521/XEPDB1";
		user = "arang";
		pass = "arang";
	}
	
	public int insertStudent(StudentDTO dto) throws SQLException {
		try {
			con = DriverManager.getConnection(url, user, pass);
			String sql = "insert into studentex values(? , ? , ?, ?)";
			ps = con.prepareStatement(sql);
			ps.setString(1, dto.getId());
			ps.setString(2, dto.getPass());
			ps.setString(3, dto.getName());
			ps.setString(4, dto.getCname());
			int res = ps.executeUpdate();
			return res;
		}finally {
			if (ps != null) ps.close();
			if (con != null) con.close();
		}
	}
	
	protected List<StudentDTO> makeList(ResultSet rs) throws SQLException {
		List<StudentDTO> list = new ArrayList<>();
		while(rs.next()) {
			String id = rs.getString("id");
			String pass = rs.getString("pass");
			String name = rs.getString("name");
			String cname = rs.getString("cname");
			StudentDTO dto = new StudentDTO();
			dto.setId(id);
			dto.setPass(pass);
			dto.setName(name);
			dto.setCname(cname);
			list.add(dto);
		}
		return list;
	}
	
	public List<StudentDTO> listStudent() throws SQLException {
		try {
			con = DriverManager.getConnection(url, user, pass);
			String sql = "select * from studentex";
			ps = con.prepareStatement(sql);
			rs = ps.executeQuery();
			List<StudentDTO> list = makeList(rs);
			return list;
		}finally {
			if (rs != null) rs.close();
			if (ps != null) ps.close();
			if (con != null) con.close();
		}
	}
	
	public int deleteStudent(String id) throws SQLException {
		try {
			con = DriverManager.getConnection(url, user, pass);
			String sql = "delete from studentex where id=?";
			ps = con.prepareStatement(sql);
			ps.setString(1, id);
			int res = ps.executeUpdate();
			return res;
		}finally {
			if (ps != null) ps.close();
			if (con != null) con.close();
		}
	}
	
	public List<StudentDTO> findStudent(String name) throws SQLException {
		try {
			con = DriverManager.getConnection(url, user, pass);
			String sql = "select * from studentex where name = ?";
			ps = con.prepareStatement(sql);
			ps.setString(1, name);
			rs = ps.executeQuery();
			List<StudentDTO> list = makeList(rs);
			return list;
		}finally {
			if (rs != null) rs.close();
			if (ps != null) ps.close();
			if (con != null) con.close();
		}
	}
}

 

728x90
반응형
LIST

'JAVA > JSP' 카테고리의 다른 글

JSP - Student관리프로그램(2) - 회원가입, 로그인, 게시판  (0) 2023.04.25
JSP-6장 - ActionTag, 7장 - MySQL  (0) 2023.04.14
JSP - 5장 Cookie  (0) 2023.04.14
JSP - 4장 Session  (0) 2023.04.14
JSP - 3장 유효성검사  (0) 2023.03.31