본문 바로가기

STUDY/JSP

도서 관리 페이지 예제 - 2021.10.06

 

* 도서 관리 페이지 예제

01 데이터베이스

1) BOOKSTORE 테이블

2) BNO(PK), BNAME, AUTHOR, PUBLISHER, PRICE, CNT 컬럼

3) BOOKLIST 테이블

4) ​LNO(PK), BNAME, PRICE, CNT, TOT 컬럼

5) LOGIN 테이블

6) ID, PW 컬럼

 

02 TOP / Top.jsp

1) 도서 목록, 도서 검색, 구입 목록, 도서 추가, 도서 수정으로 가는 링크 (어느 페이지에서도 뜨도록)

2) header 이미지의 아이콘을 누르면 메인 페이지로 이동

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>H BookStore</title>
<link href="css/Style.css" rel="stylesheet" type="text/css">
</head>
<body>
	<header>
		<h1><a href="Main.jsp"><img src="image/bookicn.png" width="40px" height="40px"></a>&emsp;H - B o o k S t o r e</h1>
	</header>
	<nav>
		<a href="Output.jsp">도서 목록</a>&emsp;&emsp;
		<a href="SearchForm.jsp">도서 검색</a>&emsp;&emsp;
		<a href="BuyList.jsp">구입 목록</a>&emsp;&emsp;
		<a href="Login_i.do">도서 추가</a>&emsp;&emsp;
		<a href="Login_m.do">도서 수정</a>&emsp;&emsp;
	</nav>
</body>
</html>
 

03 Footer / Footer.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>H BookStore</title>
<link href="css/Style.css" rel="stylesheet" type="text/css">
</head>
<body>
	<footer>
		대한민국 경기도 내 어딘가<br>
		Developer by Hong.s
	</footer>
</body>
</html>
 

04 Main / Main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="Top.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>H BookStore</title>
<link href="css/Style.css" rel="stylesheet" type="text/css" />
</head>
<body>
	<section>
			<img src="image/book.jpg" width="100%" height="400px">
	</section>
</body>
<%@ include file="Footer.jsp" %>
</html>
 

05 도서 목록 / Output.jsp

1) BOOKSTORE 테이블에 있는 데이터들 모두 출력

2) 구입 링크를 누르면 Buy.jsp로 이동 (bno, bname, price, cnt 값을 가지고 이동)

<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="Top.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>H BookStore</title>
<link href="css/Style.css" rel="stylesheet" type="text/css">
</head>
<body>
	<div class="container">
	<h3><span>도서 목록</span> 페이지</h3>
	<hr width="100%">
	<p>
	<%!
		String bno, bname, author, publisher;
		int price, cnt;
	%>
	
	<%
		request.setCharacterEncoding("utf-8");
		Connection con;
		PreparedStatement psmt;
		ResultSet res;
		
		String driver="oracle.jdbc.driver.OracleDriver";
		String url="jdbc:oracle:thin:@localhost:1521:xe";
		Class.forName(driver);
		con=DriverManager.getConnection(url, "아이디", "비밀번호");
		
		String sql="select * from bookstore order by bno";
		psmt=con.prepareStatement(sql);
		res=psmt.executeQuery();
	%>
	
	<table border="1">
		<tr><th>번호</th><th>도서명</th><th>저자</th><th>출판사</th><th>가격</th><th>수량</th><th>구입</th></tr>
		<%
			while(res.next()){
				bno = res.getString("bno");
				bname = res.getString("bname");
				author = res.getString("author");
				publisher = res.getString("publisher");
				price = res.getInt("price");
				cnt = res.getInt("cnt");
		%>
		<tr><td><%=bno %></td><td><%=bname %></td><td><%=author %></td><td><%=publisher %></td><td><%=price %></td><td><%=cnt %></td>
		<td><a href="Buy.jsp?bno=<%=bno %>&bname=<%=bname %>&price=<%=price %>&cnt=<%=cnt %>">구입</a></td>
		</tr>
		<%
			}
		%>
	</table>
	</div>
</body>
<%@ include file="Footer.jsp" %>
</html>
 
 

06 - ① 도서 구입 폼 / Buy.jsp

1) bno, bname, price, cnt 값을 받아 온 상태

2) Buy.do로 보내기 위해 HttpSession을 사용하여 위의 값 저장(setAttribute)

3) 구입하고자 하는 수량을 입력 받기(b_cnt)

4) bno: 책 번호, bname: 도서명, price: 가격, cnt: 해당 도서의 재고 수, b_cnt: 구입하고자 하는 수량

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="Top.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>H BookStore</title>
<link href="css/Style.css" rel="stylesheet" type="text/css">
</head>
<body>
	<div class="container">
	<h3><span>도서 구입</span> 페이지</h3>
	<hr width="100%">
	<p>
	<%
		request.setCharacterEncoding("utf-8");
		String bno = request.getParameter("bno");
		String bname = request.getParameter("bname");
		int price = Integer.parseInt(request.getParameter("price"));
		int cnt = Integer.parseInt(request.getParameter("cnt"));
		
		HttpSession hs = request.getSession();
		hs.setAttribute("bno", bno);
		hs.setAttribute("bname", bname);
		hs.setAttribute("price", price);
		hs.setAttribute("cnt", cnt);
	%>
	<form action="Buy.do" method="post">
		<table>
			<tr><td>도서명</td><td><%=bname %></td></tr>
			<tr><td>가격</td><td><%=price %></td></tr>
			<tr><td>수량</td><td><input type="number" name="b_cnt"></td></tr>
		</table>
		<p><p>
		<input type="submit" value="구입">
		<input type="reset" value="취소">
	</form>
	</div>
</body>
<%@ include file="Footer.jsp" %>
</html>
 
 

 

06 - ② 도서 구입​ 서블릿 / FrontController.java(Buy.do)

1) HttpSession에 저장했던 bno, bname, price, cnt 값 가져오기(getAttribute)

2) BOOKLIST에 추가할 합계와 구입한 수량 저장

3) tcnt = 구입 전 수량 - 구입할 수량 (남은 재고 수)

4) BOOKSTORE에서 bno에 해당하는 cnt 수정(구입한 만큼 (-)연산)

5) BOOKLIST에 날짜, 책이름, 가격, 구입한 수량, 합계 추가

6) 리스트 번호는 전역변수로 int lno=0; 설정 후 Buy.do 소스코드에 들어올 때마다 lno 1씩 증가 후 추가

7) BOOKLIST에 성공적으로 데이터들을 추가하면 BuyList.jsp로 이동

/*
 * 중략
*/
else if(fname.equals("/Buy.do")) {
			LocalDateTime now = LocalDateTime.now();
			String formatedNow = now.format(DateTimeFormatter.ofPattern("yy-MM-dd HH:mm:ss"));
			HttpSession hs = request.getSession();
			String bno = (String)hs.getAttribute("bno");
			String bdate = formatedNow;
			String bname = (String)hs.getAttribute("bname");
			int price = (Integer)hs.getAttribute("price");
			int b_cnt = Integer.parseInt(request.getParameter("b_cnt"));
			int tot = price * b_cnt;
			int cnt = (Integer)hs.getAttribute("cnt");
			int tcnt = cnt - b_cnt;
			
			String sql="update bookstore set cnt=? where bno=?";
			try {
				psmt=con.prepareStatement(sql);
				psmt.setInt(1, tcnt);
				psmt.setString(2, bno);
				psmt.executeUpdate();
			} catch (SQLException e) {
				e.printStackTrace();
			}

			String sql2="insert into booklist values(?,?,?,?,?)";
			try {
				psmt=con.prepareStatement(sql2);
				psmt.setString(1, bdate);
				psmt.setString(2, bname);
				psmt.setInt(3, price);
				psmt.setInt(4, b_cnt);
				psmt.setInt(5, tot);
				int k=psmt.executeUpdate();
				if(k==1)
					response.sendRedirect("BuyList.jsp");
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
		}
/*
 * 중략
 */
 

 

 

06 - ③ 도서 구입 목록 / BuyList.jsp

1) BOOKLIST 테이블에 있는 데이터들을 날짜 내림차순으로 모두 출력

<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="Top.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>H BookStore</title>
<link href="css/Style.css" rel="stylesheet" type="text/css">
</head>
<body>
	<div class="container">
	<h3><span>구입 목록</span> 페이지</h3>
	<hr width="100%">
	<p>
	<%!
		int price, cnt, tot;
		String bdate, bname;
	%>
	
	<%
		request.setCharacterEncoding("utf-8");
		Connection con;
		PreparedStatement psmt;
		ResultSet res;
		
		String driver="oracle.jdbc.driver.OracleDriver";
		String url="jdbc:oracle:thin:@localhost:1521:xe";
		Class.forName(driver);
		con=DriverManager.getConnection(url, "아이디", "비밀번호");
		
		String sql="select * from booklist order by bdate desc";
		psmt=con.prepareStatement(sql);
		res=psmt.executeQuery();
	%>
	
	<table border="1">
		<tr><th>날짜</th><th>도서명</th><th>가격</th><th>수량</th><th>합계</th></tr>
		<%
			while(res.next()){
				bdate = res.getString("bdate");
				bname = res.getString("bname");
				price = res.getInt("price");
				cnt = res.getInt("cnt");
				tot = res.getInt("tot");
				
		%>
		<tr><td><%=bdate %></td><td><%=bname %></td><td><%=price %></td><td><%=cnt %></td><td><%=tot %></td></tr>
		<%
			}
		%>
	</table>
	</div>
</body>
<%@ include file="Footer.jsp" %>
</html>
 

 

 

07 - ① 도서 검색 폼/ SearchForm.jsp

1) 검색할 도서명을 입력 받아 Search.jsp로 전송

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="Top.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>H BookStore</title>
<link href="css/Style.css" rel="stylesheet" type="text/css">
</head>
<body>
	<div class="container">
	<h3><span>도서 검색</span> 페이지</h3>
	<hr width="100%">
	<p>
	<form action="Search.jsp" method="post">
			검색할 도서의 이름을 입력하세요<br><br>
			도서명: <input type="text" name="s_bname">
		<p>
		<input type="submit" value="검색">
		<input type="reset" value="취소">
	</form>
	</div>
</body>
<%@ include file="Footer.jsp" %>
</html>
 
 

 

07 - ② 도서 검색 / Search.jsp

1) 검색할 도서명이 포함된 모든 도서 출력 SELECT * FROM BOOKSTORE WHERE BNAME LIKE '%검색도서명%';

<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="Top.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>H BookStore</title>
<link href="css/Style.css" rel="stylesheet" type="text/css">
</head>
<body>
	<div class="container">
	<h3><span>도서 검색</span> 페이지</h3>
	<hr width="100%">
	<p>
	<%! 
		String s_bname, bno, author, publisher, bname;
		int price, cnt; 
	%>
	<%
		request.setCharacterEncoding("utf-8");
		Connection con;
		PreparedStatement psmt;
		ResultSet res;
	
		String driver="oracle.jdbc.driver.OracleDriver";
		String url="jdbc:oracle:thin:@localhost:1521:xe";
		Class.forName(driver);
		con=DriverManager.getConnection(url, "아이디", "비밀번호");
		s_bname = request.getParameter("s_bname");
		
		String sql = "select * from bookstore where bname like ?";
		psmt=con.prepareStatement(sql);
		psmt.setString(1, "%" + s_bname + "%");
		res=psmt.executeQuery();
	%>
	
	<table border="1">
		<tr><th>번호</th><th>도서명</th><th>저자</th><th>출판사</th><th>가격</th><th>수량</th></tr>
		<%
			while(res.next()){
				bno = res.getString("bno");
				bname = res.getString("bname");
				author = res.getString("author");
				publisher = res.getString("publisher");
				price = res.getInt("price");
				cnt = res.getInt("cnt");
		%>
		<tr><td><%=bno %></td><td><%=bname %></td><td><%=author %></td><td><%=publisher %></td><td><%=price %></td><td><%=cnt %></td></tr>
		<%
			}
		%>
	</table>
	</div>
</body>
<%@ include file="Footer.jsp" %>
</html>
 

 

 

08 - ① 도서 추가 > 로그인 서블릿 / FrontController.java(Login_i.do)

1) 도서 추가와 도서 수정은 관리자 로그인이 필요

2) 도서 추가 버튼을 누른 후 로그인을 하면 index=1로 변경 (flag) 후 Login.jsp로 이동

/*
 * 중략
 */
else if(fname.equals("/Login_i.do")) {
			index=1;
			response.sendRedirect("Login.jsp");
}
/*
 * 중략
*/
 

 

 

08 - ② 관리자 로그인 폼 / Login.jsp

1) ID와 PW 입력 후 Success.do로 이동

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="Top.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>H BookStore</title>
<link href="css/Style.css" rel="stylesheet" type="text/css">
</head>
<body>
	<div class="container">
	<h3><span>관리자 로그인</span> 페이지</h3>
	<hr width="100%">
	<p>
	<form action="Success.do" method="post">
		ID <input type="text" name="id"><p>
		PW <input type="password" name="pw"><p>
		<p><p>
		<input type="submit" value="로그인">
		<input type="reset" value="취소">
	</form>
	</div>
</body>
<%@ include file="Footer.jsp" %>
</html>

 

 

08 - ③ 로그인 확인 / FrontController.java(Success.do)

1) LOGIN 테이블에서 ID와 PW 모두 일치하는지 확인

2) 일치하면 index 비교, index가 1이면 도서 추가(Insert.jsp)로 이동

/*
 * 중략
*/
else if(fname.equals("/Success.do")) {
				String id = request.getParameter("id");
				String pw = request.getParameter("pw");
					
				String sql="select * from login where id=? and pw=?";
				try {
					psmt=con.prepareStatement(sql);
					psmt.setString(1, id);
					psmt.setString(2, pw);
					res=psmt.executeQuery();
					if(res.next()) {
						if(index==1)
							response.sendRedirect("Insert.jsp");
						else if(index==2)
							response.sendRedirect("Admin_Output.jsp");
						}
					else{
						response.sendRedirect("Login.jsp");
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
		}
/*
 * 중략
*/
 

 

08 - ④ 도서 추가 폼 / Insert.jsp

1) BOOKSTORE에 들어갈 데이터 입력받아 Insert.do로 전송

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="Top.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>H BookStore</title>
<link href="css/Style.css" rel="stylesheet" type="text/css">
</head>
<body>
	<div class="container">
	<h3><span>도서 추가</span> 페이지</h3>
	<hr width="100%">
	<p>
	<form action="Insert.do" method="post">
		<table>
			<tr><td>도서번호</td><td><input type="text" name="bno"></td></tr>
			<tr><td>도서명</td><td><input type="text" name="bname"></td></tr>
			<tr><td>저자</td><td><input type="text" name="author"></td></tr>
			<tr><td>출판사</td><td><input type="text" name="publisher"></td></tr>
			<tr><td>가격</td><td><input type="text" name="price"></td></tr>
			<tr><td>수량</td><td><input type="text" name="cnt"></td></tr>
		</table>
		<p><p>
		<input type="submit" value="추가">
		<input type="reset" value="취소">
	</form>
	</div>
</body>
<%@ include file="Footer.jsp" %>
</html>
 

 

 

08 - ⑤ 도서 추가 서블릿 / FrontController.java(Insert.do)

1) 넘겨받은 데이터를 BOOKSTORE에 추가

2) 성공적으로 추가하면 Admin_Output.jsp로 이동

/*
 * 중략
*/
if(fname.equals("/Insert.do")) {
			String bno = request.getParameter("bno");
			String bname = request.getParameter("bname");
			String author = request.getParameter("author");
			String publisher = request.getParameter("publisher");
			int price = Integer.parseInt(request.getParameter("price"));
			int cnt = Integer.parseInt(request.getParameter("cnt"));
			
			String sql="insert into bookstore values(?,?,?,?,?,?)";
			try {
				psmt=con.prepareStatement(sql);
				psmt.setString(1, bno);
				psmt.setString(2, bname);
				psmt.setString(3, author);
				psmt.setString(4, publisher);
				psmt.setInt(5, price);
				psmt.setInt(6, cnt);
				
				int k = psmt.executeUpdate();
				if(k==1)
					response.sendRedirect("Admin_Output.jsp");
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
/* 
 * 중략
*/
 

 

 

09 관리자 도서 목록 / Admin_Output.jsp

1) BOOKSTORE에 있는 데이터들을 모두 출력

2) 수정과 삭제로 가기 위한 링크(bno, bname 값을 가지고 이동)

<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="Top.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>H BookStore</title>
<link href="css/Style.css" rel="stylesheet" type="text/css">
</head>
<body>
	<div class="container">
	<h3><span>도서 목록</span> 페이지</h3>
	<hr width="100%">
	<p>
	<%!
		String bno, bname, author, publisher;
		int price, cnt;
	%>
	
	<%
		request.setCharacterEncoding("utf-8");
		Connection con;
		PreparedStatement psmt;
		ResultSet res;
		
		String driver="oracle.jdbc.driver.OracleDriver";
		String url="jdbc:oracle:thin:@localhost:1521:xe";
		Class.forName(driver);
		con=DriverManager.getConnection(url, "아이디", "비밀번호");
		
		String sql="select * from bookstore order by bno";
		psmt=con.prepareStatement(sql);
		res=psmt.executeQuery();
	%>
	
	<table border="1">
		<tr><th>번호</th><th>도서명</th><th>저자</th><th>출판사</th><th>가격</th><th>수량</th><th>수정</th><th>삭제</th></tr>
		<%
			while(res.next()){
				bno = res.getString("bno");
				bname = res.getString("bname");
				author = res.getString("author");
				publisher = res.getString("publisher");
				price = res.getInt("price");
				cnt = res.getInt("cnt");
				
		%>
		<tr><td><%=bno %></td><td><%=bname %></td><td><%=author %></td><td><%=publisher %></td><td><%=price %></td><td><%=cnt %></td>
		<td><a href="Modify.jsp?m_bno=<%=bno %>&m_bname=<%=bname %>">수정</a></td>
		<td><a href="Delete.do?d_bno=<%=bno %>">삭제</a></td>
		</tr>
		<%
			}
		%>
	</table>
	</div>
</body>
<%@ include file="Footer.jsp" %>
</html>
 

 

10 - ① 도서 수정 > 로그인 서블릿 / FrontController.java(Login_m.do)

1) 도서 추가와 도서 수정은 관리자 로그인이 필요

2) 도서 수정 버튼을 누른 후 로그인을 하면 index=2로 변경 (flag) 후 Login.jsp로 이동

/*
 * 중략
 */
else if(fname.equals("/Login_m.do")) {
			index=2;
			response.sendRedirect("Login.jsp");
}
/*
 * 중략
*/
 

 

 

10 - ② 관리자 로그인 폼 / Login.jsp (08-②)

 

10 - ③ 로그인 확인 / FrontController.java(Success.do) (08-③)

1) LOGIN 테이블에서 ID와 PW 모두 일치하는지 확인

2) 일치하면 index 비교, index가 2이면 관리자 도서 목록 페이지(Admin_Output.jsp)로 이동

10 - ④ 도서 수정 폼 / Modify.jsp

1) Admin_Output.jsp에서 수정 링크를 누르면 Modify.jsp로 이동

2) bno와 bname 값은 유지하고 저자, 출판사, 가격, 수량 수정 가능

3) bno와 bname 값은 HttpSession을 이용해 저장(setAttribute)

4) 수정 버튼을 누르면 Modify.do로 전송

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="Top.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>H BookStore</title>
<link href="css/Style.css" rel="stylesheet" type="text/css">
</head>
<body>
	<%
		String m_bno = request.getParameter("m_bno");
		String m_bname = request.getParameter("m_bname");
	%>
	<div class="container">
	<h3><span>도서 수정</span> 페이지</h3>
	<hr>
	<p>
	<form action="Modify.do" method="post">
		<table>
			<tr><td>도서번호</td><td><%=m_bno %></td></tr>
			<tr><td>도서명</td><td><%=m_bname %></td></tr>
			<tr><td>저자</td><td><input type="text" name="m_author"></td></tr>
			<tr><td>출판사</td><td><input type="text" name="m_publisher"></td></tr>
			<tr><td>가격</td><td><input type="text" name="m_price"></td></tr>
			<tr><td>수량</td><td><input type="text" name="m_cnt"></td></tr>
		</table>
		<p><p>
		
		<%
			HttpSession hs = request.getSession();
			hs.setAttribute("m_bno", m_bno);
			hs.setAttribute("m_bname", m_bname);
		%>
		<input type="submit" value="수정">
		<input type="reset" value="취소">
	</form>
	</div>
</body>
<%@ include file="Footer.jsp" %>
</html>
 

 

 

10 - ⑤ 도서 수정 서블릿 / FrontController.java(Modify.do)

1) HttpSession을 이용해 bno와 bname 값 가져오기(getAttribute)

2) BOOKSTORE 테이블에서 저자, 출판사, 가격, 수량 변경

3) 변경에 성공하면 Admin_Output.jsp로 이동

/*
 * 중략
*/
else if(fname.equals("/Modify.do")) {
			HttpSession hs = request.getSession();
			String bno = (String)hs.getAttribute("m_bno");
			String bname = (String)hs.getAttribute("m_bname");
			String author = request.getParameter("m_author");
			String publisher = request.getParameter("m_publisher");
			int price = Integer.parseInt(request.getParameter("m_price"));
			int cnt = Integer.parseInt(request.getParameter("m_cnt"));
			
			String sql="update bookstore set author=?, publisher=?, price=?, cnt=? where bno=? and bname=?";
			try {
				psmt=con.prepareStatement(sql);
				psmt.setString(1, author);
				psmt.setString(2, publisher);
				psmt.setInt(3, price);
				psmt.setInt(4, cnt);
				psmt.setString(5, bno);
				psmt.setString(6, bname);
				int k=psmt.executeUpdate();
				if(k==1)
					response.sendRedirect("Admin_Output.jsp");
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
/* 
 * 중략
*/
 
 

11 도서 삭제 / FrontController.java(Delete.do)

1) Admin_Output.jsp에서 삭제 링크를 누르면 Delete.do로 이동

2) 해당하는 bno의 데이터를 삭제

3) 성공적으로 삭제하면 Admin_Output.jsp로 이동

/*
 * 중략
*/
else if(fname.equals("/Delete.do")) {
			String d_bno = request.getParameter("d_bno");
			
			String sql="delete from bookstore where bno=?";
			try {
				psmt=con.prepareStatement(sql);
				psmt.setString(1, d_bno);
				int k=psmt.executeUpdate();
				if(k==1)
					response.sendRedirect("Admin_Output.jsp");
			} catch (SQLException e) {
				e.printStackTrace();
			}	
		}
/*
 * 중략
*/
 

 

12 FrontController.java (Servlet) - 확장자 패턴 이용

package com.book;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class FrontController
 */
@WebServlet("*.do")
public class FrontController extends HttpServlet {
	private static final long serialVersionUID = 1L;
	int index=0;
    /**
     * @see HttpServlet#HttpServlet()
     */
    public FrontController() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");

		String uri=request.getRequestURI();
		String conpath=request.getContextPath();
		String fname=uri.substring(conpath.length());
		
		Connection con=null;
		PreparedStatement psmt;
		ResultSet res;
		
		String driver="oracle.jdbc.driver.OracleDriver";
		String url="jdbc:oracle:thin:@localhost:1521:xe";
		
		try {
			Class.forName(driver);
			con = DriverManager.getConnection(url, "아이디", "비밀번호");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		if(fname.equals("/Insert.do")) {
			**
		}
		else if(fname.equals("/Delete.do")) {
			**
		}
		else if(fname.equals("/Modify.do")) {
			**
		}
		else if(fname.equals("/Login_i.do")) {
			**
		}
		else if(fname.equals("/Login_m.do")) {
			**
		}
		else if(fname.equals("/Success.do")) {
			**
		}
		else if(fname.equals("/Buy.do")) {
			**
		}
	}
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}
 

 

13 css / Style.css

@charset "UTF-8";

header{
	background-color: #CED46A;
	border-style: solid 1px;
	border-color: #CED46A;
	width: 100%;
	height: 80px;
	line-height: 80px;	
	text-align: center;
	color: #07553B;
}

nav{
	width: 100%;
	text-align: center;
	height: 50px;
	line-height: 50px;
	background-color: #07553B;
	border-style: solid 1px;
	border-color: #ffefd5;
	color: #CED46A;
}

section{
	border-style: solid 1px;
	border-color: white;
	width: 100%;
	height: 400px;
	vertical-align: center;
	text-align: center;
}

footer{
	width: 100%;
	text-align: center;
	background-color: #07553B;
	color: white;
	border-style: solid 1px;
	border-color: #07553B;
}
h3{	
	text-align: center;
}

span{color: #07553B;}

hr{border: 2px solid #CED46A;}
form{
	width: 100%;
	text-align: center;
}
table{
	width: 100%;
	text-align: center;
	margin: 5px;
	padding: 5px;
	border-collapse: collapse;
}
th,td{
	margin: 5px;
	padding: 10px;
	text-align: center;
}
th{
	background-color: #2BAE66;
	color: #FCF6F5;
}
.container{
	width: 100%;
	height: 400px;
}
a:link {color: #CED46A; text-decoration: none;} 
a:visited {color: #CED46A; text-decoration: none;}
a:hover {color: white; text-decoration: underline;} 
 

 

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

학생 성적 관리 페이지 예제 - 2021.10.05  (0) 2023.12.09
회원가입 예제 - 2021.09.29  (0) 2023.12.09