2022. 10. 8. 14:49ㆍDev.Program/JSP & Javascript
웹서버에 웹애플리케이션 배포
이클립스 WAR 만들기
C:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps
웹서버에 FunWeb.war 넣기
C:\Program Files\Apache Software Foundation\Tomcat 8.0\bin
Tomcat8w.exe 오른쪽버튼- 관리자 권한으로 실행
서버 start
- 지금은 실행중이라 Stop만 나옴
이클립스 꺼져있어야함(2개 동시 실행 못함)
웹브라우저 - http://localhost:8080/FunWeb/main/main.jsp
< JQuery >
- 자바스크립트로 만든 프로그램
- 함수들의 모임
- WebContent 밑에 js 폴더랑 js_jQuery1 폴더 새로 만들기
컴프레스 - 엔터키 없애고 다 한 줄에 나오는거
우린 언 컴프레스
자바파일 아니고 자바스크립트라 라이브러리에 넣을 필요 없음
- js 폴더 안에 넣기
- 열어보면 이렇게 함수들이 있다!
- 전부 분석하기는 힘드니까 자주 쓰는 것들! 분석하도록
- jQuery 중에서는 ajax을 제일 많이 씀
- 이렇게 함수들 만들어져 있다.
- 함수들 어떻게 사용하는 건지 형태, 예제 등등이 다 나와있음
- js_jQuery1 밑에 test1.jsp 만들기
- script src로 경로 써줘야 jQuery 쓸 수 있다! (보통 head 안에 많이 씀! body 끝에 쓰기도)
- <script src="../js/jquery-3.5.0.js"></script>
- 스크립트 안에 jQuery 쓰겠단 걸 알려줘야함
- src가 있어야 이게 동작이 됨!
- jQuery를 문서(document)로해서 함수(function)를 사용할 준비(ready)가 되었다는 뜻
- 실행창
<script src="../js/jquery-3.5.0.js"></script> <script type="text/javascript"> // 3가지 방식 - 우린 그 중에 2번째 방법 사용 jQuery(document).ready(function(){ alert("jQuery 준비1"); }); $(document).ready(function(){ alert("jQuery 준비2"); }); ⇒ 이 형태를 가장 많이 씀! jQuery 대신 $ 표시 $(function(){ alert("jQuery 준비3"); }); ⇒ 더 간단하게도 가능 (함수 이름은 없다) </script> |
======== js_jQuery1 에 test2.jsp 만들기
< .css() : 모양 꾸미는 함수 >
<script src="../js/jquery-3.5.0.js"></script> <script type="text/javascript"> $(document).ready(function(){ // 대상.함수(); // 전체 대상 : 글자색 빨간색 $('*').css('color', 'red'); }); </script> |
- 전체 적용 (‘*’)
// h1 태그 대상 : 글자색 파란색 $('h1').css('color', 'blue'); |
- 추가
# document 랑 this 는 작은따옴표 안붙이는데 나머지는 전부 대상 이름 작은따옴표(‘’)안에 넣어줌
- id랑 class 값 넣어주기
// ta이름 대상 : 글자색 녹색 $('#ta').css('color', 'green'); |
- 추가
// ta2이름 대상 : 글자색 오렌지색 $('.ta2').css('color', 'orange'); |
- 추가
- input 태그 추가
- 태그는 같은데 속성값이 다른 건 jQuery로 부를 때 어떻게 할까?
// 태그[속성=값] // input 태그에 type 속성 값이 text 라는 값 : 글자색 검정 $('input[type=text]').css('color', 'black'); |
- 추가
- text는 검정색, 나머지 비밀번호는 위에서 전체 적용했던 거랑 똑같이 빨간색이 나온다
$('input[type=text]').val("텍스트 상자 입력된 값"); |
- 추가
- 이렇게 value 값 지정가능
- body에 table 추가(table 첫번째 행 번호 0번부터 시작)
// 태그 짝수, 홀수, 첫번째, 마지막 등등 대상지정해서 적용가능 // 태그:odd → 홀수,태그:even → 짝수, 태그:first → 첫번째, 태그:last → 마지막 $('tr:odd').css('background', 'yellow'); |
// tr 태그 짝수번째 배경색 pink $('tr:even').css('background', 'pink'); // tr 태그 첫번째 배경색 green $('tr:first').css('background', 'green'); |
- 추가
======== test3.jsp
- body 에 h1 태그 3개 추가
$(document).ready(function(){ // 대상.함수(); // .css( propertyName ) // .css( propertyName, value ) // propertyName Type: String // value Type: String or Number // .css( propertyName, value ) // 값 // .css( propertyName, function ) // 함수 // Function( Integer index, String value ) ⇒ String or Number // .css( properties ) }); |
- property ⇒ 속성값 (ex) color, background ... )
var c = $('h1').css('color'); alert(c); |
- h1의 글자색 검정을 변수 var c 에 담음!
- 출력창 : 검정 rgb(0, 0, 0);
- 이렇게 할 경우 모든 색이 다 바뀜
> function 을 이용하여 하나씩 따로 떼내서 색을 바꿔주고 싶다!
- value 값 자리에 function 넣어주기!
$('h1').css('color', function(index){ alert(index); }); |
- 일단 index 값 출력해보기
- 차례대로 나옴!
- 순서마다 다른 색을 주고싶다!
- 배열을 활용해서 0번째는 red, 1번째는 green, 2번째는 blue 가 나오게 배열 하나 만들어줌
// 배열활용 var a = ['red', 'green', 'blue']; $('h1').css('color', function(index){ // alert(index); alert(a[index]); }); |
- 인덱스 값 대로 색이 잘 출력되는지 확인해보기
return a[index]; |
- 추가
// 배열활용 var a = ['red', 'green', 'blue']; $('h1').css('color', function(index){ // alert(index); // alert(a[index]); return a[index]; }); |
- 최종 코드
- 실행창
$('h1').css('color', 'red').css('background', 'pink'); |
- 추가
- 이렇게 .css 로 여러가지 속성을 추가할 수 있다! 근데 .css 두 번 쓰자나~~ 이걸 properties로 한꺼번에 적는 게 가능하다
$('h1').css({ color:'blue', background:'skyblue' }); |
- 한 번에 쓰기 가능! (properties ⇒ 세미콜론 안적음)
// 속성 color : 'red', 'green', 'blue' // background : 'pink', 'yellow', 'skyblue' var b = ['pink', 'yellow', 'skyblue']; $('h1').css({ color:function(index){ return a[index]; }, background:function(index){ return b[index]; } }); |
======== test4.jsp 만들기
- js2 폴더에서 이미지 가져오기
- body 에 이미지 추가
- 너비 높이 추가
- 화면 실행결과
< .attr() : 속성 바꾸는 함수 >
// 대상.함수() 대상.attr() // .attr( propertyName ) var w = $('img').attr('width'); alert(w); |
- width 값 출력
// 이미지 태그 width 400 변경 // .attr( propertyName, value ) $('img').attr('width', 400); |
- 너비가 400으로 늘어남! (속성 값 변경)
// .attr( propertyName, function ) // width 100 200 300 var a = [100, 200, 300]; $('img').attr('width', function(index){ return a[index]; }); // .attr( properties ) // width 200 height 400 $('img').attr('width', 200).attr('height', 400); $('img').attr({ width: 200, height: 400 }); |
다음시간에는 효과주는 거 할 거
<test4.jsp>
// src "3.jpg" "4.jpg" "5.jpg" // border 10 20 30 var s = ['3.jpg', '4.jpg', '5.jpg']; $('img').attr({ src:function(index){ return s[index]; }, border:function(index){ return (index+1)*10; } }); |
- 추가
- 이미지도 바뀌고 테두리선도 생김!
어떤 대상에 글자를 덮어써서 보여줄 때 (아이디 중복 같은 거!) → html
게시판 같은건 글 추가로 보여줄 때 - append
======== test5.jsp
< .html() : 기존 내용 덮어쓰기 >
- 추가해주기
// .html() var h = $('h1').html(); // ⇒ h1 대상 내용을 가져옴 alert(h); |
// .html( htmlString Type : htmlString ) $('h1').html("html함수"); // => h1 대상 내용을 덮어서 씀 |
- ⇒ 바뀜(내용 덮어쓰기)
// .html( function ) // Type : Function( Integer index, htmlString oldhtml ) ⇒ html $('h1').html(function(index){ // 변수 이름 index라고 해도 되고 i라고 해도 되고 // alert(index); ⇒ 차례로 0, 1, 2 뜸 return index; }); |
- ⇒ 바뀜 (index 값 리턴 받았기 때문)
// Type : Function(Integer index, htmlString oldhtml) ⇒ html $('h1').html(function(index, oldhtml){ alert(oldhtml); // h1태그 대상 기존 내용 가져옴 return oldhtml + index; // 기존 값에 추가로 내용 덮어쓰기 }); |
- ⇒
- 인덱스 값 0, 1, 2 붙어서 나옴
- body 에 div 태그 추가
// div 태그에 "html함수" 글자 넣기 $('div').html("html함수"); |
-
div 태그 내에 글자 생김
// div 태그에 *기존내용* 변경 내용 덮어서 씀 $('div').html(function(index, oldhtml){ return '*' + oldhtml + '*'; }); |
- ⇒ 앞 뒤로 * 붙이기
⇒ 나중에 아이디 중복체크할 때 html() 함수 쓸 거!
======== test6.jsp
< .append() : 기존 내용 뒤에 추가하기 >
// 대상.append() 기존태그 뒷부분 추가 $('body').append("<h2>head2</h2>") |
- 안에 내용은 그대로 유지 하면서 바디 뒷부분에 추가 됨
- ⇒
- body에 div 태그 추가해주기
$('div').append(function(index){ return index; }); |
- 추가
- 인덱스가 뒷부분에 추가됨
- body 안에 이미지 태그 추가
- div로 묶어주고 id 값 im 추가!
// div id="im" 태그에 첫번째 이미지 뒷부분에 추가 $('div#im').append($('img').first()); |
// 반복 setInterval() 시간마다 반복 setInterval(function(){ $('div#im').append($('img').first()); }, 2000); |
- 2000 이 2초라는 뜻!
- 2초마다 움직임
======== test7.jsp
< .each() : 반복함수 >
- 별 기능 없음... 그냥 반복시켜주는 거
- body에 h1 태그 추가
- head 에 스타일 추가
- 이렇게 수동으로 css를 적용하는 방법이 있다
< addCalss() : class 추가 >
$('h1').each(function(index){ // alert(index); $('h1').addClass('high'); ⇒ 추가된 부분 }); |
- 공통적으로 적용됨
- 스타일을 각각 적용시켜주기 위해 전부 색을 다르게 주기
// 1. 대상 태그 $('h1').each(function(index){ // alert(index); $(this).addClass('high_' + index); }); |
- 그 대상은 this 를 사용 ( this 는 작은따옴표 안에 안넣음 )
> 2차원 배열 만들기
$.each(대상, 함수);
대상이 변수기 때문에 $의 괄호 안에 넣지 않고, each 안에 같이 넣어줌.
// 2. 대상 배열변수 var arr = [ {name:'naver',link:'http://www.naver.com'}, {name:'daum',link:'http://www.daum.net'}, {name:'nate',link:'http://www.nate.com'}, {name:'jquery',link:'http://www.jquery.com'} ]; // $.each(대상, 함수); $.each(arr, function(index, item){ // item = 순서에 해당하는 내용 저장 // alert(index); // 0, 1, 2, 3 출력 alert(item.name + item.link); }); |
alert(item); 출력
alert(item.name + item.link); 출력
*json → DB에서 데이터를 가져올 때 데이터 기호 형태
**xml → DB에서 데이터를 가져올 때 데이터 태그 형태
- body에 h2 태그 추가
$.each(arr, function(index, item){ // h2 태그 추가 item.name $('h2').append(item.name); ⇒ 추가된 부분 }); |
- <br>태그 추가하면
- 이렇게 한줄씩 나옴
- 링크까지 추가하고 싶다
- 링크도 나옴
- 하이퍼링크로 적용하고 싶을 때 (문자는 “”안에 넣고, 변수들은 밖으로 나오도록)
- 태그로 나옴!
> 테이블에 넣기….
$.each(arr, function(index, item){ $('table').append("<tr><td>"+item.name+"</td><td>" +item.link+"</td></tr>"); }); |
- 테이블로 만들기
======== js_jQuery2 폴더 만들기 (이제 이벤트 함수들 배워보자!)
======== test1.jsp
이벤트 대상.함수()
- body에 h1 태그 추가
< .bind() >
< .click() >
// h1 대상 클릭했을때 $('h1').bind('click', function(){ alert('클릭'); }); $('h1').click(function(){ alert('클릭2'); }); |
- 클릭했을 때 alert 창 뜬다
$('h1').click(function(){ // 클릭한 대상 내용을 ‘click’으로 변경 $(this).html('click'); }); |
- ⇒
- 클릭했을 경우 이렇게 바뀜
$('h1').bind('click', function(){ alert('클릭'); // 이벤트 한 번만 하고 종료 $(this).unbind();⇒ 이 부분 추가 unbind(); }); |
- 한 번 실행하고 종료!
$('h1').click(function(){ // alert('클릭2'); // 클릭한 대상 내용을 'click' 변경 // $(this).html('click'); // 클릭 대상에 기존내용을 가져와서 "+" 추가 $(this).html(function(index, oldhtml){ return oldhtml + '+'; }); }); |
- append 는 뒤에 추가만 되지만, oldhtml 로 추가하는 건 기존내용을 가지고 와서 덮어쓰기 하는 것
- 클릭하는 만큼 뒤에 ‘+’ 추가됨 ( 앞 쪽에 unbind(); 함수는 주석처리 )
< .mouseover() >
- body 에 이미지 추가하기
// img 대상 마우스오버(mouseover()) 시 // 마우스 오버 한 대상 : 속성(attr()) 값 src = '2.jpg' 로 변경 $('img').mouseover(function(){ $(this).attr('src', '../js_jQuery1/2.jpg'); }); |
- ⇒
- 마우스 오버 했을 때 이미지가 바뀜!
// img 대상 마우스아웃(mouseout()) 시 // 마우스아웃 한 대상 : 속성(attr()) 값 src = '1.jpg' 로 변경 $('img').mouseout(function(){ $(this).attr('src', '../js_jQuery1/1.jpg'); }); |
- 마우스아웃 시 원래 이미지로 돌아감!
// 대상.함수().함수()..... $('img').mouseover(function(){ $(this).attr('src', '../js_jQuery1/2.jpg'); }).mouseout(function(){ $(this).attr('src', '../js_jQuery1/1.jpg'); }); |
- 적용 대상이 같기 때문에 뒤에 바로 붙여줘도됨! (마우스 오버와 마우스 아웃 합침)
======== test2.jsp
- body 부분에 form 태그 추가
// id="myform" 대상으로 submit() 이벤트 발생 // 아이디 메시지 출력 alert(아이디value값) .val() // 비밀번호 메시지 출력 alert(비밀번호value값) .val() $('#myform').submit(function(){ alert($('#myid').val()); alert($('#mypass').val()); }); |
- 입력했을 때
- 입력값 alert 창 뜬다!
// 전송 중지 : 기존 기능 중지 return false; |
- return false 를 통해서 전송중지가 가능
⇒ 이걸 통해서 아이디가 비어있을 경우, 포커스 & 전송중지 제어가능
// 아이디 비어있으면 "아이디입력하세요" 포커스, 전송중지 // 비밀번호 비어있으면 "비밀번호입력하세요" 포커스,전송중지 if(!$('#myid').val()) { alert("아이디를 입력하세요"); $('#myid').focus(); return false; } else if (!$('#mypass').val()) { alert("비밀번호를 입력하세요"); $('#mypass').focus(); return false; } |
'Dev.Program > JSP & Javascript' 카테고리의 다른 글
JSON / EL / JSTL (1) | 2022.10.08 |
---|---|
JQuery - (2) (1) | 2022.10.08 |
게시판 만들기 - (4) (1) | 2022.10.08 |
게시판 만들기 - (3) (1) | 2022.10.08 |
게시판 만들기 - (2) WAR Export / Import (0) | 2022.10.08 |