!! JSP -textarea replace쓰고 안쓰고 차이 글을 참고하자(값 출력 후 저장시 textarea 띄워쓰기 관련한 글임)
원래는 도서제목 누르면 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("수정 완료되었습니다");
}
}
'JSP > 연습' 카테고리의 다른 글
연습해보기..connection.. (0) | 2023.06.27 |
---|---|
ajax + json + keyup이벤트 실시간조회 (0) | 2023.06.25 |
정처기산업2번째문제 (0) | 2023.06.25 |
그럼 JSON으로 클라-> 서블렛 // 서블렛 -->클라로 해보자 (0) | 2023.06.21 |
ajax로 crud해보기//JSON 1일차.. (0) | 2023.06.20 |