HTML form태그가 전달하는 방식:

 

1) GET방식

- 요청 시 주소에 값(파라미터)을 담아서 전달하는 방식

- 장점 : 캐싱(북마크, 주소복사) 가능

- 단점 : 비밀번호도 주소에 노툴되는 문제 발생

           +주소창 길이는 제한됨(데이터 길이 제한)

==>쿼리스트링 사용 : 주소에 담긴 파라미터를 나타내는 문자열

==>요청 주소 뒤에 ?를 기점으로 시작. + name속성값=value 형태로 작성, 여러개면 &로 붙힘

 

2)POST방식

- 요청 시 HTTP Body에 값을 감아서 전달하는 방식

- 장점 : 값이 주소에 노출되지 않아 보안성이 높음.

          + 데이터 크기 제한 없음.

- 단점 : 캐싱 불가능. 문자 인코딩 처리가 필요

 

[하나의 프로젝트에서 같은 주소 요청을 처리하는 Servlet은 중복 존재할 수 없다]

== 요청 주소당 Servlet은 하나만 가능하고 이 하나에서 GET 과 POST를 둘 다 받게 할 수 있다.

(doget(), dopost() 작성)

 

JSP : HTML에 Java코드를 작성할 수 있는 파일. HTML을 쉽게 Java와 합쳐 작성할 수 있게 도와준 Servlet

---> 한마디로 발전된 Servlet으로 둘이 전혀 다른게 아님

 

JSP의 장점:

1) Servlet보다 쉽다

2) 디자인과 로직이 나눠있을 수 있음

3) 변수의 범위 설정 가능(scope)

 

 

 

 

Servelt 이란?

웹 프로그래밍에서 클라이언트의 요청을 처리하고 그 결과를 다시 응답하는 자바 프로그래밍 기술

== 자바로 구현된 CGI(특별한 라이브러리나 도구가 아닌 별로도 제작된 웹 서버와 프로그램간의 교환 방식)

==코딩으로 웹 브라우저용 출력화면(HTML) 을 만드는 방법

 

-주요 특징

1. 클라이언트의 요총에 대해 동적으로 작동하는 웹 애플리케이션 컴포넌트

== 미리 만들어둔 화면이 아닌 요청을 받을 때 마다 알맞은 화면을 만들어 응답

2. HTML로 응답

3. java thread를 이용하여(요청마다) 동작

4. MVC Model2 패턴에서 Controller로 이용

5. servelt 클래스를 상속받음

(단점 = servlet에서 작성한 html 코드 변경 시 재컴파일 해야함)

 

-작동 방식

1. 사용자가 HTTP Request를 Servlet Container로 전송

2. Request를 받은 Servlet Container 는 두 객체를 생성

(HttpServletRequest)  - 요청 관련 내용 객체 ,  (HttpServletResponse) - 응답 관련 내용 객체

3. web.xml (DD) 은 사용자가 요청한 URL 을 분석하여 어떤 서블릿 클래스에 요청 내용을 전달할 지 찾음

4. 해당 서블릿에서 init() 메서드를 호출 후 service() 메서드를 호출하여 클라이언트로부터 전송받은 방식에 따라

 GET / POST 여부로 메서드 호출

5. doGet / doPost 메서드는 동적 페이지 생성 후 HttpServletResponse객체에 응답을 보냄

6. 응답이 끝나면 destroy 메서드를 호출하여 HttpServletRequest HttpServletResponse 객체 소멸

 

 

 

 

<jQuery 선택자>

jQuery 선택자 : $("선택자") 의 형태로 선택자 작성 방법은 CSS를 따른다

ex) $("#id")

 

1) 태그 선택자

[JS] = document.getElementByTagName("태그명")

[jQuery] = $("태그명")

 

2) 클래스 선택자

[JS] = document.getElementByClassName("클래스명")

[jQuery] = $(".클래스명")

 

3) 아이디 선택자

[JS] = document.getElementBy("태그명")

[jQuery] = $("#아이디명")

 

%% JS와 다른 사용법  %%

// $(요소).on("이벤트", 이벤트 핸들러) : 지정된 요소에 이벤트 리스너를 추가
    // == JS 의 요소.addEventListener() 와 같은 동작
    // 단 요소 선택 방법에 차이가 있음.

 $("#input1").on("input", function(){
 	const input = $(this).val();
    //JS 는 this.value
    $(this).text("인풋");
    //JS는 this.innerText = "인풋";
    $(this).css("backgroundColor", "red");
    //JS는 this.style.background-color = "red";
    
    
 });

4) 자손, 후손 선택자

 $("선택자")

 

5) 입력 양식 필터 선택자

 $("input:타입명")  --> input 태그 전용 선택자 ( text, checkbox, file ) 

 $("input[type="타입명"]") --> 기본 속성 선택자

 

6) 순서에 따른 필터 선택자

odd / even : 홀수 짝수 

$("선택자 : odd")

 

first / last 첫, 마지막

$("선택자 : first")

 

<순환 탐색 메소드>

1. 조상 탐색 메소드

$("선택자").parent 

-선택된 요소의 바로 위 상위 요소(현재 요스를 감싸고 있는 요소)

$("선택자").parents([매개변수])

-모든 상위 요소 중 매개변수 반환 ( 없으면 전부)

$("선택자").parentUntil(매개변수)

-모든 상위요소 중 매개변수까지 (매개변수 필수)

 

2. 자손 탐색 메소드

$("선택자").child

-선택된 요소의 바로 위 상위 요소(현재 요스를 감싸고 있는 요소)

$("선택자").children([매개변수])

-모든 자손요소 중 매개변수 반환 ( 없으면 전부)

$("선택자").find(매개변수)

-모든 자손요소 중 매개변수  (매개변수 필수)

 

3. Sideways 탐색 메소드

$("선택자").siblings([매개변수])

-선택된 요소의 모든 형제(같은 레벨 위치)

$("선택자").next();

-선택된 요소의 다음 형제 요소 (1개)

$("선택자").nextAll();

-선택된 요소의 다음 모든 형제 요소를 반환

$("선택자").prev();

-선택된 요소의 이전 형제 요소 (1개) 를 반환

$("선택자").prevAll();

-선택된 요소의 이전 모든요소

$("선택자").prevUntil(매개변수)

-선택된 요소 이전 모든 요소 중 매매변수 요소 전까지

.is(매개변수) - 지정된 범위 내에 매개변수와 일치하는 요소가 있는지 확인

-있으면 true 없으면 false

 

 

 

'개발자로 업그레이드 되자 > jQuery' 카테고리의 다른 글

jQuery 정리 (1)  (0) 2021.11.16

jQuery? 

기존에 복잡했던 클라이언트 측 HTML 스크립팅(JS)을 간소화 하기 위해 고안된 JS 라이브러리

적은양의 코드로 많은 기능을 제공한다

(다만 라이브러리를 사용하므로 속도가 느려질 수 있다)

 

<연결방법>

1. 다운로드 받아 직접 연결

2. CDN 을 이용한 연결 (링크로)

head나 body 끝부분에 <script src=""></script>태그를 통해서 연결한다

 

<HTML의 해석 순서와 window.onload, ready() 함수의 차이점>HTML 문서는 위에서 아래로 순서대로 해석된다(아랫쪽에 작성된 미해석 코드는 위쪽에서 사용이 불가능하다) -> 이를 가능하게 해주는 바로실행 함수 : window.onload( JS) , ready() (jQuery)-> 차이점 : window.onload는 페이지 내에서 딱 한번만 작성 가능( 중복 시 마지막 내용이 적용됨)->            ready() 함수는 여러번 작성 가능

 

[ready() 함수의 작성방법]

1. jQuery(document).ready(function(){ 코드; });

2. $(document).ready(function(){ 코드; });

3. $(function(){코드; });

 

 

 

 

'개발자로 업그레이드 되자 > jQuery' 카테고리의 다른 글

jQuery 정리 (2)  (0) 2021.11.16

-정규 표현식-

->특정한 규칙을 가지는 문자열의 집합을 표현하는데 사용하는 언어

->정규 표현식을 사용하면 입력된 문자열에 대한 특정 조건 검색, 일치 여부, 치환에 대한 조건문을 간단히 처리할 수 있다

 

-정규표현식 객체 생성 및 확인 메소드

1. 객체 생성 방법

1) const regExp = new RedExp('정규표현식');

2) const regExp /정규표현식/;

 

2. 문자열 패턴 일치 여부 확인 메소드

- regExp.test(문자열) : 정규표현식과 일치하는 패턴이면 true 아니면 false

- regExp.exec(문자열) : 문자열에서 정규표현식과 일치하는 패턴이 있는 경우 처음 매칭되는 문자열을 반환(없으면 null)

 

3. 정규 표현식의 메타문자

- 문자열의 패턴을 나타내는 특수문자

- 특수문자마다 지정된 특별한 뜻이 담겨있다.

^(캐럿) : 문자열의 시작 /^g/

$(달러) : 문자열의 끝 /g$/

{숫자} : 반복 수 /^[b][a]{3,5}/

*  : 0개 이상 반복

+ : 1개 이상 반복

? : 0개 또는 1개만 있음

. : 개행문자를 제외한 모든 단일 문자 한칸 /^j.*t$/

\w : 아무 단어나 존재

\d : 0~9 사이의 글자

\s : 공백 문자

a-z / A_Z : 알파벳 모두 중

ㄱ-힣 : 한글 모두 중

\_ : '_' 문자 자체를 나타내는 이스케이프 문자

 

 

 

 

 

 

 

 

 

 

 

 

 

<참고 사이트>

1.https://regexper.com

 

Regexper

 

regexper.com

2.https://regexr.com

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

3.https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/%EC%A0%95%EA%B7%9C%EC%8B%9D

 

정규 표현식 - JavaScript | MDN

정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴입니다. 자바스크립트에서, 정규 표현식 또한 객체입니다.  이 패턴들은 RegExp의 exec 메소드와 test 메소드  ,

developer.mozilla.org

 

 

-자바스크립트의 함수-

1) 익명함수 : 이름이 없는 함수이기 때문에 마음대로 호출이 불가능

2) 즉시 실행함수 : 익명함수의 한 종류로 정의되자마자 바로 실행

[쓰는 이유 : 호출부가 없으므로 일반 함수보다 속도적 우위 , 사용하려는 변수명이 전역변수인 경우 내부 지역변수 사용으로 문제 해결 가능]

3) 화살표 실행 : 익명 함수 표기법을 간단하게

[작성법1] : (매개변수) -> {함수 정의}

[작성법2] : 매개변수 하나인경우 e => {}

[작성법3] : 매개변수가 없을경우 무조건 () => {}

[작성법4] : 함수 정의 부분이 return + a 로만 작성된 경우 ()=>a

[작성법5] : 함수 정의 부분에 return + 객체(object) 인 경우 ()=>{ return object} 전부 작성

 

 

 

 

 

 

 

DOM : Document Object Model

->HTML(웹문서, 웹페이지 ) 문서를 객체 기반으로 표현한 것

 

        childNodes : 자식 노드 리스트

        parentNode : 부모 노드

        firstChild : 첫 번째 자식 노드

        lastChild : 마지막 자식 노드

        childNodes[index]: index 번째 노드

 

        previousSibling : 이전 형제 노드

        nextSibling : 다음 형제 노드

 

Node와 Element의 차이

    Node : 태그, 속성 , 주석, 내용 등을 모두 노드라고 표현함.

    Element : Node의 하위개념으로 요소 노드만들 가리킨다.

 

Element만 선택하는 방법

        children: 자식 요소만 선택

        parentElement : 부모 요소 선택

        firstElementChild: 첫 번째 자식 요소 반환(없으면 null)

        lastElementChild: 마지막 자식

 

자바스크립트의 객체

자바스크립트의 객체는 {}내에 Key Value가 모여있는 형태로 작성된다

        (Map 형식)

        {k:v , k:v , k:v}

-객체생성방법

        1) {} (객체 리터럴 표기법)을 이용한 생성 방법

        2) 생성자 함수 + new 연산자를 이용한 생성 방법

// {}객체 리터럴 표기법을 이용한 객체 생성

const brand ="투썸";

const product ={
        pName : "텀블러",
        brand : "스타벅스",
        color : ["white", "black","silver"],
        amount : 100,
        mix : function(add){alert(add+"를 자동으로 섞어줍니다.")},
        // 기능(메서드임)
        information : function(){console.log(brand);},
        //객체 안에서 brand를 호출하지만 객체 밖의 brand가 호출된다
        information2 : function(){console.log(this.brand);}
        // 객체 안의 brand는 this를 붙혀야 함
    };
    
    
     //생성자 함수
    //1. 생성자 함수 정의
    //**생성자 함수의 함수명은 반드시 대분자로 시작한다! */
    
     function Student(name, age, java, db, html, css){
        //매개변수로 전달받은 값을 생성되는 객체의 속성에 대입하기
        // 여기서 this == 생성될 객체 / this.name속성에 넣고 없으면 속성 생성
        this.name = name;
        this.age = Number(age);
        this.java = Number(java);
        this.db = Number(db);
        this.html = Number(html);
        this.css= Number(css);

        //평균 점수 반환(소수점 둘째 자리까지 표시)
        this.getAvg = function(){
            const sum =  this.java+ this.db  + this.html+  this.css
            const avg = sum/4;
            // 숫자.toFixed(자릿수) : 소수점 자리수를 지정하는 함수
            //지정된 자릿수 밑에서 반올림처리
            
            return avg.toFixed(2);
        }//this : 현재 객체가 가지고있는 속성의 값
        
    }

내장객체

date 객체 : 날짜 관련 객체

document.getElementById("btn1").addEventListener("click",function(){

    const date1 = new Date();

    //GMT
    const date2 = new Date("Mon Nov 08 2021 16:33:50");

    console.log(date1);
    console.log(date2);

    //UTC
    const date3 = new Date(2021, 11,8,9,0,0);
    console.log(date3);

    //Date객체에서 년 월 일 시 분 초 요일 얻어오기
    console.log("년도 : " + date1.getFullYear());
    // 월은 0~11로 표현되므로 1 더해줘야 표현됨
    console.log("월 : " + (date1.getMonth()+1));
    console.log("일 : " + date1.getDate());

    //일요일== 0 ~ 토요일==6
    const arr =["일","월","화","수","목","금","토",];
    //index로 요일 지정 가능
    
    console.log("요일 : " + date1.getDay());
    console.log("시 : " + date1.getHours() );
    console.log("분 : " + date1.getMinutes() );
    console.log("초 : " + date1.getSeconds());
})

windows 객체 : 브라우저 창 자체를 나타내는 객체

-window 객체는 창 자체를 나타내고 있으므로 어디서든 접근이 가능하다

-그래서 window라는 객체 호출부를 생략할 수 있다.

(window.alert() == alert())

 

-window.setTimeout(함수, 지연시간(ms))

지정된 지연 시간마다 함수가 반복 수행됨

 

-window.setInterval(함수, 지연시간)

지정된 지연 시간마다 함수가 반복 수행됨

->setInterval은 중복되서 사용될수 있기 때문에 여러번 호출되지 못하게 처리가 필요함

 

 

 

<script> 태그는 head태그 , body 태그 두 곳 다 선언 가능하다

-head 태그에 선언하는 경우 : 페이지 로딩 시에 실행되어야 하는 script -> 가벼운 것들(무거우면 렌더링 딜레이 발생)

-body 태그에 선언하는 경우 : 나머지 경우의 script 

 

JS의 이벤트

-이벤트(Event) : 동작 , 행위 ( 클릭, 마우스오버, 키다운 , 키업 ..)

-이벤트리스너(Event Listener) : 동작, 행위를 감지해 발생 시 연결된 기능을 수행

 ==> on+행위 로 부름 (onclick ~ , onmouseover~ )

-이벤트 핸들러(Event Handler) : 이벤트 리스너에 연결된 기능(함수) , 이벤트 발생 시 수행하고자 하는 내용

 

--이벤트의 작성--

1. 인라인 이벤트 모델 : HTML 태그에 직접 이벤트(이벤트 리스너 + 핸들러) 를 작성

-> on이벤트명 = 함수명();

  <button onclick="test1()">테스트</button>
--------------------------------------------------------
function test1(){

    alert("인라인 이벤트 모델 방식입니다.");

}

2. 고전 이벤트 모델 -> 요소가 가지고있는 이벤트 속성에 이벤트 핸들러를 연결하는 방법으로 인라인 모델과 다르게                                   script로만 작성 할 수 있음

  <button id="test2">고전이벤트모델</button>
  ----------------------------------------------------
  const btn1 = document.getElementById("test2");


    // 요소.이벤트리스너 = 이벤트 핸들러(함수)
    btn1.onclick=function(){
        alert("고전 이벤트 모델 방식입니다");
    }

 

3. 표준 이벤트 모델(addEventListener("이벤트명" , 이벤트 핸들러(함수)) )

-W3C 에서 공식적으로 지정한 이벤트 모델 표준

-고전 이벤트의 단점인 하나의 리스너에 하나의 핸들러만 설정할 수 있는 것을 보완

-IE9 버전부터만 사용 가능

 

<button id="input-btn">입력</button>
------------------------------------------------------
document.getElementById("input-btn").addEventListener("click" , function(){
    this.style.backgroundColor="orange";
})

변수 선언 위치에 따른 구분

'-자바의 인스턴스 변수, 클래스 변쉬, 지역변수와 다름

 

-자바스크립트 -  (변수 선언 : var const let)

*****

var 변수명 : 전역변수 -> 같은 문서 내 선언된 이후부터 어디서든 사용 가능

변수명 = var 변수명;

function 함수명(){

  var 변수명 : function 내에서 유효한 지역변수

  if(조건식){

     var 변수명 : if문 안에서 쓰였어도 var 변수명 ->  if문 지역변수가 아닌 function지역변수로 인식됨

     const , let은 if문 지역변수

     (var 변수는 변수명이 중복 가능하고 새로운 값으로 덮어씀, const let은 중복이 불가능하다)

  ]

 

 

*****var 변수 형식은 전역 또는 function 지역변수만을 범위로 갖는다!

 

-자바스크립트의 자료형-

자바스크립트는 변수 선언 시 별도의 자료형을 지정하지 않음.

-> 변수에 대입되는 값(리터럴)에 따라 변수의 자료형이 결정됨

 

-string(문자+문자열) , number(정수+실수) , boolean , object ,function(변수에  이름없는 함수 지정 가능) ,  undefined

 

 

-JS 데이터입출력-

innerText, innerHTML 을 이용한 요소 내용 입출력

 

1) innerText : 요소에 작성된 내용을 읽거나 변경할 때 innerText 속성을 사용한다

 

2) innerHTML : innerText와 다르게 요소에 작성된 내용 + 태그 + 속성을 모두 읽어 사용한다

 

<button onclick="check1();">innerText 확인하기</button>
<button onclick="check2();">innerHTML 확인하기</button>

<script>
	function check1(){
    	const area1 = document.getElementById("area1");
        
        const input = prompt("내용을 입력해주세요");
        area1.innerText = input;
    {
    finction check2(){
    	const area1 = document.getElementById("area1");
        
        area1.innerHTML = "<input type='text' size = '20'> innerHTML로 태그넣기";
      }
 </script>

-JS에서 HTML 요소를 접근하는 방법

1. id로 요소 접근하기 : document.getElementById("id 속성값")

--> id가 일치하는 요소 하나만 얻어옴

2. class로 요소 접근하기 : document.getElementByClassName("class 속성값")

-->class가 일치하는 모든 요소 얻어와 배열로 반환

3. tag로 요소 접근하기 : document.getElementByTagName("태그명")

-->tag가 일치하는 요소를 모두 얻어와 배열로 반환

4. name으로 요소 접근하기 : document.getElementByname("name 속성값")

-->name이 일치하는 모든 요소 얻어와 배열로 반환

5. CSS선택자를 이용하여 요소 접근하기 : 

-->1) document.querySelector("css 선택자") : 여러 요소가 선택된 경우 첫 번째 요소만을 얻어옴

-->2) document.querySeletorAll("css 선택자") : 선택된 요소 전부를 얻어옴

 

1. 스크립트 언어란?

-응용 프로그램의 동작을 사용자의 요구에 맞게 수행되도록 제어하는 용도의 언어

-별도로 소스코드의 컴파일을 진행하지 않고 인터프리터를 이용하여 소스토드를 한 줄씩 읽어 바로실행

 

2. 자바스크립트(JS) 란?

-웹 브라우저에서 많이 사용하는 인터프리터 방식의 객체지향 프로그래밍 언어

-ECMA Script 표준을 따르는 대표적인 웹 기술

-JS는 우리가 알고있는 프로그래밍 언어 기본규칙과 다른경우가 많다

(자료형, 전역변수, 명령어등)

 

3. JS 작성방식

-1. inline 방식 : 태그에 직접 간단한 코드를 작성하여 실행하는 방법

 <button onclick="alert('알림창');">경고창(알림창) 출력! </button>

-2. internal 방식 : HTML 문서 내부에 script 태그를 선언하여 JS코드를 작성하는 방식

                       head, body 태그에 작성할 수 있다.

*함수 -> 선언 정의 호출 3가지로 만듦

function 함수명(매개변수) { }

<button onclick="add(10,20);">더하기 버튼</button>
<script>
	function add(num1, num2){
    	alert("두 수의 합: " + (num1+num2));
    }
</script>

-3. external(외부) 방식 : 외부에 별도로 자바스크립트 코드만을 작성하는 파일을 연결

<script src="js파일 위치"><script>

 

1. 2차원 변형

transform :

translateX(50px); / translateY / translate( 50px, 50px )

--> 좌우 / 상하 / 대각선 움직임

 

rotate(180deg);

--> 시계방향으로 회전시키기

 

2. 3차원 변형

transform : 

perspective(300px)

--> 원근법 적용

 

perspective rotateX / perspective rotateY / perspective rotateZ

--> X축 회전 / Y축 회전 / Z축 회전

 

perspective(300px) rotate3d(0.5,0.5,0.5,45deg)

--> 전부 회전

 

3. 시간지연

transition-duration : 2s;

-->변형이 2초동안 진행됨

 

 

+ Recent posts