일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- PARTITION BY
- data preprocessing
- SQL
- Machine Learning
- 원핫인코딩
- SQLD
- Cartesina Product
- sklearn
- 사이킷런
- 레이블 인코딩
- Python
- ML
- 기본
- 머신러닝
- CROSS JOIN
- partition
- django
- 명령어
- Today
- Total
Programming Blog
Step2 24기 3주차 본문
Step2 24기 week3 수업 정리
- 외워야 할 것
- onclick 속성 : onclick="pageSubmit(' ...')">
- JavaScript 함수 사용법
<scrpit>
var pageSubmit = function(menu) {
alert(menu); // == location.href = "main.do";
}
</script>
- 데이터 처리 방식 (쿼리 스트링)
1. get : 보낸 데이터가 주소창에 보이고, 보내는 데 한계가 있다.
2. post : 보낸 데이터가 주소창에 보이지 않고, 보내는 데 한계가 없다.
? 뒤의 문자열을 쿼리 스트링이라고 하고, ? 뒤는 &로 이어주고, 키 = Value 방식으로 전달되며, HttpServletRequest requset는 쿼리스트링만 인자로 받는다.
request.getParameter("..."); : 괄호 안에 키 이름이 들어간다. 그래서 키가 들어가고 value가 빠진다.
- 외워야 할 제이쿼리 메서드 7가지1 $(타겟).click(function(){ })
클릭 이벤트 리스너.
타겟을 클릭하면 익명 함수를 실행한다.
2 $(function(){ })
도큐먼트레디.
문서를 다 읽은 다음에 이 메소드 안에 있는 코드를 읽는다.
3 $(타겟).removeClass("클래스명")
해당 타겟의 클래스를 지워라.
4 $(타겟).addClass("클래스명")
해당 타겟의 클래스에 클래스명을 추가하라.
5 $(타겟).attr("속성명", "속성의 값")
해당 타겟의 태그 안에 속성과 속성의 값을 넣는다.
6 $(타겟).val("값")
해당 타겟의 value 속성에 값을 넣는다. // 다음 수업에 li추가 후 값을 전달하기 위해서 사용함
7 $(타겟).val()
해당 타겟의 value속성에 들어있는 값을 가져온다.
- c:out 작성법
<c:out value='${param.pageName}' />; //배열, forEach에서 많이 나오므로 꼭 숙지!
- 하이라이트 처리 과정
메뉴를 누르면 호출되는 함수를 만들고 호출 함수의 매개변수 값으로 클릭한 a태그의 부모인 li태그의 id를 전달하고,
매개변수 값을 보내기 위해 처리하는 방식은 form태그 생성, input 태그 type=hidden 생성하고 내가 보내고 싶은 데이터를 굳이
사용자가 볼 필요 없기 떄문에 type을 hidden으로 처리하고, input의 value에 매개변수로 받은 값을 넣기 위해
$("#inputid").val(menu); 를 작성하여 input의 value에 값을 넣고 그 후 주소값을 넣기 위해
$("#frm").attr("action", "main.do"); 를 작성하여 form태그의 action속성에 main.do를 넣어주는 메서드를 작성한다.
참고로 action 속성에는 논리적 주소를 넣어야 한다.
그 다음 main.do 라는 논리적 주소를 가진 form태그를 submit하면 메뉴 클릭부터 값 넣기까지 모두 실행되고 컨트롤러로 가게된다.
컨트롤러에서 리턴 하여 main.jsp로 리턴됐지만 도큐먼트 레디로 잡은 것을 pageName이라는 특정 변수에 c:out value='${param.pageName}' /> 시큐어 코딩(보안, 문자열)을 하여 넣어줬다.
그리고 모든 li의 타겟을 잡아 removeClass를 하여 active 클래스를 다 지우고, 맨 처음 클릭한 a태그의 li의 id를 pageName으로 가져와서
그 li태그에만 active 클래스를 addClass 해주면 하이라이트 처리가 된다.
- form태그 전송 방식
li태그 추가 후 form태그와 input태그를 만들고 .val 제이쿼리 메서드를 이용하여
val의 괄호 안에 input 태그의 value에 전달할 값 or 변수를 넣는다.
-
a href 속성은 #으로 주고 onclick 속성에는 미리 선언해둔 JavaScript 함수를 사용하면 해당 a태그를 클릭시 함수를 호출할 수 있게 된다.
-
인라인 이벤트 속성, 인라인 이벤트 모델
-
자바 스크립트에서 함수이름이 없는 함수는 익명 함수라 한다.
-
변수에 함수를 대입한 경우 변수는 완벽히 함수로서 동작한다. 또한 선언한 변수명이 함수명으로 대입된다.
function() { // <- 자바스크립트에서 함수스코프 }
-
하이라이트 기능 : 어떤 메뉴가 클릭 되었는지 알려주는 기능
- 크롬 개발자 도구를 이용해 하이라이트 되어진 엘리먼트의 클래스중 어느 클래스가 하이라이트 보여주는지 찾는다 .
- 타겟 잡아서 하이라이트를 전부 지우고 해당하는 부분만 하이라이트 적용한다.
-
HTML 태그의 id는 1개의 문서에서 유니크한 값이여야 한다.
-
문서란 <HTML>태그 시작 ~ 끝 부분을 말한다.
-
1depth는 아래는 자식, 위는 부모 2depth는 아래는 자손,위는 조상
-
데이터를 전송하는 2가지 방식이 있다.
- get 방식 ?기준으로 오른쪽에 key, value쌍으로 보낸다. ?뒤를 쿼리스트링이라 부른다.
- 쿼리스트링은 GET방식 전송시 논리적 주소/? 뒤에 선언된 변수명=값 구조의 문자열을 뜻한다. '?'로 논리적 주소와 쿼리스트링을 구분하며 쿼리스트링끼리는 '&'로 구분한다.
- get방식
- post방식
-
jquery객체의 click이라는 메서드는 익명함수를 인자로 받는다. target을 클릭하면 익명 함수를 실행해라.
// 클릭이벤트리스너 $("#btn").click(function() { alert("클릭"); });
-
이벤트리스너는 document.ready안에서만 선언 해야 한다.
- 엘리먼트가 없는 로드가 안된 상태에서 타겟팅을 하면 undefined가 뜨기 때문이다.
- document.ready안에 있는 함수 및 변수들은 HTML 요소가 완전히 로드되고 난 후 동작한다.
$(function() { // 여기에 쓰여진 코드는 문서가 로드된후에 실행 됩니다! });
-
한 문서내에 여러개의 document.Ready가 있을수 있고 여러개 있는 경우 타일즈 구성상 위에 부터 실행 되어진다.
-
<li></li> 타겟 잡는법
- <li class="menu"><li> "menu" 클래스를 추가해서 잡는다 ⇒ $(".menu") // 현업에선 절대 사용하지 않는 방법
-
EL태그 ${}, ${param.키} 이전 화면에서 보낸 쿼리스트링의 키와 일치하는 value로 바뀌어서 화면에 전달된다.
-
시큐어코딩 xss공격 방지, 악성코드 역시 스크립트 코드다.
-
EL을 쌍따옴표나 홑따옴표로 감싸고 JSTL의 <c:out value=' '/> 기능을 활용하여야 안전하다. 해당 JSTL을 사용하기 위해서는 jstl의 core 태그라이브러리를 선언해야 한다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> //jstl을 c라는 접두어를 붙혀서 쓰겠다. <script> //value안에 넣어져있는 값은 무조건 문자열로 화면에 전송이 된다. var pageName = "<c:out value='${param.pageName}' />";
</script>
-
form 태그는 어디에나 써도 상관없지만, id는 업무에서 보통 frm이라 쓴다.
-
method에 아무것도 안적을 경우 default로 Get으로 설정된다. action은 논리적 주소를 적는다.
-
input 태그의 name속성은 쿼리스트링의 key역할을 한다.
-
input 태그의 value속성은 쿼리스트링의 value역할을 한다.
-
HttpServeletRequest 는 쿼리스트링만 받을 수 있다.
-
폼태그 안에 input태그는 값을 보내기 위해서쓴다.
-
때문에 폼 태그 submit시 input 태그의 name속성 값을 컨트롤러로 전달하기 위해서는 해당 input태그를 form 태그 안에 넣어야 한다.
-
값을 넘기기 위해 input 태그를 쓰는데 화면에 보여줄 필요가 없다면 type속성을 hidden으로 처리한다.
-
타겟팅한 엘리먼트의 첫번째 인자는 속성, 2번째 인자를 value로 넣는다.
// id가 frm인 element의 action이라는 속성에 main2.do라는 값을 넣겠다! $("#frm").attr("action", "main2.do");
-
$().val("인자") 는 해당 엘리먼트의 value속성에 인자로 들어온 값을 넣는 jquery 메서드다. 하지만 중요한 점은 인자가 있을때와 없을 때 다르게 동작한다.
// id가 pageName인 element에 value를 main2라고 하겠다. $("#pageName").val("main2"); // 하지만 인자가 없는 경우엔 해당 타겟의 value 값을 꺼내와라 $("#hanqValue").val();
질문리스트
- 하이라이트를 처리하기위해 어떤 데이터가 필요하고 어떤 작업이 필요할까요?
- get 방식으로 한글을 보냈는데 이상한 문자가 출력됩니다. 원인은 무엇이고 해결 방법은 무엇인가요? (해결 방법은 여러가지지만 수업에 알려준 방법을 얘기하세요.)
- 하이라이트 기능은 어떻게 만드는 거에요?
- 하이라이트는 어떻게 되는 거에요? (시작 지점은 onclick 부터 설명하면 된다.)
표준코딩
- JS에서는 같다는 표현 할 때 === 3개 써야 표준코딩이다.
- == 와 ===의 차이는 ===는 타입까지 일치해야 true가 나온다. JS는 동적 타입 언어 인데 ==를 사용할 경우 자동으로 type을 바꾸어 비교하기 때문에 의도치 않게 동작 할 수 있어 위험하다.
- HTML에선 대입연산자 사이에 한칸씩 띄어 주지 않는다.
숙제
-
onclick 안보고 치기, onclick에 어떠한 호출함수를 호출하고 거기에다가 파라미터를 던지고 그런다음에 스크립트 쪽에서 어떤 호출함수를 호출했던 간에 var를 써서 익명함수를 담은다음에 alert치는거 다 외우기!
-
else if 문도 다 외워 오기
-
HttpServletRequest 외우기
-
document.ready 외우기 ⇒ $(function() { })
$(function() { // 여기에 쓰여진 코드를 쓰면 문서가 로드 된 후 실행 됩니다. });
-
메트로킹에 하이라이트 기능 추가 단 2뎁스 하이라이트는 하지마라 1뎁스만 표준코딩 맞춰서 해오기! (하이라이트 처리 폼서브밋 방식으로 구현하기)
-
jquery 메서드 6개 .val() .attr() .submit() .click(), removeClass(), addClass() 외우기
-
동영상 촬영 ( 주황색 대시보드 하이라이트 하는거 6분 컷)
'한큐에 자바' 카테고리의 다른 글
Step2 24기 2주차 (0) | 2019.01.21 |
---|---|
Step2 24기 1주차 (0) | 2019.01.21 |