jQuery CDN 가져왔던거
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
복붙하면 이 코드인데
<script type="text/javascript" src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
우리 해왔던 방식은 이거~
API
API도큐먼트를 보면 왼쪽에 에이젝트 카테고리가 있고 사용 가능한 함수들이 있어
다 사용하진 않고 4종류정도만 볼거야
jQuery CDN
<script type="text/javascript" src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
$객체.load(url [, data] [, complete])
마지막 Short웅앵 들어가!
.load() 설명 보자~
url에서 응답받은 데이터가 있을거야 그걸 받아서 객체에 적용하겠다는 말임
load는 innerHTML까지 구현되어있다고 생각하면 돼
각 매개변수에 대한 설명 읽어보쎼용
complete는 성공실패 상관 없이 요청이 오면 하는거..? 사용방법 읽어보세요..
$객체의 내용물(innerHTML)로 적용플레인 오브젝트 -> 중괄호로 묶인 {키:밸류, 키:밸류, ...} 들
오브젝트는 대괄호로 묶은 배열을 말하는 경우라서 플레인 오브젝트라고 구분지어 줌
로드는 보통 전달파라미터 안씀 그래서 첫번재 매개변수만 이용하는 경우가 많을거야
function(
String responseText //응답 데이터
, String textStatus //응답 상태 메시지
, jqXHR jqXHR //jQuery객체에 변환한 XHR객체
)
$("#result").load("./ajax02", {key1:1234, key2:"HI"}, function(a, b, c) {})
$("#result").load(
"./ajax02",
{
key1:1234,
key2:"HI"
},
function(a, b, c) {
jqXHR.함수
jqHR.프로퍼티
jqXHR[0].readyState
jqXHR[0].status
//실제로는 이렇게 복잡하게 작성 안할거야. 우리 복잡하게 안할려고 이거 하고 있는거잖아
//이런식으로도 사용 가능하다고 보여준것일 뿐이에요
}
)
코드 작성하러 가보자
서블릿 없이 jsp로 응답..? 움직이는거..? 먼저 보겠대
같은 Ajax 프로젝트에 webapp에 폴더만 새로 만들고 jsp 만들어줄게
화면 왼쪽에 사이드 메뉴바가 있다ㅗㄱ 생각하고 메뉴를 누르면 가운데 페이지만 변환되게!
보통은 상담에 탭이 있고 그걸 누르면 다른거 ㄴ가만히 있고 가운데 내용물만 변환되게
근데 이건 JS로도 구현 가능해 div를 각자 주고 display none 주고 이런식으로
근데 DB에서 가져와서 페이지를 갱신하거야 해야하느 ㄴ경우에 AJAX가 필요한거야
화면 일부에 대하 변경이 필요한데 이거의 데이터가 DB에ㅓ 받아와야 하는 경우 AJAX를 사용, 그렇지 않다면 JS DOM으로 내용물만 변경해도 가능~
지금은 서버데이터라기보다 ㄴ동작방식만 보고 이썽서 JS로도 구현가능한것임
메뉴바 구현해볼게
쟈잔 메뉴 누를 때마다 페이지 바껴야 해
스타일 줬어용
이제 right div 내용물 채워볼게용
여기까지 잘 됐으면 이제 제이쿼리 cdn 추가해주고 작성시작해볼게용
이벤트 리스너를 걸어주려고 해요
근데 버튼 누르자마자 페이지가 바뀌면서 콘솔창도 바뀌어ㅓㅅ 뒤로가기를 눌러야 콘솔창에서 제대로 됐는지 확인될거야
근데 우린 페이지 이동을 하고싶은게 아니잔아 그래서 페이지 이동을 멈춰볼게
return false 주기
짠 이렇게 페이지 이동 없이 콘소ㅗㄹ창 출력~
이거 의미
right에 추ㅏㄱ해줄게(로드해줄게) 이 객체(this 즉 a click)의 속성 href를!
짠 이제 메뉴바 누르면 화면에 추가되지롱~
function(
PlainObject data, //응답 데이터
String textStatus, //응답 상태 메시지
jqXHR jqXHR //jQuery XHR 객체
)
정리했으니까 이제 사용하러 가보자~
jsp를 추가해줄게용 jqAjax_01.jsp
이거 전까지는 특별한거 없엇음!
언니 여기 자동완성으로 작성될 때 중괄호 조심해야해!
주석 참고참고
이제 값 입력하고 버튼 누르면 네트워크 쪽에서 ok.jsp 누르면 헤더에 requestURL에 쿼리스트링으로 값 들어가잇는거 확인할 수 있어~
결과창 jsp는
ajax 폴더에서 ajax_02_ok.jsp에서 긁어오고!
요기 상단에 파라미터 이름만 맞게 바꿔주자~
이제 post 테스트
결과도 똑같을거얌
low레벨 쪽에 있어용
지금까지는 축약 메소드를 본거고요 이거는 추상메소드에요
대신 로우레벨이라 우리가 설정값을 일일히 다 넣어줘야해
다 할 수 있으면 좋은데 다 외윅 싫으면 이ㅓㄱ 하나만 제대로 하면돼.
그넫 대신 얘는 외울 내용이 좀 많음
설명 읽어볼게요
수행한 결과로 실행할 함수, 그 결과로 실행할 함수, 그 결과로 실행할 함수 이렇게 중첩해서도 사용할 수 있긴합ㄴ다
강사님은 위에 야들 안쓰고 이걸로 씀 더 길고 복잡해지긴 하지만 그러신대..
요청으로 보내는건 항상 String / 응답으로 오는건 html, json, file, text, ...
이거 안맞춰주면 에러나.. 데이터 처리가 안될거야
function(
//사용 가능한 모든 데이터 -> 그냥 Object라고 생각해도 됨
//문서에서 설명하기 위해 이렇게 표현한거지 애니띵이라는 타입이 있는게 아님
Anything data //응답 데이터
, String textStatus //응답 상태 메시지
, jqXHR jqXHR //jQuery XHR 객체
)
function(
jqXHR jqXHR //jQuery XHR 객체
, String textStatus //응답 상태 메시지
, String errorThrown //에러 정보
)
코드 보러 가자
아까 했던 get, post를 똑같이 해서 함 해볼게
jsp 파일 하나 jqAjax_02.jsp 이름으로 만들고 jqAjax_01.jsp의 바디 태그만 복사해서 가져오고 제이쿼리 준비하자
이렇게 기본 뼈대를 만들어봤어요
강사님은 원본 남겨두려고 복붙해서 하나더 만들고 주석처리하셨엉
나도 해야지
지금 이벤트를 등록해놓은게 아니라ㅓㅅ 새로고침하면 무조건 ajax 코드가 실행될거야 그래ㅓㅅ 이벤트코드로 감싸줄게
감쌌지롱
웹 페이지에서 글을 작성할 때 보조하는 라이브러리
What You See Is What You Get : 보이는대로 결과물을 얻는다
오른쪽 메뉴바 릴리즈 들어가ㅓㅅ 다운받아용
이거 제일 위에서 tgz 파일 받아서 압축 해제하면 package 폴더가 뜰거양
설치 설명은 강사님꺼 참고해주~
다이나믹 웹 프로젝트 WebEditor로 하나 만들게용
우리 이렇게 해서 정적자원 관리하잖아 근데 se2 폴더 하나에 다 넣을게
짠 압축해제한 package 폴더에서 저렇게 6개만 가지고 와서 넣어주세요
textarea에 씌워줄거라서 텍스트area 코드 뒤에 적어줘야해 그 전에 적으면 안돼
이렇게~
작성버튼 누르면 제출되도록 위에 스크립트에 작성해줄겡
근데 프레임이(에디터가) textarea 가리고 있어서 display none으로 되어있대 ㅇㅣ 상태로는 아무리 버튼을 클릭해도 보내지지 않는대! 개발자도구 엘리먼트 확인해보자
우리는 아이프레이 ㅁ안에 작성된 글을 실제로 사용하려는 textarea에 옮겨주는 작업이 필요하고 그러고 서브밋ㅇ르 해야 전송이 될거얌
이걸 하게 해주는 함수를 작성해볼게
이렇게 하고
호출해줄게!
어떻게 동작하는지 눈으로 볼 수 없지만~ 확인하고 싶으면 개발자도구에서 textarea에 display none을 풀어줘
작성 눌렀을 때 이렇게 되어야 맞아!
폼 제출 갈겨보자!
전달되었다면 네트워크에서 확인 가능한~
페이지는 doPodt 구현 안해줘서 405 에러나더라!
포스트 구현하고~
짠
summernote 해볼겡
summernote
컨트롤러에 에디터컨트롤러2랑 jsp도 write2 만들어주께
글고 섬머노트에 있는 cdn 가져올겡
섬머노트 cdn -> 게팅 스타티드 누르면 이성용
그냥 복붙했어!
jsp작성해줄게
이렇게 그러고 위세 스크리븥 코드로 섬머노트 불러오기
훨씬 간단하죠!
완성화면~
근데 단순호출 말고 안에 뭐 값을 줘서 변경도 가능하대 함 해보자
이런식으로 해봤습니다
이번에는 웹 에디터 없애는 기능을 해볼게! 폼 바깥쪽에 버튼 하나 만들었어
그러고 클릭 이벤트 걸어주자
버튼 누르면 없어지지롱~ 근데 저 textarea가 보이면 안된대 없애는거 가보자고
임베디드 맞아..? 이걸 무슨 방식이라 하지 암튼 직접 주기도 하고
클릭했을 때 없게도 만들어줄게~
이번에는 보여주기 만든대ㅠ
보여주기 버튼 만들고 스트립트도 작성 갈겨! 진짜 정신없다..
이렇게 했어용
화면사진은 생략합니다...
근데 섬머노트는 textarea 아니어도 적용가능하대! div 만들어서 적용해보께