IT 관련,,/Java관련 언어들

[웹/JSP]jsp model1 간단한 도서관리게시판-3(insert문)

IT깡패's 2020. 8. 9. 09:45
728x90
반응형
SMALL

jsp model1 게시판으로 간단하게 insert문을 실행해보려고 하는데요~

insert문은 select.jsp에서 insertForm으로 가게끔 처리해주었는데요~

insertProc라고 해서 insert가 dao를 통해서 동작하게끔 하는 작업도 같이 넣어줘야합니다~

select문부터 살펴볼까요~ㅎㅎㅎ

 

- select.jsp

<script type="text/javascript">
	function insert() {
		location.href = "insertForm.jsp";
	}
</script>

 

이렇게 처리하면 insertForm.jsp로 바로 가게끔 됩니다~!!

그리고 insertForm.jsp와 insertProc.jsp를 살펴볼까요~ㅎㅎ

 

- insertForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
insertForm.jsp<br><br>

<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">

</style>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
function inputCheck(){
	//alert(1);
	
	str = "입력한 항목은\n"; 
	
	//if(document.myform.title.value.length==0){
	if(document.myform.title.value==""){
		alert("제목입력하세요");
		return false;
	}
	
	if(document.myform.author.value==""){
		alert("저자입력하세요");
		return false;
	}
	
	if(document.myform.publisher.value==""){
		alert("출판사입력하세요");
		return false;
	}
	
	if(document.myform.price.value==""){
		alert("가격입력하세요");
		return false;
	}
	
	if(isNaN(document.myform.price.value)){
		alert("가격은 숫자로 입력하세요");
		//document.myform.price.value="";
		document.myform.price.select();
		return false;
	}
	
	if(document.myform.bdate.value==""){
		alert("입고일 입력하세요");
		return false;
	}
	
	str += document.myform.title.value+"\n";
	str += document.myform.author.value+"\n";
	str += document.myform.publisher.value+"\n";
	str += document.myform.price.value+"\n";
	str += document.myform.bdate.value+"\n";
	
	
	var len = document.myform.kind.length; // 2
	flag = false;
	for(var i=0;i<len;i++){
		if(document.myform.kind[i].checked == true){
			str += document.myform.kind[i].value +"\n";
			flag = true;
		}
	}
	
	if(flag == false){
		alert("배송비 유무를 선택하세요");
		return false;
	}
	
	var len = document.myform.bookstore.length; // 4
	flag = false;
	for(var i=0;i<len;i++){
		if(document.myform.bookstore[i].checked == true){
			flag = true;
			str += document.myform.bookstore[i].value+" ";
		}
	}
	str += "\n";
	
	if(flag == false){
		alert("서점 최소 하나는 선택하세요");
		return false;
	}
	/* if(document.myform.count.value=="선택"){
		alert("보유 수량을 선택하세요");
		return false;
	} */
	
	index = document.myform.count.selectedIndex;
	if(index == 0){
		alert("보유 수량을 선택하세요");
		return false;
	}
	str += document.myform.count.value;
	
	alert(str);
	
}
</script>
</head>
<body>  
	<h1>도서 정보 입력</h1>
	<form name="myform" action="insertProc.jsp" method="post">
		<table border=1>
			<tr>
				<td>제목</td>
				<td><input type="text" name="title" id="title"></td>
			</tr>
			<tr>
				<td>저자</td>
				<td><input type="text" name="author" id="author"></td>
			</tr>
			<tr>
				<td>출판사</td>
				<td><input type="text" name="publisher" id="publisher"></td>
			</tr>
			<tr>
				<td>가격</td>
				<td><input type="text" name="price" id="price"></td>
			</tr>
			<tr>
				<td>입고일</td>
				<td><input type="date" name="bdate" id="bdate"></td>
			</tr>

			<tr>
				<td>배송비</td>
				<td>유료 <input type="radio" name="kind" id="kind" value="유료"> 
					무료 <input type="radio" name="kind" id="kind" value="무료">
					
				</td>	
			</tr>
			<tr>
				<td>구입가능 서점</td>
				<td>교보문고 <input type="checkbox" name="bookstore" value="kyobo">
					알라딘 <input type="checkbox" name="bookstore" value="aladin">
					yes24 <input type="checkbox" name="bookstore" value="yes24">
					인터파크 <input type="checkbox" name="bookstore" value="interpark">
					</td>
			</tr>
			<tr>
				<td>보유수량</td>
				<td><select name="count" id="count">
						<option value="선택">선택</option>
						<option value="1">1</option>
						<option value="2">2</option>
						<option value="3">3</option>
						<option value="4">4</option>
						<option value="5">5</option>
				</select></td>
			</tr>

		</table>
		<br> <input type="submit" value="전송" onclick="return inputCheck()"> 
		<input type="reset"	value="취소">
	</form>
</body>
</html> 

 

- insertProc.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
insertProc.jsp<br><br>

<%
   request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="bb" class="book.BookBean"/>
<jsp:useBean id="dao" class="book.BookDao"/>
<jsp:setProperty property="*" name="bb"/>

<%
   System.out.println(bb.getTitle());
   System.out.println(bb.getAuthor());
   System.out.println(bb.getPublisher());
   System.out.println(bb.getPrice());

%>

<%
   String[] bookstore = request.getParameterValues("bookstore");
	String str="";
	for(int i=0; i<bookstore.length; i++){
		str += bookstore[i]+" ";
	}
	bb.setBookstore(str);
     
   int cnt = dao.insertData(bb);
      
   if(cnt == 1){
	   response.sendRedirect("select.jsp");
   }else{
	   response.sendRedirect("insertForm.jsp");
   }
   

%>

 

자 이렇게 하면 insert문이 처리되는데요~

현재 insertData를 받아줄 dao가 없죠~

dao도 만들어보겠습니다.

그리고 javascript로 유효성검사를 하게 처리했는데, 아무것도 입력을 안하면 alert창이 뜨게됩니다.

checkbox로 된 bookstore(서점은) 입력값이 띄어쓰기를 써서 나오게끔 처리했기때문에 하나값이 아니고 두 세개값을 

넣으면 띄어쓰기로 웹 페이지에 나타나게끔 해주죠~ㅎㅎㅎ

jsp에서는 useBean을 통해 dao나 bean값을 연결시키게끔 해주었기 때문에 값을 바로 가져올 수 있습니다,,,

 

- BookDao.java

package book;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import book.BookBean;

public class BookDao {
	String driver = "oracle.jdbc.driver.OracleDriver";
	String url = "jdbc:oracle:thin:@localhost:1521:xe";
	String dbid="scott";
	String dbpw="1234";
	Connection conn = null;

	public BookDao() {

		try{
			Class.forName(driver);
			conn = DriverManager.getConnection(url,dbid,dbpw);
			
		}catch(SQLException e){
			e.printStackTrace();

		}catch(ClassNotFoundException e){
			e.printStackTrace();

		}catch(Exception e){
			e.printStackTrace();
		}
	}


	public Vector<BookBean> getAllBook(){
		String sql = "select * from book order by bnum";
		PreparedStatement pstmt=null;
		ResultSet rs = null;
		Vector<BookBean> lists = new Vector<BookBean>();
		try{
			pstmt=conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			
			while(rs.next()){
				int bnum = rs.getInt("bnum");
				String title = rs.getString("title");
				String author = rs.getString("author");
				String publisher = rs.getString("publisher");
				String price = rs.getString("price");
				String bdate = rs.getString("bdate");
				String kind = rs.getString("kind");
				String bookstore = rs.getString("bookstore");
				String count = rs.getString("count"); 
				BookBean bb = new BookBean(bnum,title,author,publisher,price,bdate,kind,bookstore,count);
				lists.add(bb);
			}
			

		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try{
				if(rs!=null)
					rs.close();
				if(pstmt!=null)
					pstmt.close();
				if(conn!=null)
					conn.close();
			}catch(SQLException e){
				e.printStackTrace();
			}
		}
		return lists; 
	}

	public int insertData(BookBean bean) {
		PreparedStatement pstmt = null;
		String sql = "insert into book(bnum,title,author,publisher,price,bdate,kind,bookstore,count) "
				+ "values(b_seq.nextval,?,?,?,?,?,?,?,?)";
		int cnt=-1;
		try{
			pstmt = conn.prepareStatement(sql);

			pstmt.setString(1, bean.getTitle());
			pstmt.setString(2, bean.getAuthor());
			pstmt.setString(3, bean.getPublisher());
			pstmt.setString(4, bean.getPrice());
			pstmt.setString(5, bean.getBdate());
			pstmt.setString(6,bean.getKind());
			pstmt.setString(7, bean.getBookstore());
			pstmt.setString(8, bean.getCount());

			cnt=pstmt.executeUpdate();
			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try{
				if(pstmt!=null)
					pstmt.close();
				if(conn!=null)
					conn.close();
			}catch(Exception e2){
				e2.printStackTrace();
			}
		}
		return cnt;			
	}

	
}

 

pstmt = conn.prepareStatement(sql);으로 insert가 되게끔 해주었고요~

select와 마찬가지로 insert도 try catch문을 써서 pstmt와 conn을 close하게하여 예외처리가 발생하지 않게끔

짜보았습니다~ㅎㅎ

이제 updat문과 delete문이 남았는데요~

이것도 이어서 만들어보고록 할께요~ 질문이나 하실 말씀이 있으시다면 방명록이나 공지사항에 있는 메일로

보내주시면 감사하겠습니다~@#!$%^&*()!!

728x90
반응형
LIST