728x90
수업내용
1교시 (09:30-10:20)
- 어제 배운 것 정리
- regex_2.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<script type="text/javascript" src="http://dmaps.daum.net/map_js_init/postcode.v2.js"></script>
<style type="text/css">
.mem{ text-align: center;}
</style>
<script type="text/javascript">
alert(">>>");
function conformFun(){
alert(" conformFun 함수 진입");
// 이름
if (document.member.mname.value=='') {
alert("이름을 입력하세요");
document.getElementById("mname").focus();
return false;
} else {
var exp=/^[a-zA-z]+$/;
if (!exp.test(document.member.mname.value)) {
alert("이름 오류- 영문자로 입력");
document.getElementById("mname").focus();
return false;
}
document.getElementById("maddrno").focus();
} //end of if(mname)
//주소
if (document.member.maddrno.value.length==0) {
alert("주소를 입력하세요");
document.getElementById("maddrno").focus();
return false;
} else {
document.getElementById("mbirth").focus();
} //end of addr
// 생년월일
if (document.member.mbirth.value.length == 0) {
alert("생년월일을 입력하세요");
document.getElementById("mbirth").focus();
return false;
} else {
var exp = /^(19[0-9][0-9]|20\d{2})-(0[0-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/;
if (!exp.test(document.member.mbirth.value)) {
alert("생일 오류 - 0000-00-00 형식");
document.getElementById("mbirth").focus();
return false;
}
document.getElementById("mid").focus();
}//end of birth.
//아이디
if (document.member.mid.value.length == 0) {
alert("아이디를 입력하세요");
document.getElementById("mid").focus();
return false;
} else {
var length= document.member.mid.value.length;
if (length <6 || length >8) {
alert("아이디 오류 --6자 이상 8자 이하");
document.getElementById("mid").focus();
return false;
}//end of if
document.getElementById("mpw").focus();
}//end of mid
// 비밀번호
if (document.member.mpw.value.length == 0) {
alert("비밀번호를 입력하세요");
document.getElementById("mpw").focus();
return false;
} else {
var length= document.member.mpw.value.length;
if (length <6 || length >12) {
alert("비밀번호 오류- 6자 이상 12자 이하");
document.getElementById("mpw").focus();
return false;
}
document.getElementById("mgender").focus();
}//end of mpw
// 성별
if (document.member.mgender.value !="sel") {
//alert(document.member.mgender.value);
} else {
if (true) {
alert("성별을 입력하세요");
document.getElementById("mgender").focus();
return false;
}
document.getElementById("memail0").focus();
}//end of mgender
// 이메일
if (document.member.memail0.value.length == 0) {
alert("이메일 입력하세요");
document.getElementById("memail0").focus();
return false;
} else {
alert("else");
var email0=document.member.memail0.value;
var email1=document.member.memail1.value;
var tot=email0+"@"+email1;
var exp = /^[a-zA-Z0-9_-]+\@[a-zA-Z]+\.[a-zA-Z]+$/;
if (!exp.test(tot)) {
alert("이메일 오류");
document.getElementById("memail0").focus();
return false;
}
document.getElementById("mphone").focus();
}//end of memail
//휴대폰
if (document.member.mphone.value.length == 0) {
alert("핸드폰 번호를 입력하세요");
document.getElementById("mphone").focus();
return false;
} else {
var exp = /^\d{3}\-\d{4}\-\d{4}$/;
if (!exp.test(document.member.mphone.value)) {
alert("핸드폰 번호 오류 - 000-0000-0000 형식");
document.getElementById("mphone").focus();
return false;
}
} //end of phone
//http://localhost:8088/testServlet/PhmMemberController
//window.document.member.action = "/testServlet/PhmMember";
//window.document.member.submit();
}
function addrCheck(){
alert(" addrCheck 함수 진입");
var width = 500;
var height = 600;
daum.postcode.load(function(){
new daum.Postcode({
oncomplete: function(data){
alert(">>>>");
console.log("우편번호 >>> : " + data.zonecode);
console.log("주소값 >>> : " + data.roadAddress);
console.log("빌딩값 >>> : " + data.buildingName);
//$('#maddr1').val(data.address);
//$('#maddr2').val(data.buildingName);
document.getElementById('maddrno').value=data.zonecode;
document.getElementById('maddr1').value=data.roadAddress;
document.getElementById('maddr2').value=data.buildingName;
}
}).open({
left: (window.screen.width / 2) - (width / 2),
top: (window.screen.height / 2) - (height / 2),
});
});
}//end of addrCheck
function emailCheck(){
alert("emailCheck 함수 진입");
var eVal = document.member.memail.options[document.member.memail.selectedIndex].value;
alert("eVal >>> : " + eVal);
if (eVal == '0') {
document.member.memail1.readOnly = true;
document.member.memail1.value = " ";
}
if (eVal == '9') {
document.member.memail1.readOnly = false;
document.member.memail1.value = " ";
document.member.memail1.focus();
} else {
document.member.memail1.readOnly = true;
document.member.memail1.value = eVal;
}
}//end of emailCheck
</script>
</head>
<body>
<div class="container">
<h1> 회원가입</h1>
<form name="member" method="POST" >
<table class="table table-bordered">
<tr>
<td class="mem"> 회원번호 : </td>
<td>
<input type="text" id="mno" name="mno" disabled/><br/>
</td>
</tr>
<tr>
<td class="mem"> 이름 : </td>
<td>
<input type="text" id="mname" name="mname" /><br/>
</td>
</tr>
<tr>
<td class="mem"> 주소 : </td>
<td>
<input type="text" id="maddrno" name="maddrno" size=6/>
<input type="button" value="우편번호"onclick="addrCheck()"/>(도로명주소)<br/>
<input type="text" id="maddr1" name="maddr1" size=35 readonly/><br>
<input type="text" id="maddr2" name="maddr2" size=35 /><br/>
</td>
</tr>
<tr>
<td class="mem"> 생일 : </td>
<td>
<input type="text" id="mbirth" name="mbirth" /><br/>
</td>
</tr>
<tr>
<td class="mem"> 아이디(6 ~ 8 문자) : </td>
<td>
<input type="text" id="mid" name="mid" />
<input type="button" value="아이디중복확인" onclick="idCheck()" /><br/>
</td>
</tr>
<tr>
<td class="mem"> 비밀번호 : </td>
<td>
<input type="text" id="mpw" name="mpw" /><br/>
<input type="text" id="mpw_r" name="mpw_r" />
<input type="button" value="비밀번호확인" onclick="pwCheck()"/><br/>
</td>
</tr>
<tr>
<td class="mem"> 성별 : </td>
<td>
<select id="mgender" name="mgender" >
<option value="sel">
--- 성별 ---
</option>
<option value="male">
남성
</option>
<option value="female">
여성
</option>
</select>
</td>
</tr>
<tr>
<td class="mem"> 이메일 : </td>
<td>
<input type="text" id="memail0" name="memail0" value=""size=10 onfocus="this.value=''"/> @
<input type="text" id="memail1" name="memail1" value="" size=10 readonly />
<select name="memail" onchange="emailCheck()">
<option value="0">선택하세요</option>
<option value="9">직접입력</option>
<option>naver.com</option>
<option>gmail.com</option>
</select>
</td>
</tr>
<tr>
<td class="mem"> 휴대폰 : </td>
<td>
<input type="text" id="mphone" name="mphone" style="width:50px;" />-
<input type="text" id="mphone1" name="mphone1" style="width:50px;" />-
<input type="text" id="mphone2" name="mphone2" style="width:50px;" /><br/>
</td>
</tr>
<tr>
<td colspan=2 align="center">
<input type="hidden" name="ISUD_TYPE" id="ISUD_TYPE" value="I">
<input type="button" value="확인" onclick="conformFun()">
<input type="reset" value="다시">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
- regex_3.html ←jQuery 버전 제출하기
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<script type="text/javascript" src="http://dmaps.daum.net/map_js_init/postcode.v2.js"></script>
<style type="text/css">
.mem{ text-align: center;}
</style>
<script type="text/javascript">
$(document).ready(function(){
// alert(">>>");
// 이름
$(document).on('click', '#nameChk', function(){
if ($("#mname").val().length == 0) {
alert("이름을 입력하세요.")
$("#mname").focus();
return false;
} else {
let exp = /^[a-zA-z]+$/;
if (!exp.test($('#mname').val())) {
alert("이름 오류 - 영문자로 입력");
$("#mname").focus();
return false
}
} // end of if ($("#mname").val()="")
}); // end of 이름
// 주소
$(document).on('click', '#addrChk', function(){
if ($("#maddrno").val().length == 0) {
alert("주소를 입력하세요.")
$("#maddrno").focus();
return false;
} else {
$("#mbirth").focus();
} // end of if ($("#maddrno").val().length == 0)
}); // end of 주소
// 우편번호
$(document).on('click','#addrCheck', function(){
var width = 500;
var height = 600;
daum.postcode.load(function(){
new daum.Postcode({
oncomplete: function(data){
alert(">>>>");
console.log("우편번호 >>> : " + data.zonecode);
console.log("주소값 >>> : " + data.roadAddress);
console.log("빌딩값 >>> : " + data.buildingName);
$('#maddrno'),val(data.zonecode);
$('#maddr1').val(data.address);
$('#maddr2').val(data.buildingName);
}
}).open({
left: (window.screen.width / 2) - (width / 2),
top: (window.screen.height / 2) - (height / 2),
});
});
}); //end of 우편번호
// 생년월일
$(document).on('click', '#birthChk', function(){
if ($("#mbirth").val().length == 0) {
alert("생년월일을 입력하세요.")
$("#mbirth").focus();
return false;
} else {
let exp = /^(19[0-9][0-9]|20\d{2})-(0[0-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/;
if (!exp.test($('#mbirth').val())) {
alert("생일 오류 - 000-00-00 형식");
$("#mbirth").focus();
return false
} else {
$('#mid').focus();
}
} // end of if ($("#mbirth").val().length == 0)
}); // end of 생년월일
// 아이디
$(document).on('click', '#idChk', function(){
if ($("#mid").val().length == 0) {
alert("아이디를 입력하세요.");
$("#mid").focus();
return false;
} else {
if ($("#mid").val().length < 6 || $("#mid").val().length > 12 ) {
alert("비밀번호 오류 - 6자 이상 12자 이하");
$("#mid").focus();
return false;
} else {
$("#mpw").focus();
}
} // end of ($("#mid").val().length == 0)
}); // end of 아이디
// 비밀번호
$(document).on('click', '#pwChk', function(){
if ($("#mpw").val().length == 0) {
alert("비밀번호를 입력하세요.");
$("#mpw").focus();
return false;
} else {
if ($("#mpw").val().length < 6 || $("#mpw").val().length > 12 ) {
alert("비밀번호 오류 - 6자 이상 12자 이하");
$("#mpw").focus();
return false;
} else {
$("#mgender").focus();
}
} // end of ($("#mpw").val().length == 0)
}); // end of 비밀번호
// 성별
$(document).on('click', '#genderChk', function(){
let gen = $("select[name=mgender] option:selected").val();
if (gen == "sel") {
$("#mgender").val('sel').prop("selected", true);
alert("성별을 선택하세요");
$("#mgender").focus();
return false;
}
if(gen == "male"){
$("#mgender").val('male').prop("selected", true);
$("#memail0").focus();
}
if(gen=="female"){
$("#mgender").val('female').prop("selected", true);
$("#memail0").focus();
}
}); // end of 성별
// 이메일
$(document).on('click', '#emailChk', function(){
// alert(">>> ");
var eVal =$("select[name=memail] option:selected").val();
alert("eVal >>> : " + eVal);
if (eVal == '선택하세요'){
$("input[name='memail1']").attr("readonly", true);
$("#memail1").val(eVal);
} else if (eVal == '직접입력') {
$("input[name='memail1']").attr("readonly", false);
$("#memail1").val("");
$("#memail1").focus();
} else {
$("input[name='memail1']").attr("readonly", true);
$("#memail1").val(eVal);
}
if ($("#memail0").val().length == 0) {
alert("이메일을 입력하세요");
$("#memail0").focus();
return false;
} else {
let email0 = $("#memail0").val();
let email1 = $("#memail1").val();
let tot = email0 + "@" + email1;
let exp = /^[a-zA-Z0-9_-]+\@[a-zA-z]+\.[a-zA-z]+$/;
if(!exp.test(tot)){
alert("이메일 오류");
$("#memail0").focus();
return false;
} else {
$("#mphone").focus();
}
} // end of ($("#memail0").val().length == 0)
}); // end of 이메일
// 휴대폰
$(document).on('click', '#hpChk', function(){
if ($("#mphone").val().length == 0) {
alert("휴대폰 번호을 입력하세요.")
$("#mphone").focus();
return false;
} else {
let exp = /^\d{3}\-\d{4}\-\d{4}$/;
let expTest = exp.test($("#mphone").val() +"-" + $("#mphone1").val() + "-" + $("#mphone2").val());
if (!expTest) {
alert("휴대폰 번호 오류 - 000-0000-0000 형식");
$("#mphone").focus();
return false
}
} // end of if ($("#mbirth").val().length == 0)
}); // end of 휴대폰
}); // end of $(document).ready()
</script>
</head>
<body>
<div class="container">
<h1> 회원가입</h1>
<form name="member" method="POST" >
<table class="table table-bordered">
<tr>
<td class="mem"> 회원번호 : </td>
<td>
<input type="text" id="mno" name="mno" disabled/><br/>
</td>
</tr>
<tr>
<td class="mem"> 이름 : </td>
<td>
<input type="text" id="mname" name="mname" /><br/>
<input type="button" id="nameChk" value="이름 확인" /><br>
</td>
</tr>
<tr>
<td class="mem"> 주소 : </td>
<td>
<input type="text" id="maddrno" name="maddrno" size=6/>
<input type="button" value="우편번호" id="addrCheck"/>(도로명주소)<br/>
<input type="text" id="maddr1" name="maddr1" size=35 readonly/><br>
<input type="text" id="maddr2" name="maddr2" size=35 /><br/>
<input type="button" value="주소 확인" id="addrChk"/>
</td>
</tr>
<tr>
<td class="mem"> 생일 : </td>
<td>
<input type="text" id="mbirth" name="mbirth" /><br/>
<input type="button" value="생일 확인" id="birthChk"/>
</td>
</tr>
<tr>
<td class="mem"> 아이디(6 ~ 8 문자) : </td>
<td>
<input type="text" id="mid" name="mid" />
<input type="button" value="아이디 확인" id="idChk">
</td>
</tr>
<tr>
<td class="mem"> 비밀번호 : </td>
<td>
<input type="text" id="mpw" name="mpw" /><br/>
<input type="text" id="mpw_r" name="mpw_r" />
<input type="button" value="비밀번호 확인" id="pwChk"/><br/>
</td>
</tr>
<tr>
<td class="mem"> 성별 : </td>
<td>
<select id="mgender" name="mgender" >
<option value="sel">
--- 성별 ---
</option>
<option value="male">
남성
</option>
<option value="female">
여성
</option>
</select>
<input type="button" id="genderChk" value="성별 입력 확인"/>
</td>
</tr>
<tr>
<td class="mem"> 이메일 : </td>
<td>
<input type="text" id="memail0" name="memail0" value=""size=10 onfocus="this.value=''"/> @
<input type="text" id="memail1" name="memail1" value="" size=10 readonly />
<select name="memail">
<option value="choose">선택하세요</option>
<option value="write">직접입력</option>
<option>naver.com</option>
<option>gmail.com</option>
</select>
<input type="button" id="emailChk" value="이메일 확인"/>
</td>
</tr>
<tr>
<td class="mem"> 휴대폰 : </td>
<td>
<input type="text" id="mphone" name="mphone" style="width:50px;" />-
<input type="text" id="mphone1" name="mphone1" style="width:50px;" />-
<input type="text" id="mphone2" name="mphone2" style="width:50px;" /><br/>
<input type="button" id="hpChk" value="휴대폰 확인"/>
</td>
</tr>
<tr>
<td colspan=2 align="center">
<input type="hidden" name="ISUD_TYPE" id="ISUD_TYPE" value="I">
<input type="button" value="확인" onclick="conformFun()">
<input type="reset" value="다시">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
2교시 (10:30-11:20)
- 삭제하기 기능 추가
- 쿼리
UPDATE MVC_BOARD
SET DELETEYN = 'N'
,UPDATEDATE = SYSDATE
WHERE DELETEYN = 'Y'
AND BNUM = '1';
3교시 (11:30-12:20)
- BoardController.java
package a.b.c.com.kosmo.board.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
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 org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import a.b.c.com.common.ChabunUtil;
import a.b.c.com.common.EncryptSHA;
import a.b.c.com.kosmo.board.dao.BoardDAO;
import a.b.c.com.kosmo.board.dao.BoardDAOImpl;
import a.b.c.com.kosmo.board.service.BoardService;
import a.b.c.com.kosmo.board.service.BoardServiceImpl;
import a.b.c.com.kosmo.board.vo.BoardVO;
// http://localhost:8088/kosServlet/board
// /kosServlet/board
@WebServlet("/board")
public class BoardController extends HttpServlet {
private static final long serialVersionUID = 1L;
Logger logger = LogManager.getLogger(BoardController.class);
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
logger.info("BoardController :: doGet() 함수 진입 >>> : ");
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
String isudType = request.getParameter("isudType");
logger.info("BoardController :: doGet() 함수 진입 isudType >>> : " + isudType);
if (isudType !=null && isudType.length() > 0) {
isudType = isudType.toUpperCase();
if ("I".equals(isudType)) {
String bnum = ChabunUtil.getBoardChabun("");
String bsubject = request.getParameter("bsubject");
String bwriter = request.getParameter("bwriter");
String bpw = request.getParameter("bpw");
String bmemo = request.getParameter("bmemo");
BoardVO bvo = null;
bvo = new BoardVO();
bvo.setBnum(bnum);
bvo.setBsubject(bsubject);
bvo.setBwriter(bwriter);
// 패스워드 암호화 하기
bpw = EncryptSHA.encryptSHA256(bpw);
bvo.setBpw(bpw);
bvo.setBmemo(bmemo);
logger.info("bvo.getBnum() >>> : " + bvo.getBnum());
logger.info("bvo.getBsubject() >>> : " + bvo.getBsubject());
logger.info("bvo.getBwriter() >>> : " + bvo.getBwriter());
logger.info("bvo.getBpw() >>> : " + bvo.getBpw());
logger.info("bvo.getBmemo() >>> : " + bvo.getBmemo());
BoardService bs = new BoardServiceImpl();
boolean bool = bs.boardInsert(bvo);
if (bool) {
logger.info("입력 성공 >>> :" + bool);
// setAttribute(java.lang.String, java.lang.Object)
request.setAttribute("bool", new Boolean(bool));
RequestDispatcher rd = request.getRequestDispatcher("/kosmo/board/boardInsert.jsp");
rd.forward(request, response);
}else {
logger.info("입력 실패 >>> :" + bool);
out.println("<script>");
out.println("location.href='/kosmo/board/board.html'");
out.println("</script>");
}
}
if ("SALL".equals(isudType)) {
logger.info("BoardController :: doGet() 함수 진입 SALL isudType >>> : " + isudType);
// 서비스 호출
BoardService bs = new BoardServiceImpl();
ArrayList<BoardVO> aList = bs.boardSelectAll();
if (aList !=null && aList.size() > 0) {
logger.info("전체조회 성공 >>> : " + aList.size());
request.setAttribute("aList_selectALL", aList);
RequestDispatcher rd = request.getRequestDispatcher("/kosmo/board/boardSelectAll.jsp");
rd.forward(request, response);
}else {
logger.info("전체조회 실패 >>> : ");
out.println("<script>");
out.println("location.href='/kosmo/board/board.html'");
out.println("</script>");
}
}
if ("U".equals(isudType)) {
logger.info("BoardController :: doGet() 함수 진입 U isudType >>> : " + isudType);
String bnum = request.getParameter("bnumChk");
BoardVO bvo = null;
bvo = new BoardVO();
bvo.setBnum(bnum);
// 서비스 호출
BoardService bs = new BoardServiceImpl();
ArrayList<BoardVO> aList = bs.boardSelect(bvo);
if (aList !=null && aList.size() > 0) {
logger.info("조회 성공 >>> : " + aList.size());
request.setAttribute("aList_select", aList);
RequestDispatcher rd = request.getRequestDispatcher("/kosmo/board/boardSelect.jsp");
rd.forward(request, response);
}else {
logger.info("조회 실패 >>> : ");
out.println("<script>");
out.println("location.href='/kosServlet/board?isudType=SALL'");
out.println("</script>");
}
}
// 수정하기
if ("UOK".equals(isudType)) {
logger.info("BoardController :: doGet() 함수 진입 UOK isudType >>> : " + isudType);
String bnum = request.getParameter("bnum");
String bsubject = request.getParameter("bsubject");
String bmemo = request.getParameter("bmemo");
BoardVO bvo = null;
bvo = new BoardVO();
bvo.setBnum(bnum);
bvo.setBsubject(bsubject);
bvo.setBmemo(bmemo);
logger.info("bvo.getBnum() >>> : " + bvo.getBnum());
logger.info("bvo.getBsubject() >>> : " + bvo.getBsubject());
// 서비스 호출
BoardService bs = new BoardServiceImpl();
boolean bool = bs.boardUpdate(bvo);
// 결과 포워드 하기 /kosmo/board/boardUpdate.jsp
if (bool) {
logger.info("수정 성공 >>> :" + bool);
request.setAttribute("bool", new Boolean(bool));
RequestDispatcher rd = request.getRequestDispatcher("/kosmo/board/boardUpdate.jsp");
rd.forward(request, response);
} else {
logger.info("수정 실패 >>> :" + bool);
out.println("<script>");
out.println("alert('글 수정 실패')");
out.println("location.href='/kosServlet/board?isudType=SALL'");
out.println("</script>");
}
}
// 삭제하기
if ("D".equals(isudType)) {
logger.info("BoardController :: doGet() 함수 진입 D isudType >>> : " + isudType);
// http://localhost:8088/kosServlet/board?bnumchk=1&isudType=D
String bnum = request.getParameter("bnumChk");
BoardVO bvo = null;
bvo = new BoardVO();
bvo.setBnum(bnum);
logger.info("bvo.getBnum() >>> : " + bvo.getBnum());
// 서비스 호출
BoardService bs = new BoardServiceImpl();
boolean bool = bs.boardDelete(bvo);
// 결과 포워드 하기 /kosmo/board/boardDelete.jsp
if (bool) {
logger.info("삭제 성공 >>> : " + bool);
request.setAttribute("bool", new Boolean(bool));
RequestDispatcher rd = request.getRequestDispatcher("/kosmo/board/boardDelete.jsp");
rd.forward(request, response);
} else {
logger.info("삭제 실패 >>> : " + bool);
out.println("<script>");
out.println("alert('글 삭제 실패')");
out.println("location.href='/kosServlet/board?isudType=SALL'");
out.println("</script>");
}
}
} else {
logger.info("isudType 구분자가 없어서 무슨일을 할 지 모르겠어요 >>> : ");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
- BoardSqlMap.java
package a.b.c.com.kosmo.board.sql;
public abstract class BoardSqlMap {
// 전체 조회
public static String getBoardSelectAll() {
StringBuffer sb = new StringBuffer();
sb.append(" SELECT \n");
sb.append(" A.BNUM BNUM \n");
sb.append(" ,A.BSUBJECT BSUBJECT \n");
sb.append(" ,A.BWRITER BWRITER \n");
sb.append(" ,A.BPW BPW \n");
sb.append(" ,A.BMEMO BEMMO \n");
sb.append(" ,A.DELETEYN DELETEYN \n");
sb.append(" ,TO_CHAR(A.INSERTDATE, 'YYYY-MM-DD') INSERTDATE \n");
sb.append(" ,TO_CHAR(A.UPDATEDATE, 'YYYY-MM-DD') UPDATEDATE \n");
sb.append(" FROM MVC_BOARD A \n");
sb.append(" WHERE A.DELETEYN = 'Y' \n");
sb.append(" ORDER BY 1 DESC \n");
return sb.toString();
}
// 조건 조회
public static String getBoardSelect() {
StringBuffer sb = new StringBuffer();
sb.append(" SELECT \n");
sb.append(" A.BNUM BNUM \n");
sb.append(" ,A.BSUBJECT BSUBJECT \n");
sb.append(" ,A.BWRITER BWRITER \n");
sb.append(" ,A.BPW BPW \n");
sb.append(" ,A.BMEMO BEMMO \n");
sb.append(" ,A.DELETEYN DELETEYN \n");
sb.append(" ,TO_CHAR(A.INSERTDATE, 'YYYY-MM-DD') INSERTDATE \n");
sb.append(" ,TO_CHAR(A.UPDATEDATE, 'YYYY-MM-DD') UPDATEDATE \n");
sb.append(" FROM MVC_BOARD A \n");
sb.append(" WHERE A.DELETEYN = 'Y' \n");
sb.append(" ORDER A.BNUM = ? \n"); // placeholder 1
return sb.toString();
}
// 입력하기
public static String getBoardInsert() {
StringBuffer sb = new StringBuffer();
/*
INSERT INTO MVC_BOARD (BNUM, BSUBJECT, BWRITER, BPW, BMEMO, DELETEYN, INSERTDATE, UPDATEDATE)
VALUES (?, ?, ?, ?, ?, 'Y', SYSDATE, SYSDATE
*/
sb.append(" INSERT INTO \n");
sb.append(" MVC_BOARD \n");
sb.append(" ( \n");
sb.append(" BNUM \n"); // COLUMN 1
sb.append(" ,BSUBJECT \n"); // COLUMN 2
sb.append(" ,BWRITER \n"); // COLUMN 3
sb.append(" ,BPW \n"); // COLUMN 4
sb.append(" ,BMEMO \n"); // COLUMN 5
sb.append(" ,DELETEYN \n"); // COLUMN 6
sb.append(" ,INSERTDATE \n"); // COLUMN 7
sb.append(" ,UPDATEDATE \n"); // COLUMN 8
sb.append(" ) \n");
sb.append(" VALUES \n");
sb.append(" ( \n");
sb.append(" ? \n"); // placeholder 2
sb.append(" ,? \n"); // placeholder 2
sb.append(" ,? \n"); // placeholder 3
sb.append(" ,? \n"); // placeholder 4
sb.append(" ,? \n"); // placeholder 5
sb.append(" ,'Y' \n"); // 'Y' 6
sb.append(" ,SYSDATE \n"); // SYSDATE 7
sb.append(" ,SYSDATE \n"); // SYSDATE 8
sb.append(" ) \n");
return sb.toString();
}
public static String getBoardUpdate() {
StringBuffer sb = new StringBuffer();
sb.append("UPDATE MVC_BOARD \n");
sb.append("SET BSUBJECT = ? \n"); // placeholder 1
sb.append(" ,BMEMO = ? \n"); // placeholder 2
sb.append(" ,UPDATEDATE = SYSDATE \n");
sb.append("WHERE DELETEYN = 'Y' \n");
sb.append("AND BNUM = ? \n"); // placeholder 3
return sb.toString();
}
public static String getBoardDelete() {
StringBuffer sb = new StringBuffer();
sb.append("UPDATE MVC_BOARD \n");
sb.append("SET DELETEYN = 'N' \n");
sb.append(" ,UPDATEDATE = SYSDATE \n");
sb.append("WHERE DELETEYN = 'Y' \n");
sb.append("AND BNUM = ? \n"); // placeholder 1
return sb.toString();
}
}
- BoardDAOImpl.java
package a.b.c.com.kosmo.board.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import a.b.c.com.common.DBCP_Connectivity;
import a.b.c.com.common.KosConnectivity;
import a.b.c.com.kosmo.board.service.BoardServiceImpl;
import a.b.c.com.kosmo.board.sql.BoardSqlMap;
import a.b.c.com.kosmo.board.vo.BoardVO;
public class BoardDAOImpl implements BoardDAO {
Logger logger = LogManager.getLogger(BoardDAOImpl.class);
// 전체 조회
@Override
public ArrayList<BoardVO> boardSelectAll() {
// TODO Auto-generated method stub
logger.info("BoardDAOImpl:: boardSelectAll() 함수 진입 >>> : ");
// 사용할 객체를 지역변수로 선언하고 디폴트 값으로 초기화한다.
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rsRs = null;
ArrayList<BoardVO> aList = null;
// JDBC를 이용해서 데이터 가져오기
try {
conn = KosConnectivity.getConnection();
String sqls = BoardSqlMap.getBoardSelectAll();
pstmt = conn.prepareStatement(sqls);
logger.info("전체 조회 >>> : \n" + sqls);
rsRs = pstmt.executeQuery();
if (rsRs != null) {
aList = new ArrayList<BoardVO>();
while (rsRs.next()) {
BoardVO _bvo = new BoardVO();
_bvo.setBnum(rsRs.getString(1));
_bvo.setBsubject(rsRs.getString(2));
_bvo.setBwriter(rsRs.getString(3));
_bvo.setBpw(rsRs.getString(4));
_bvo.setBmemo(rsRs.getString(5));
_bvo.setDeleteyn(rsRs.getString(6));
_bvo.setInsertdate(rsRs.getString(7));
_bvo.setUpdatedate(rsRs.getString(8));
aList.add(_bvo);
}
}
KosConnectivity.conClose(conn, pstmt, rsRs);
} catch (Exception e) {
logger.info("전체 조회시 디비 에러가 >>> : " + e);
} finally {
KosConnectivity.conClose(conn, pstmt, rsRs);
}
return aList;
}
// 조건 조회
@Override
public ArrayList<BoardVO> boardSelect(BoardVO bvo) {
// TODO Auto-generated method stub
logger.info("BoardDAOImpl:: boardSelect() 함수 진입 >>> : ");
logger.info("BoardDAOImpl :: boardSelect() bvo.getBnum() >>> : " + bvo.getBnum());
// 사용할 객체를 지역변수로 선언하고 디폻트 값으로 초기화 한다.
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rsRs = null;
ArrayList<BoardVO> aList = null;
// JDBC를 이용해서 데이터 가져오기
try {
conn = KosConnectivity.getConnection();
String sqls = BoardSqlMap.getBoardSelect();
pstmt = conn.prepareStatement(sqls);
pstmt.clearParameters();
pstmt.setNString(1, bvo.getBnum());
logger.info("조건 조회 >>> : \n" + sqls);
rsRs = pstmt.executeQuery();
if (rsRs != null) {
aList = new ArrayList<BoardVO>();
while (rsRs.next()) {
BoardVO _bvo = new BoardVO();
_bvo.setBnum(rsRs.getString(1));
_bvo.setBsubject(rsRs.getString(2));
_bvo.setBwriter(rsRs.getString(3));
_bvo.setBpw(rsRs.getString(4));
_bvo.setBmemo(rsRs.getString(5));
_bvo.setDeleteyn(rsRs.getString(6));
_bvo.setInsertdate(rsRs.getString(7));
_bvo.setUpdatedate(rsRs.getString(8));
aList.add(_bvo);
}
}
KosConnectivity.conClose(conn, pstmt, rsRs);
} catch (Exception e) {
logger.info("조건 조회 시 디비 에러가 >>> : " + e);
} finally {
KosConnectivity.conClose(conn, pstmt, rsRs);
}
return aList;
}
// 입력하기
@Override
public boolean boardInsert(BoardVO bvo) {
// TODO Auto-generated method stub
logger.info("BoardDAOImpl:: boardInsert() 함수 진입 >>> : ");
logger.info("bvo >>> : " + bvo);
// 사용할 객체를 지역변수로 선언하고 초기화 하기
Connection conn = null;
PreparedStatement pstmt = null;
int nCnt = 0;
boolean bool = false;
// JDBC 객체 이용해서 테이블에 인서트 하기
try {
conn = KosConnectivity.getConnection();
String sqls = BoardSqlMap.getBoardInsert();
pstmt = conn.prepareStatement(sqls);
logger.info("인서트 >>> : \n" + sqls);
// 플레이스 홀더에 입력할 데이터 바인딩하기
pstmt.clearParameters();
pstmt.setString(1, bvo.getBnum());
pstmt.setString(2, bvo.getBsubject());
pstmt.setString(3, bvo.getBwriter());
pstmt.setString(4, bvo.getBpw());
pstmt.setString(5, bvo.getBmemo());
nCnt = pstmt.executeUpdate();
if (!conn.getAutoCommit()) conn.commit();
logger.info("인서트 결과는 >>> : " + nCnt);
if (nCnt > 0) bool = true;
KosConnectivity.conClose(conn, pstmt);
}catch(Exception e) {
logger.info("인서트 디비 에러가 >>> : " + e);
}finally {
KosConnectivity.conClose(conn, pstmt);
}
return bool;
}
// 수정하기
@Override
public boolean boardUpdate(BoardVO bvo) {
// TODO Auto-generated method stub
logger.info("BoardDAOImpl :: boardUpdate() 함수 진입 >>> : ");
logger.info("bvo >>> : " + bvo);
// 사용할 객체를 지역변수로 선언하고 초기화하기
Connection conn = null;
PreparedStatement pstmt = null;
int nCnt = 0;
boolean bool = false;
// JDBC 객체 이용해서 테이블에 인서트 하기
try {
conn = KosConnectivity.getConnection();
String sqls = BoardSqlMap.getBoardUpdate();
pstmt = conn.prepareStatement(sqls);
logger.info("업데이트 >>> : \n" + sqls);
// 플레이스 홀더에 입력할 데이터 바인딩 하기
pstmt.clearParameters();
pstmt.setString(1, bvo.getBsubject());
pstmt.setString(2, bvo.getBmemo());
pstmt.setString(3, bvo.getBnum());
nCnt = pstmt.executeUpdate();
if (!conn.getAutoCommit()) conn.commit();
logger.info("업데이트 결과는 >>> : " + nCnt);
if (nCnt > 0) bool = true;
KosConnectivity.conClose(conn, pstmt);
} catch (Exception e) {
logger.info("업데이트 디비 에러가 >>>: " + e);
} finally {
KosConnectivity.conClose(conn, pstmt);
}
return bool;
}
@Override
public boolean boardDelete(BoardVO bvo) {
// TODO Auto-generated method stub
logger.info("BoardDAOImpl :: boardDelete() 함수 진입 >>> : ");
logger.info("bvo >>> : " + bvo);
// 사용할 객체를 지역변수로 선언하고 초기화하기
Connection conn = null;
PreparedStatement pstmt = null;
int nCnt = 0;
boolean bool = false;
// JDBC 객체 이용해서 테이블에 인서트 하기
try {
conn = KosConnectivity.getConnection();
String sqls = BoardSqlMap.getBoardDelete();
pstmt = conn.prepareStatement(sqls);
logger.info("딜리트 >>> : \n" + sqls);
// 플레이스 홀더에 입력할 데이터 바인딩 하기
pstmt.clearParameters();
pstmt.setString(1, bvo.getBnum());
nCnt = pstmt.executeUpdate();
if (!conn.getAutoCommit()) conn.commit();
logger.info("딜리트 결과는 >>> : " + nCnt);
if (nCnt > 0) bool = true;
KosConnectivity.conClose(conn, pstmt);
} catch (Exception e) {
logger.info("딜리트 디비 에러가 >>>: " + e);
} finally {
KosConnectivity.conClose(conn, pstmt);
}
return bool;
}
}
- BoardServiceImpl.java
package a.b.c.com.kosmo.board.service;
import java.util.ArrayList;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import a.b.c.com.kosmo.board.dao.BoardDAO;
import a.b.c.com.kosmo.board.dao.BoardDAOImpl;
import a.b.c.com.kosmo.board.vo.BoardVO;
public class BoardServiceImpl implements BoardService {
Logger logger = LogManager.getLogger(BoardServiceImpl.class);
// 전체 조회
@Override
public ArrayList<BoardVO> boardSelectAll() {
// TODO Auto-generated method stub
logger.info("BoardServiceImple :: boardSelectAll() 함수 진입 >>> : ");
BoardDAO bdao = new BoardDAOImpl();
ArrayList<BoardVO> aList = bdao.boardSelectAll();
return aList;
// return bdao.boardSelectAll();
}
// 조건 조회
@Override
public ArrayList<BoardVO> boardSelect(BoardVO bvo) {
// TODO Auto-generated method stub
logger.info("BoardServiceImple :: boardSelect() 함수 진입 >>> : ");
BoardDAO bdao = new BoardDAOImpl();
ArrayList<BoardVO> aList = bdao.boardSelectAll();
return aList;
// return bdao.boardSelect(bvo);
}
// 입력하기
@Override
public boolean boardInsert(BoardVO bvo) {
// TODO Auto-generated method stub
logger.info("BoardServiceImple :: boardInsert() 함수 진입 >>> : ");
logger.info("bvo >>> : " + bvo);
BoardDAO bdao = new BoardDAOImpl();
boolean bool = bdao.boardInsert(bvo);
return bool;
//return bdao.boardInsert(bvo);
}
// 수정하기
@Override
public boolean boardUpdate(BoardVO bvo) {
// TODO Auto-generated method stub
logger.info("BoardServiceImple :: boardUpdate() 함수 진입 >>> : ");
logger.info("bvo >>> : " + bvo);
BoardDAO bdao = new BoardDAOImpl();
boolean bool = bdao.boardUpdate(bvo);
logger.info("bool >>> : " + bool);
return bool;
// return bdao.boardUpdate(bvo);
}
// 삭제하기
@Override
public boolean boardDelete(BoardVO bvo) {
// TODO Auto-generated method stub
logger.info("BoardServiceImple :: boardDelete() 함수 진입 >>> : ");
logger.info("bvo >>> : " + bvo);
BoardDAO bdao = new BoardDAOImpl();
boolean bool = bdao.boardDelete(bvo);
logger.info("bool >>> : " + bool);
return bool;
// return bdao.boardDelete(bvo);
}
}
4교시 (12:30-13:20)
- boardSelectAll.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.ArrayList" %>
<%@ page import="a.b.c.com.kosmo.board.vo.BoardVO" %>
<%@ page import="org.apache.log4j.LogManager" %>
<%@ page import="org.apache.log4j.Logger" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!-- 디바이스에 최적화된 크기로 출력됨 ------------------------------------->
<meta name="viweport" content="width=device-width, iitail-scale=1">
<!-- jQuery CDN 불러오기 -------------------------------------------->
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
/*
//체크박스 체크 확인하기
function checkOnly(chk){
// alert(">>> : " + chk);
var chkObj = document.getElementsByName("bnumChk");
console.log("chkObj >>> : " + chkObj);
for (var i=0; i < chkObj.length; i++){
if (chkObj[i] != chk){
chkObj[i].checked = false;
}
}
}
// 체크박스 체크 카운트
function chkInfo(){
var obj = document.getElementsByName("bnumChk");
var nCnt = 0;
for(var i=0; i < obj.length; i++){
if (obj[i].checked == true){
nCnt++;
}
}
console.log('nCnt >>> : ' + nCnt);
return nCnt;
}
*/
$(document).ready(function(){
// 등록하기
$("#I").on('click', function(){
location.href="/kosServlet/kosmo/board/board.html";
});
// 조회하기
$("#SALL").on('click', function(){
location.href="/kosServlet/board?isudType=SALL";
});
// 체크박스 하나만 체크 되게 하기 bnumChk
$(document).on('click', '#bnumChk', function(){
// var b = $(this).prop('checked');
// console.log("b >>> : " + b);
// alert("b >>> : " + b);
if ($(this).prop('checked')){
$('.bnumChk').prop('checked', false);
$(this).prop('checked', true);
}
});
// 수정하기
$(document).on('click', '#U', function(){
if ($('.bnumChk:checked').length == 0 ){
alert("수정할 글번호 하나를 선택하시오 !!!");
return;
}
$('#isudType').val('U');
$('#boardSelectAll').attr({
"action":"/kosServlet/board",
"method":"GET",
"enctype":"application/x-www-form-urlencoded"
}).submit();
});
// 삭제하기
$(document).on('click', '#D', function(){
if ($('.bnumChk:checked').length == 0) {
alert("수정할 글 번호 하나를 선택하시오");
return;
}
$('#isudType').val('D');
$('#boardSelectAll').attr({
"action":"/kosServlet/board",
"method":"GET",
"enctype":"application/x-www-urlencoded"
}).submit();
});
});
</script>
<style type="text/css">
.tt{
text-align: center;
}
a{ text-decoration-line: none;}
</style>
</head>
<body>
<h3>boardSelectAll.jsp</h3>
<hr>
<form name="boardSelectAll" id="boardSelectAll">
<table border="1">
<tr>
<td class="tt">
<input type="checkbox" class="chkAll" name="chkAll" id="chkAll"/>
</td>
<td class="tt">순번</td>
<td class="tt">글번호</td>
<td class="tt">글제목</td>
<td class="tt">글쓴이</td>
<td class="tt">글내용</td>
<td class="tt">등록일</td>
</tr>
<% request.setCharacterEncoding("UTF-8"); %>
<%
Logger logger = LogManager.getLogger(this.getClass());
logger.info("boardSelectAll.jsp 진입 >>> : ");
Object obj = request.getAttribute("aList_selectALL");
if (obj == null) return;
ArrayList<BoardVO> aList = (ArrayList<BoardVO>)obj;
int nCnt = aList.size();
logger.info("boardSelectAll.jsp 전체조회 건수 >>> : " + nCnt);
for (int i=0; i < nCnt; i++){
BoardVO _bvo = aList.get(i);
%>
<tr>
<td class="tt">
<input type="checkbox" class="bnumChk" name="bnumChk" id="bnumChk" value="<%= _bvo.getBnum() %>" />
</td>
<td class="tt"><%= i + 1 %></td>
<td class="tt"><%= _bvo.getBnum() %></td>
<td class="tt"><%= _bvo.getBsubject() %></td>
<td class="tt"><%= _bvo.getBwriter() %></td>
<td class="tt"><%= _bvo.getBmemo() %></td>
<td class="tt"><%= _bvo.getInsertdate() %></td>
</tr>
<%
}
%>
<tr>
<td colspan="7" align="right">
<input type="hidden" name="isudType" id="isudType" value="" />
<input type="button" value="등록" id="I">
<input type="button" value="조회" id="SALL">
<input type="button" value="수정" id="U">
<input type="button" value="삭제" id="D">
</td>
</tr>
</table>
</form>
</body>
</html>
- boardDelete.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="org.apache.log4j.LogManager" %>
<%@ page import="org.apache.log4j.Logger" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>boardDelete.jsp</h3>
<hr>
<%
Logger logger = LogManager.getLogger(this.getClass());
logger.info("boardDelete.jsp 진입 >>> : ");
Object obj = request.getAttribute("bool");
if (obj == null) return;
boolean bool = ((Boolean)obj).booleanValue();
if (bool) {
%>
<script>
location.href="/kosServlet/board?isudType=SALL";
</script>
<%
}
%>
</body>
</html>
5교시 (14:30-15:20)
- WEB MVC
- Ajax
- jps 페이지 이동
페이지를 이동하면 화면 전환(화면 리프레시)이 이루어 진다.
데이터 이동
HTTP 프로토콜
컨넥션 리스 : Connectionless
한번 연결해서 (데이터를 요청하면)
====================================
====================================
데이터를 받으면 (데이터가 응답되면)
연결한 것을 끊는다.
하위에 TCP 프로토콜
Connection
Ajax : 통신 규칙 : request, response
: 구글 엔지니어 XMLHttpRequest 기술로 만든다.
: 구글의 지도 서비스를 하기 위해서
ajax(), load(), get(), post() ....
$.ajax({
url:,
type:,
data:,
dataType:,
success:,
error:
}) - Ajax(Asynchronous JavaScript and XML)
========================================================
Web 화면을 갱신하지 않고 Server로부터 Data를 가져오는 방법
함수 : load(), $.ajax(), $.get(), $.post(), $.getJSON()
$.ajax() 함수는 load, get, post 함수를 포함하는 함수이다.
예약어(keyword) : ajax() 함수에서 {} : 자바스크립트 리터럴객체 블럭 사용 하는 것
url : 요청이 전송되는 URL이 포함된 문자열
type : http요청 방식 : GET/POST
data : http요청 파라미터 문자열 key=value&key=value
dataType : http요청 후 return하는 데이터 Type
xml, html, srcipt, json, jsonp, text
success : function(data: 리턴매개변수, 변수 이름이 가변적이다 ){....} : http요청 성공시 이벤트 핸들러
error : function(){.....} : http요청 실패시 이벤트 핸들러
async : 요청시 동기 유무 선택(true/false)
true : async, false : sync
cache : 브라우저에 의해 요청되는 페이지를 캐시(true/false)
true : 캐시사용, false : 캐시사용하지 않음
timeout : http요청에 대한 제한 시간(단위 : ms)
ajax() 함수
---------------------------------------
$.ajax({
"url" : "접속할 페이지 주소"
,"type" : "GET" or "POST"
,"dataType" : "XML" or "JSON"
,"data" : "파라미터 문자열 key=value&key=value" or { "key":"value", "key":"value"}
,"success" : function(data){
// 통신에 성공했을 때 실행되는 함수
}
,"error" : function(data){
// 통신에 실패했을 때 실행되는 함수
}
});
get() 함수
---------------------------------------
$.get({
"url"
,{파라미터 Object(JSON)}
,function (){
// 통신에 성공했을 때 실행되는 함수
}
});
var ajax = $.get("url",{파라미터 Object(JSON)},function (){... });
ajax.fail(function(){
// 404, 500 에러등이 발생한 경우 실행
});
ajax.always(function(){
// 통신 성공, 실패 여부에 상관없이 무조건 마지막에 호출됨
});
post() 함수
---------------------------------------
$.post({
"url"
,{파라미터 Object(JSON)}
,function (){
// 통신에 성공했을 때 실행되는 함수
}
});
6교시 (15:30-16:20)
- test_file.txt
Ajax는 Asynchronous JavaScript and XML의 약자입니다.
Ajax는 동적인 대화형 웹페이지를 만듭니다.
Aysnchronous는 비동기 방식입니다.
Ajax로 요청하고 응답할 때 화면전환(리프레시)가 없다.
- ajax_1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ajax load() 함수</title>
<!-- jQuery CDN 불러오기 -------------------------------------------->
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("#target").load("test_file.txt");
});
});
</script>
</head>
<body>
<h3>Ajax load() 함수 사용하기</h3>
<hr>
<body>
<div id="target" style="width:400px; height:150px; border:solid 1px red"></div>
<button>Get Data</button>
</body>
</html>
- data_2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String id = request.getParameter("id");
System.out.println("id >>> : " + id);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
아이디 : <%= id %><br>
</body>
</html>
- ajax_2.jsp
<%@ 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>
<!-- jQuery CDN 불러오기 -------------------------------------------->
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#button").click(function(){
alert(">>>");
/*
$.ajax({
url: 요청할 페이지 url 주소 : action,
type: GET, POST : method,
data: ?key=value&key=value$key=value,
success: function(resData){}, resData : 매개변수 : 변수 이름은 가변적이다.
error: function(e) {}
});
*/
$.ajax({
url : "data_2.jsp",
type : "POST",
data : {
id : $('#id').val(), // data는 쿼리 스트링 data_2.jsp?id=값
},
success : function (resData){
alert("리턴 데이터 >>> : " + resData);
$('#ajaxResData').html("화면에 리턴 데이터 출력 : " + resData);
console.log("콘솔에 리턴 데이터 출력 : " + resData);
},
error : function (e){
alert("error \n" + e);
}
});
/*
$("#frm").attr({
"action":"data_2.jsp",
"method":"GET"
}).submit();
*/
});
});
</script>
</head>
<body>
<form id="frm">
<label>아이디</label>
<input name="id" id="id">
<input id="button" type="button" value="버튼">
</form>
<div id="ajaxResData">리턴 데이터</div>
</body>
</html>
7교시 (16:30-17:20)
- ajax_2_1.jsp
<%@ 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>
<!-- jQuery CDN 불러오기 -------------------------------------------->
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#button').click(function(){
alert(">>>");
let urlV = "data_2.jsp";
let typeV = "POST";
let dataV = $('#id').val();
console.log("urlV >>> : " + urlV);
console.log("typeV >>> : " + typeV);
console.log("dataV >>> : " + dataV);
$.ajax({
url : urlV,
type : typeV,
data : {
id : dataV, // data 는 쿼리 스트링 data_2.jsp?id=값
},
success : whenSuccess,
error : whenError
});
function whenSuccess(resData){
alert("리턴 데이터 >>> : " + resData);
$('#ajaxResData').html("화면에 리턴 데이터 출력 : " + resData);
console.log("콘솔에 리턴 데이터 출력 : " + resData);
}
function whenError(e){
alert("error \n" + e);
}
});
});
</script>
</head>
<body>
<form id="frm">
<label>아이디</label>
<input name="id" id="id">
<input id="button" type="button" value="버튼">
</form>
<div id="ajaxResData">리턴 데이터</div>
</body>
</html>
- data_xml.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String id = request.getParameter("id");
System.out.println("jqueryIdCheck :: id >>> " + id);
int idNcnt = 0;
boolean bool = false;
if (idNcnt == 0){
bool = true;
} else {
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ajax XML</title>
</head>
<body>
<?xml version='1.0' encoding='UTF-8'?>
<login>
<result><%= bool %></result>
</login>
</body>
</html>
- ajax_xml.jsp
<%@ 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>
<!-- jQuery CDN 불러오기 -------------------------------------------->
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#button').click(function(){
alert(">>>");
callAjax();
});
});
function callAjax(){
alert("<<<>>>");
$.ajax({
url : "data_xml.jsp",
type : "POST",
data : {
id : $('#id').val(),
},
success : whenSuccess,
error : whenError
});
function whenSuccess(data){
alert("리턴 데이터 >>> : " + data);
var boolVal = $(data).find("result").text();
console.log("boolVal >>> : " + boolVal);
// 자바스크립트 eval() 객체를 변환하는 함수
// boolVal 문자열을 자바스크립트 true, false 객체로 변환하는 함수
// 현재는 사용금지 : 보안 취약점에 적용되는 함수
var result = eval(boolVal);
console.log("result >>> : " + result);
if (result){
alert("성공");
console.log("result >>> : " + result);
} else {
alert("실패");
console.log("result >>> : " + result);
}
}
function whenError(){
alert("error");
}
}
</script>
</head>
<body>
<form id="frm">
<label>아이디</label><input name="id" id="id">
<input id="button" type="button" value="버튼">
</form>
</body>
</html>
8교시 (17:30-18:30)
- idCheck.jsp
<%@ 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>
</head>
<body>
<h3>ID CHECK</h3>
<hr>
<%
String mid = request.getParameter("mid");
String ISUD_TYPE = request.getParameter("ISUD_TYPE");
String sVal = "";
if ("IDCHECK".equals(ISUD_TYPE)) {
if("test".equals(mid)) {
} else {
sVal = "IDGOOD";
}
}
%>
<?xml version='1.0' encoding='UTF-8'?>
<login>
<result><%= sVal %></result>
</login>
</body>
</html>
- pwCheck.jsp
<%@ 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>
</head>
<body>
<h3>PW CHECK</h3>
<hr>
<%
String mpw = request.getParameter("mpw");
String ISUD_TYPE = request.getParameter("ISUD_TYPE");
String sVal = "";
if ("PWCHECK".equals(ISUD_TYPE)) {
if ("test00".equals(mpw)) {
sVal = "PWGOOD";
}
}
%>
<?xml version='1.0' encoding='UTF-8'?>
<login>
<result><%= sVal %></result>
</login>
</body>
</html>
- idpwCheck.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ID PW CHECK</title>
<!-- jQuery CDN 불러오기 -->
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// 아이디 중복 체크
$("#midCheckBtn").click(function(){
alert("midCheckBtn 함수 진입");
let urlVal = "/KosMember/kos_ajax/check/idCheck.jsp";
let typeVal = "GET";
let midVal = $("#mid").val();
let isudtypeVal = $("#ISUD_TYPE").val('IDCHECK');
isudtypeVal = isudtypeVal.val();
if (midVal == '') {
alert("중복 체크할 아이디를 입력하세요 >>> : ");
$("#mid").focus();
return false;
}
alert("urlVal >>> : " + urlVal);
alert("typeVal >>> : " + typeVal);
alert("midVal >>> : " + midVal);
alert("isudtypeVal >>> : " + isudtypeVal);
console.log("urlVal >>> : " + urlVal);
console.log("typeVal >>> : " + typeVal);
console.log("midVal >>> : " + midVal);
console.log("isudtypeVal >>> : " + isudtypeVal);
$.ajax({
url : urlVal,
type : typeVal,
data : {
"mid": midVal,
"ISUD_TYPE": isudtypeVal, // data는 쿼리 스트링
},
success : whenSuccess,
error : whenError
});
function whenSuccess(resData){
var sVal = $(resData).find("result").text();
if (sVal == 'IDGOOD'){
alert("사용할 수 있는 아이디입니다.");
$("#mid").css("background-color", "yellow");
$("#mid").attr("readonly", true);
$("#mid").focus();
}else{
alert("이미 사용 중인 아이디입니다.");
$("#mid").val('');
$("#mid").focus();
}
}
function whenError(){
alert("error");
}
});
// 비밀번호 체크
$("#mpwCheckBtn").click(function(){
alert("mpwCheckBtn 함수 진입 >>> : ");
let urlVal = "/KosMember/kos_ajax/check/pwCheck.jsp";
let typeVal = "GET";
let mpwVal = $("#mpw").val();
let isudtypeVal = $("#ISUD_TYPE").val('PWCHECK');
isudtypeVal = isudtypeVal.val();
if (mpwVal == '') {
alert("비밀번호를 입력하세요 >>> : ");
$("#mpw").focus();
return false;
}
alert("urlVal >>> : " + urlVal);
alert("typeVal >>> : " + typeVal);
alert("mpwVal >>> : " + mpwVal);
alert("isudtypeVal >>> : " + isudtypeVal);
console.log("urlVal >>> : " + urlVal);
console.log("typeVal >>> : " + typeVal);
console.log("mpwVal >>> : " + mpwVal);
console.log("isudtypeVal >>> : " + isudtypeVal);
$.ajax({
url : urlVal,
type : typeVal,
data : {
"mpw": mpwVal,
"ISUD_TYPE": isudtypeVal, // data 는 쿼리 스트링
},
success : whenSuccess,
error : whenError
}); // end of ajax()
function whenSuccess(resData){
var sVal = $(resData).find("result").text();
if (sVal == 'PWGOOD'){
alert("비밀번호가 확인되었습니다.");
$("#mpw").css("background-color", "red");
$("#mpw").attr("readonly", true);
$("#mpw").focus();
}else{
alert("비밀번호가 다릅니다.");
$("#mpw").val('');
$("#mpw").focus();
}
}
function whenError(){
alert("error");
}
});
});
</script>
</head>
<body>
<h3>ID PW CHECK</h3>
<hr>
<form name="memForm" id="memForm">
<table border="1">
<tr>
<td>아이디</td>
<td>
<input type="hidden" name="ISUD_TYPE" id="ISUD_TYPE">
<input type="text" name="mid" id="mid" placeholder="아이디 체크" style="width:100px" />
<input type="button" id="midCheckBtn" value="아이디 중복 확인" />
</td>
</tr>
<tr>
<td>패스워드</td>
<td>
<input type="text" name="mpw" id="mpw" placeholder="비밀번호 체크" style="width:100px" />
<input type="button" id="mpwCheckBtn" value="비밀번호 확인" />
</td>
</tr>
</table>
</form>
</body>
</html>
Notes
728x90