본문 바로가기
JSP/연습

평가 3번째문제

by SEOKIHOUSE 2023. 6. 25.

!! JSP -textarea replace쓰고 안쓰고 차이 글을 참고하자(값 출력 후 저장시 textarea 띄워쓰기 관련한 글임)

 

 

eval_11_yhs.zip
2.63MB

 

원래는 도서제목 누르면 title을 넘겼는데 그렇게하니까 도서제목이 같을 시 도서번호1번 이녀석이 계속뜨더라 그래서

해리포터를 눌렀을 시 event.target의 부모요소의 첫번째 자식이 도서번호니까 그걸 쿼리스트링으로 넘겼다

결과는 중복되는 제목있어도 알아서 들어가짐!!


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
	<script>
		window.onload =function () {
			const subBtn = document.querySelector("#sbmBtn");
			let ids = document.querySelector("input[name=id]");
			let pws = document.querySelector("input[name=pw]");
			
			subBtn.addEventListener("click", go);
			
			function go(event) {
				event.preventDefault();
				if(ids.value.trim() =="") {
					alert("값이 입력되지 않았습니다");
					ids.focus();
					return;
				}
				if(pws.value.trim() =="") {
					alert("값이 입력되지 않았습니다");
					pws.focus();
					return;
				}
				
				
				const xhttp = new XMLHttpRequest();
				xhttp.onreadystatechange = function() {
					if(xhttp.readyState === 4 && xhttp.status ===200) {
						const notice = this.responseText;
						alert(notice);
						
						if(notice === "로그인성공") {
							window.location.href ="main.jsp";
							
						}
					}
				}
				
				xhttp.open("POST", "loginServlet", true);
				xhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
				const data = "id=" + ids.value + "&pw=" +pws.value;
				xhttp.send(data);
				
				
			}
		}
	</script>
</head>
<body>
	<h1>로그인</h1>
	<hr>
	
<%--	<form name="frm" action="main.jsp" method="POST"> --%>
		id <input type="text" name="id" placeholder="input id"><br>
		pw <input type="password" name="pw" placeholder="input pw"><br>
		<input id="sbmBtn" type="submit" value= "전송">
<%--	</form> --%>

</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="css/cssfile.css">
</head>
<body>
	<%@ include file="header.jsp"%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="css/cssfile.css">
	<script>
		window.onload = function() {
			const smBtn = document.querySelector("#smtBtn");
			
			let titles = document.querySelector("input[name=title]");
			let authors = document.querySelector("input[name=author]");
			let publishers = document.querySelector("input[name=publisher]");
			let prices = document.querySelector("input[name=price]");
			let contexts = document.querySelector("textarea[name=context]");
			
			
			smBtn.addEventListener("click", function hello(event) {
				event.preventDefault();
				
				if(titles.value.trim() =="") {
					alert("값을 입력하세요");
					titles.focus();
					return;
				}
				if(authors.value.trim() =="") {
					alert("값을 입력하세요");
					authors.focus();
					return;
				}
				if(publishers.value.trim() =="") {
					alert("값을 입력하세요");
					publishers.focus();
					return;
				}
				if(prices.value.trim() =="") {
					alert("값을 입력하세요");
					prices.focus();
					return;
				}
				if(contexts.value.trim() =="") {
					alert("값을 입력하세요");
					contexts.focus();
					return;
				}
			
				frm.submit();
				alert("등록완료");
			})
		}	
	</script>
</head>
<body>
	<%@ include file="header.jsp" %>
	<hr>
	
	<h1>도서정보 등록 폼</h1>
	<form name="frm" action="registServlet" method="GET">
		도서제목: <input type="text" name="title" ><br>
		저자: <input type="text" name="author"><br>
		출판사: <input type="text" name="publisher"><br>
		가격: <input type="text" name="price"><br>
		<div class= "div1">
			<span>도서정보:</span><textarea class="textarea" name="context"></textarea>
		</div>		
		<input id="smtBtn" type="submit" value="전송">
	</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link href="css/cssfile.css" rel="stylesheet">
	<script>
		window.onload = function() {
			const trs =document.querySelectorAll(".trs");
			
			for(let i=0; i<trs.length; i++) {
				trs[i].addEventListener("click", fuck);
			}
			
			function fuck() {
				if(event.target.className == "titles") {
					const bcodeElement = event.target.parentElement.querySelector("td:first-child");
					
					location.href="bookInfoServlet?bcode=" + bcodeElement.innerHTML;
				}else {
					return;
				}
			}
			
		}
	</script>
</head>
<body>
	<%@ include file="header.jsp"%>
	<hr>
	<h1>도서목록(총:${list.size()}권)</h1>
	<table border ="1">
		<tr>
			<th>도서번호</th>
			<th>도서 제목</th>
			<th>저자</th>
			<th>출판사</th>
			<th>가격</th>
		</tr>
		<c:forEach var="todo" items="${list}">
			<tr class ="trs">
				<td>${todo.bcode }</td>
				<td class="titles">${todo.title }</td>
				<td>${todo.author }</td>
				<td>${todo.publisher }</td>
				<td><fmt:formatNumber value="${todo.price }"/></td>
			</tr>
		</c:forEach>
	</table>
		<p>상세보기를 원하면 도서 제목을 클릭하세요</p>
		<a href ="main.jsp">메인 메뉴 페이지로 이동하기</a>
	
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>    

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="css/cssfile.css">
	<script>
		window.onload = function() {
			const smBtn = document.querySelector("#smitBtn");
			const booknum = document.querySelector("input[name=booknum]");
			const bookname = document.querySelector("input[name=bookname]");
			const bookauthor = document.querySelector("input[name=bookauthor]");
			const bookpublish = document.querySelector("input[name=bookpublish]");
			const bookprice = document.querySelector("input[name=bookprice]");
			const context = document.querySelector("textarea[name=context]");
			
			smBtn.addEventListener("click", function e() {
				const xhttp = new XMLHttpRequest();
				
				xhttp.onreadystatechange = function() {
					if(xhttp.readyState === 4 &&xhttp.status ===200) {
						const notice = this.responseText;
						alert(notice);
						
						if(notice =="수정 완료되었습니다") {
							location.href ="selectServlet";
							
						}
							
					}
				}
				let data = "?booknum="+booknum.value + "&bookname=" +bookname.value +"&bookauthor="+bookauthor.value;
				data+= "&bookpublish=" +bookpublish.value +"&bookprice=" +bookprice.value +"&context=" +encodeURIComponent(context.value) +"&firstBookNum=" +${book.bcode};
				
				xhttp.open("GET", "updateServlet"+data, true);
				xhttp.send();
				
			})
			
			const deleteBtn = document.querySelector("#delBtn");
			deleteBtn.addEventListener("click", del);
			
			function del() {
				const xhttp = new XMLHttpRequest();
				
				xhttp.onreadystatechange = function() {
					if(xhttp.readyState === 4 &&xhttp.status ===200) {
						const notice = this.responseText;
						alert(notice);
						
						if(notice =="삭제성공") {
							location.href ="selectServlet";
						}
							
					}
				}
				let url ="deleteServlet?booknum="+booknum.value +"&firstBookNum=" +${book.bcode }; 
				
				xhttp.open("GET", url, true);
				xhttp.send();
				
				
				
			}
		}
	</script>
</head>
<body>
	<%@ include file="header.jsp" %>
	<hr>
	<h1>도서정보</h1>
	<%--<form action="updateServlet" method="GET"> --%>
	
		<%-- 같은 값 출력연습
		<c:set var="nums">${book.bcode }</c:set>
		${nums }
		<c:out value="${nums }"></c:out>
		<c:out value="${book.bcode }"></c:out>
		 --%>
		 
		<c:set var="nums">${book.bcode }</c:set>
		도서번호: <input type="text" name="booknum" value="${nums }"><br>
		도서명: <input type="text" name ="bookname" value="<c:out value="${book.title }"/>"><br>
		저자: <input type="text" name="bookauthor" value="${book.author }"><br>
		출판사: <input type="text" name="bookpublish" value="${book.publisher }"><br>
		가격: <input type="text" name="bookprice" value="${book.price }"><br>
		<div class="div1">
			<span>도서정보:</span><textarea class="textarea" name="context">${book.binfo }</textarea>		
		</div>
		<hr>
		<input id="smitBtn" type="submit" value="수정">
		<input id="delBtn" type="submit" value="삭제">
		
	<%--</form> --%>
	
	
	
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<header>
	<h1><a href ="main.jsp">도서관리 프로그램</a></h1>
	<nav>
		<ul>
			<li><a href="selectServlet">도서목록조회</a></li>
			<li><a href="regist.jsp">도서등록</a></li>
			<li><a href="main.jsp">홈으로</a></li>
		</ul>
	</nav>
</header>
package servlet;

import java.io.IOException;

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 dao.BookDAO;
import vo.BookVo;

@WebServlet("/bookInfoServlet")
public class bookInfoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String bcode= request.getParameter("bcode");
		
		BookDAO bd = new BookDAO();
		BookVo b = bd.selectOne(bcode);
		
		request.setAttribute("book", b);
		request.getRequestDispatcher("bookInformation.jsp").forward(request, response);
	}

}
package servlet;

import java.io.IOException;
import java.io.PrintWriter;

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 dao.BookDAO;

@WebServlet("/deleteServlet")
public class deleteServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String bookNum = request.getParameter("booknum");
		String firstNum = request.getParameter("firstBookNum");
		
		
		response.setContentType("text/html;charset=utf-8");
		PrintWriter pw = response.getWriter();
		
		if(Integer.parseInt(bookNum) != Integer.parseInt(firstNum)) {
			pw.print("삭제하시려는 도서번호를 제대로 입력해주세요");
			return;
		}
			
		BookDAO bd = new BookDAO();
		bd.delete(bookNum);
		
		pw.print("삭제성공");
	}

}
package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

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;

import dao.UserDAO;
import vo.DBcon;

@WebServlet("/loginServlet")
public class loginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");

		UserDAO ud = new UserDAO();
		int cnt = ud.loginCheck(id, pw);

		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();

		if (cnt == 0) {
			out.print("로그인실패");
		} else if (cnt == 1) {
			out.print("로그인성공");
			HttpSession session = request.getSession();
			session.setAttribute("id", id);
		}

	}

}
package servlet;

import java.io.IOException;

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 dao.BookDAO;
import vo.BookVo;

@WebServlet("/registServlet")
public class registServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		int num = 0;
		String title= request.getParameter("title");
		String author= request.getParameter("author");
		String publisher= request.getParameter("publisher");
		String stprice= request.getParameter("price");
		int price = Integer.parseInt(stprice);
		String context= request.getParameter("context");
		System.out.println(context);
		int firstBookNum = 0;
		System.out.println("gg");
		BookVo bv = new BookVo(num,title,author,publisher,price,context,firstBookNum);

		BookDAO bd = new BookDAO();
		bd.insert(bv);
		
		response.sendRedirect("regist.jsp");
		
		
	}

}
package servlet;

import java.io.IOException;

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 dao.BookDAO;
import vo.BookVo;

@WebServlet("/registServlet")
public class registServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		int num = 0;
		String title= request.getParameter("title");
		String author= request.getParameter("author");
		String publisher= request.getParameter("publisher");
		String stprice= request.getParameter("price");
		int price = Integer.parseInt(stprice);
		String context= request.getParameter("context");
		System.out.println(context);
		int firstBookNum = 0;
		System.out.println("gg");
		BookVo bv = new BookVo(num,title,author,publisher,price,context,firstBookNum);

		BookDAO bd = new BookDAO();
		bd.insert(bv);
		
		response.sendRedirect("regist.jsp");
		
		
	}

}
package servlet;

import java.io.IOException;
import java.io.PrintWriter;

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 dao.BookDAO;
import vo.BookVo;

@WebServlet("/updateServlet")
public class updateServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String booknum = request.getParameter("booknum");
		int intbooknum = Integer.parseInt(booknum);
		
		String clickBookNum = request.getParameter("firstBookNum");
		int firstBookNum = Integer.parseInt(clickBookNum);
		
		BookDAO bd = new BookDAO();
		response.setContentType("text/html;charset=utf-8");
		PrintWriter pw = response.getWriter();
		
		//readonly안했을 경우 도서번호 수정시
		//DB에 있는 도서번호와 겹칠 경우 도서번호 수정못하도록
		if(intbooknum !=firstBookNum) {
			int overlap = bd.selectOne(intbooknum);
			
			if(overlap==1) {
				pw.print("수정실패했습니다.. 해당 도서번호는 이미 있습니다");
				return;
			}
		}
		
		String title = request.getParameter("bookname");
		String author = request.getParameter("bookauthor");
		String publisher = request.getParameter("bookpublish");
		String bookprice = request.getParameter("bookprice");
		
		int price = Integer.parseInt(bookprice);
		String binfo = request.getParameter("context");
		
		BookVo bv = new BookVo(intbooknum,title,author,publisher,price,binfo,firstBookNum);
		bd.update(bv);
		
		pw.print("수정 완료되었습니다");
	}

}