전체적인 흐름을 보면 이렇다. (CRUD 작업)
- sql파일을 만들어 테이블과 시퀀스 생성
num값을 시퀀스를 사용하는데 겹치지않은 유니크한 값을 만들어내려고 시퀀스를 이용하는 것이다.
- include하는 .jspf Code
- link하는 .css Code
@charset "UTF-8";
body{
padding:0; /* 0일 경우 px명시 안함 */
margin:0;
}
.page-main{
width:800px;
margin:0 auto;/*중앙 정렬*/
}
.result-display{ /* 안내문구 에러문구 보여줄 때 사용할 것 */
width:400px;
height:200px;
position:absolute; /* 중앙 */
top:50%;
left:50%;
transform:translate(-50%,-50%); /* 고정해 주기 위해 */
border:1px solid #000;
/*하위 요소를 수직으로 쌓을 수 있는 공간을 만듦*/
display:flex;
/* 세로로 정렬 */
align-items:center;/* 중앙절렬 */
/* 가로로정렬 */
justify-content:center;
}
.align-center{
text-align:center;
}
.align-right{
text-align:right;
}
/* 등록, 수정폼 */
form{
width:500px;
margin:0 auto;
border:1px solid #000;
padding:10px 10px 10px 30px;
}
ul{
list-style:none;
}
label{
width:100px;
float:left;
}
/* 목록 */
table{
width: 100%;
border:1px solid #000;
border-collapse:collapse;/* 한줄로 만들기 */
margin-top:5px;
}
table td, table th{
border:1px solid #000;
padding:5px;
}
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@ include file="dbinfo.jspf" %> JDBC수행 1단계 : 드라이버 로드 시 사용한다.
<%@ page import="java.sql.DriverManager" %> JDBC수행 2단계 : connection객체 생성 시 사용한다.
<%@ page import= "java.sql.Date" %> db에 있는 객체를 연월일 형태로(Date)표기 시 사용한다.
그냥 날짜를 쓸 때는 java.util.date쓰고, 데이터베이스에 있는 것을 날짜처리할 때는 java.sql.date로 처리한다.
<%@ page import="java.sql.SQLException" %> finally 자원정리 시 사용한다.
▼ insertTestForm.jsp / insertTest.jsp
생성한 파일이 많아서 어디서 출발하느냐가 중요하다.
ex.next() : ex행에 진입할 수 있으면 true반환.
<input type="number"> 속성은 애초에 공백을 걸러주기에
if(price.value.trim()==''){
price.value=''
생략한다.
▼ selectTest.jsp
<td><a href="detailTest.jsp?num=<%= num %>"> <%= name %> </a></td>
이름에 선택한 상품번호(num)에 맞는 링크를 건다.
▼ detailTest.jsp
UI처리 전 필요한 데이터 뽑을 때 목록처리는 반복이라서 while문을 사용했지만,
detail은 한건의 행만 처리하므로 if문을 사용한다.
그 if문에서 else는 행이 미존재한다는 것이고, 에러는 안난다. (에러나면 catch로 빠짐)
수정, 삭제 버튼 작업 시 num(PrimaryKey)를 넘겨서 작업한다.
▼ updateTestForm.jsp / updateTest.jsp
글번호(num)가 전달 안돼면 NumberFormatException 발생한다.
(대문페이지>링크>상세페이지> 순으로 글번호 전달)
<input type="button" value="수정" onclick="location.href='updateTestForm.jsp?num=<%= num %>'"
주소이기 떄문에 공백없이 적어야한다.
프라이머리키이기 때문에 유니크하고 업데이트 불가하다.
한건의 레코드가 존재하기 때문에 주소에 num=값 이 존재한다.
<form id="myForm" action="updateTest.jsp" method="post">
<input type="hidden" name="num" value="<%= num %>">
보여지지 않게하는 이유는 수정하지 못하게 하기위해서 숨기는 것이다. (전송은 되지만 보여지지 않게 하기위함)
글번호를 안보내면 업데이트 불가하다.
<label for="name">상품명</label>
<input type="text" name="name" id="name" size="20" maxlength="10" value="<%=name%>">
<label for="price">가격</label>
<input type="number" name="price" id="price" min="1" maxlength="99999999" value="<%=price%>">
각 value값 들도 넣어준다.
▼ deleteTestForm.jsp / deleteTest.jsp
한건의 레코드를 수정, 삭제 작업하니까 get방식으로 전송
삭제에서는 get방식으로(detailTest에서) 받고 post방법으로 전달한다.
한건의 레코드가 존재하기 때문에 주소에 num=값 이 존재한다.
회원가입시 최소한의 보안사항만 입력하게 한다.
너무 많은 조건걸면 사용자가 회원가입시 불편하다.
'WEB > ✿JSP' 카테고리의 다른 글
[JSP] 🔗/AJAX(2) DB연동 (0) | 2022.01.13 |
---|---|
[JSP] 🔗AJAX(1) (0) | 2022.01.13 |
[JSP] 🔗/db 연동 (0) | 2022.01.11 |
[JSP] 🔗기본 객체 (0) | 2022.01.06 |
[JSP] 🔗주소매핑 (0) | 2022.01.05 |
댓글