반응형

테이블에 있는 list를 ajax통신을 통해 java로 넘기기 list<Map<String, Object>> 형식

 

 

데이터 형태

{codeArrObj=[
{"newcode":"0001","newcodename":"A 1","codetype":"acode","beforecode":"0001"},
{"newcode":"0002","newcodename":"B","codetype":"acode","beforecode":"0002"},
{"newcode":"0003","newcodename":"C","codetype":"acode","beforecode":"0003"},
{"newcode":"0004","newcodename":"D","codetype":"acode","beforecode":"0004"},
{"newcode":"9999","newcodename":"1234","codetype":"acode","beforecode":"9999"}]
}

 

html 코드 input 값에 있는 여러개의 행 데이터를 java로 넘겨서 update 또는 insert 하고 싶다. 

id name속성이 없어도됨

<input type="hidden" id="codeType" name="codeType" value="${Code[0].codetype}"/>
<table class="table table-striped jambo_table bulk_action" id="codeList_table">
    <thead>
        <tr class="headings">
            <th class="column-title">코드</th>
            <th class="column-title">코드 명</th>
        </tr>
    </thead>
    <tbody>
        <c:forEach var="item" items="${Code}" varStatus="status">
            <tr>
                <td>
                    <input type="text" value="${item.code}" />
                </td>
                <td>
                    <input type="text" value="${item.codename}"/>
                    <input type="hidden" value="${item.code}"/>
                </td>
            </tr>
        </c:forEach>
    </tbody>
</table>

 

javascript 소스 (jQuery)

// ajax controller 매핑용 url을 변수에 담음
var l_url = "/admin/saveCodeAjax.do";
// array 변수 초기화
var codeArr = [];
// object 변수 초기화
var dataObj={};

//원하는 데이터의 형태
/*	
*	{codeArrObj=[
*		{"newcode":"0001","newcodename":"A 경로당 ","codetype":"agencycode","beforecode":"0001"},
*		{"newcode":"0002","newcodename":"B 경로당","codetype":"agencycode","beforecode":"0002"},
*		{"newcode":"0003","newcodename":"C 경로당","codetype":"agencycode","beforecode":"0003"},
*		{"newcode":"0004","newcodename":"D 경로당","codetype":"agencycode","beforecode":"0004"},
*		{"newcode":"9999","newcodename":"1234","codetype":"agencycode","beforecode":"9999"}]
*	}
*/

// for문으로 데이터 생성
for (var i = 0 ; i < $("#codeList_table tbody tr").length; i++){
    // 행 별로 첫번째 input 값을 찾아서 newcode로 초기화 
    var newcode = $("#codeList_table tbody tr").eq(i).children().children().eq(0).val();
    // 행 별로 두번째 input 값을 찾아서 newcode로 초기화 
    var newcodename = $("#codeList_table tbody tr").eq(i).children().children().eq(1).val();
    // 행 별로 세번째 input 값을 찾아서 newcode로 초기화 
    var beforecode = $("#codeList_table tbody tr").eq(i).children().children().eq(2).val();

    // object에 newcode라는 key로 newcode 값 바인딩
    dataObj.newcode = newcode;
    // object에 newcodename라는 key로 newcodename 값 바인딩
    dataObj.newcodename= newcodename;
    // object에 codetype라는 key로 codetype 값 바인딩
    dataObj.codetype= $("#codeType").val();
    // object에 beforecode라는 key로 beforecode 값 바인딩
    dataObj.beforecode= beforecode;

    // array에 object push
    codeArr.push(dataObj);

    // push 후 초기화 해주지 않으면 같은 object로 loop 만큼 push됨 
    dataObj ={};
}

// ajax controller에서 처리할 파라미터를 변수에 담음(json형태)
var jsonData = JSON.stringify(codeArr);

$.ajax({
    url        : l_url,
    type       : "POST",
    dataType   : 'json',
    data       : {codeArrObj : jsonData},
    success    : function(p_resultvalue) {
        $(".evaluation_data").attr('disabled', true);
        alert(p_resultvalue.result_msg);
    }
});

 

java 코드

// 코드 저장하기
@Override
public int saveCodeAjax(HashMap<String, Object> commandMap) throws Exception {
    // codeArrObj를 JSONarray 타입으로 형변환 
    JSONArray array = JSONArray.fromObject(commandMap.get("codeArrObj"));

    // 모든 코드의 결과 값 저장을 위한 초기화
    int[] results= new int[array.size()];

    // 최종 결과값 (정상 저장 될 경우 1로 리턴)
    int result=1;

    // JSONarray타입에 저장된 값 처리
    for(int i=0; i<array.size(); i++){
        // array 안의 값을 object로 세팅
        JSONObject obj = (JSONObject)array.get(i);

        // mybatis에 파라미터로 넘겨줄 map 타입 초기화
        Map<String, Object> resendMap = new HashMap<String, Object>();

        // object의 이전코드명을 파라미터로 세팅(update 해야할 경우를 위해 필요)
        resendMap.put("beforecode", obj.get("beforecode"));
        // object의 코드타입을 파라미터로 세팅(어떤 코드 저장인지 파악을 위해 필요)
        resendMap.put("codetype", obj.get("codetype"));
        // object의 신규코드를 파라미터로 세팅(코드 저장을 위해 세팅)
        resendMap.put("newcode", obj.get("newcode"));
        // object의 신규코드명을 파라미터로 세팅(코드 저장을 위해 세팅)
        resendMap.put("newcodename", obj.get("newcodename"));


        results[i] = DAO.insertCode(resendMap);

        // for문 내부에서 한 코드 업데이트, 인서트가 발생했을경우 
        // 한 건이라도 실패(0)가 나오면 결과값은 0이 됨 
        result *= results[i];
    }

    return result;
}

 

 

반응형
반응형

HTML

<form id="form" method="post">
    <input type="text" id="no" name="no"/>
    <input type="text" id="date" name="date"/>
    <input type="hidden" id="arrayParam" name="arrayParam"/>
    <c:forEach var="item" items="${codeList}">
         <input type="checkbox" name="chk_code" value="${item.code}"> 
         ${item.codename}
    </c:forEach>
</form>
																

 

JQuery

var array = new Array(); // 배열 선언
$('input:checkbox[name=chk_code]:checked').each(function() { // 체크된 체크박스의 value 값을 가지고 온다.
    array.push(this.value);
});
			
$("#arrayParam").val(array);
	
$("#form").attr("action", "/test/test.do");  
$("#form").submit();

 

JAVA (Spring 프레임워크 기반)

@RequestMapping(value = "/test/test.do")
    public String test(@RequestParam HashMap<String, Object> commandMap) throws Exception {
        String[] code_array = null;
		 
        String code = commandMap.get("arrayParam").toString();
        code_array = code.split(",");		
		
        int[] results= new int[code_array.length];
        int result=1;
		
        for(int i=0; i < code_array.length; i++){
            HashMap<String, Object> resendMap = new HashMap<String, Object>();
	        
            resendMap.put("code", code_array[i]);
            resendMap.put("no", commandMap.get("no"));
            resendMap.put("date", commandMap.get("date"));
	        
            results[i] = testDAO.addTestCode(resendMap);
            
            result *= results[i];
        }
        
        return test/result;
    }
반응형
반응형
<c:forEach var="item" items="${list}">
	<input type="checkbox" name="code" value="${item.code}"
		<c:forEach var="myInfo" items="${myInfo}">
			<c:if test="${item.code eq myInfo.code}">
				checked
			</c:if>
		</c:forEach>
	> ${item.codename}
</c:forEach>

 

반응형
반응형

google traslate 구버전에서 자동 번역 기능 추가 하는 방법

<div id="google_translate_element">
</div>
<script>
function googleTranslateElementInit() {
new google.translate.TranslateElement({
pageLanguage: 'en',
includedLanguages: 'zh-CN,nl,en,fr,de,ja,ko,es,th,cy',
autoDisplay: false,
layout: google.translate.TranslateElement.InlineLayout.HORIZONTAL
}, 'google_translate_element');
}
</script>

현재 상황 
  • 예전에 무료로 사용했던 웹에 붙이는 google번역기가 유료로 전환하며 무료서비스는 종료
  • 더이상 기능 개선이 안되고 레퍼런스를 찾아보기 힘듦

기능 수정 요청
  • 특정 URL접속 시 자동으로 번역되도록 수정 요청

이슈
  • google.translate객체 생성 시 autoDisplay : true, 로 변경하면 자동으로 변경이 될것을 기대했지만 변경되지 않음.
  • https://ooz.co.kr/154 참조


해결 방안
  • Google 번역은 'googtrans'라는 쿠키를 사용하여 선택한 언어를 추적함.
  • 페이지가 로드되기 전에 쿠키를 직접 설정할 수 있으며 Google 번역에서 cookie를 바라봄
  • https://stackoverflow.com/questions/1773687/google-translate-set-default-language 참조
  • 소스
window.onload = function(){
     var l_from_domain = $("#from_domain").val();
     if (l_from_domain=="cn"){
           document.cookie="googtrans=/en/zh-CN";
     }
     
     // 영어(기본), 중국어(번체), 중국어(간체),스페인어, 포르투갈어, 일본어, 러시아어
     new google.translate.TranslateElement({
            pageLanguage: "en",
            includedLanguages: "en,zh-CN,zh-TW,es,pt,ja,ru",
            layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
            autoDisplay: true
            , multilanguagePage: true
        }, l_google_id);
};












반응형
반응형

ajax 통신 중 success : 옵션 실행중 for문안에서
다시 ajax 통신으로 값을 받아올 필요가 있어 소스를 짰는데
결과 값이 원하는대로 출력되지 않았다.
디버깅 해보니 for문안에 ajax를 먼저 호출하기도하고 프로그램이 꼬인상태

ajax 옵션에서  
    async: false,
를 주면  success 옵션이 끝나지 않아도 ajax를 호출할수있게 비동기 처리함.

예제
$.ajax({
    url : '/ajaxtest1.do',
    data : { 'arr_no' : l_arr_no},
    dataType : 'text',
    async: false,
    type : 'POST',
    success : function(l_resultvalue) {
        var l_result_value = eval('(' + l_resultvalue + ')');
        if(l_result_value.resultcode > 0) {  
              
            $.ajax({
                    url : '/ajaxtest2.do',
                    dataType : 'text',
                    type : 'POST',
                    data : {'code' : code},
                    async: false,
                    success : function(l_resultvalue) {
                                var l_result_value = eval('(' + l_resultvalue + ')');
                                if(l_result_value.resultcode > 0) {
                                      alert("성공");
                                }

                    }
              });
        }
    }
});

반응형
반응형

웹 접근성 점검 규칙

가) 대체 택스트 제공

① <img>태그의 alt 속성 제공 여부 - alt 속성의 정확성은 판단하지 않음 

- alt 속성이 없고 longdesc도 제공하지 않으면 불합격 

- alt 속성을 제공하면 합격으로 평가 예를 들어, 속성으로 null 값을 제공(alt="")하더라도 합격, 부적합한 속성 값을 제공(alt= "....")하더라도 합격 


② <area>태그의 alt 속성 제공 여부 - alt 속성의 정확성은 판단하지 않음 

- alt 속성이 없고 longdesc도 제공하지 않으면 불합격 예를 들어, 속성으로 null 값을 제공(alt="")하더라도 합격, 부적합한 속성 값을 제공(alt= "....")하더라도 합격 


③ <input> type="image" 태그의 alt 속성 제공 여부 - alt 속성의 정확성은 판단하지 않음 

- alt 속성이 없고 longdesc도 제공하지 않으면 불합격 예를 들어, 속성으로 null 값을 제공(alt="")하더라도 합격, 부적합한 속성 값을 제공(alt= "....")하더라도 합격 


④ <applet> 태그의 alt 속성 제공 여부 - alt 속성의 정확성은 판단하지 않음 

- alt 속성이 없고 longdesc도 제공하지 않으면 불합격 예를 들어, 속성으로 null 값을 제공(alt="")하더라도 합격, 부적합한 속성 값을 제공(alt= "....")하더라도 합격




나) 제목제공

① 웹문서의 <title>태그의 '유효한 값'의 제공 여부 

- 문서에 <title> 태그가 없으면 불합격 

- 문서에 <title> 태그가 있으나 값이 null("")이거나 white space(\n, \r, \t, " " 등)이면 불합격 

※ 여기서 유효한 값이란 공백문자가 아닌 한영문 문자열을 제공해야 한다는 의미입니다. 


② <frame>태그의 title 속성 제공 여부 - title 속성의 정확성은 판단하지 않음 

- <frame> 태그에 title 속성 제공 안 하면 불합격 

- <frame> 태그에 title 속성 있으나 값이 null("")이거나 white space(\n, \r, \t, " " 등)이면 불합격 


③ <iframe>태그의 title 속성 제공 여부 - title 속성의 정확성은 판단하지 않음 

- <iframe> 태그에 title 속성 제공 안 하면 불합격 

- <iframe> 태그에 title 속성 있으나 값이 null("")이거나 white space(\n, \r, \t, " " 등)이면 불합격 




다) 기본언어정의

① <html> 태그의 lang 속성을 제공 여부 

- <html> 태그에 lang 속성 제공 안하면 불합격 

- lang 속성을 제공하더라도 속성값이 ISO 표준에서 정의한 언어 또는 확장 언어가 아니면 불합격 

※ K-WAH4.4에서는 'EN-US'와 같이 기본 언어를 확장한 언어 규칙에 대응하도록 개선하였습니다. 따라서 K-WAH4.4은 기존 버전보다 더 정확한 기본언어 평가가 가능합니다. 아울러 오류 유형을 확장하여 '기본언어 미제공'과 제공하는 기본언어 코드가 잘못된 경우를 의미하는 '기본언어 오류'로 세분화하였습니다. 


② DTD 형식에 따른 기본 언어 제공 방법을 평가 

- html 4.01/html5 

<html> 태그에 lang 속성을 제공하지 않으면 불합격(기본언어 미제공) 

lang 속성을 제공하지만 속성값이 ISO 표준에서 정의한 언어 또는 확장언어가 아니면 불합격(기본언어 오류) 

- xhtml 1.0/xhtml 1.1 

<html> 태그에 lang 속성과 xml:lang 속성을 둘 다 제공하지 않으면 불합격(기본언어 미제공) 

lang 또는 xml:lang 속성을 제공하지만 속성값이 ISO 표준에서 정의한언어 또는 확장언어가 아니면 불합격(기본언어 오류) 




라) 새창열림 사전공지

① <a> 태그를 이용한 새창 열기시에 사전 경고 제공 여부 

- <a> 태그에서 target 없으면 합격 

- <a> 태그에서 target="_blank" 이면 합격 

- <a> 태그에서 target="_self" 이면 합격 

- <a> 태그에서 target="_top" 이면 합격 

- <a> 태그에서 target="_parent" 이면 합격 

- <a> 태그에서 target="프레임명" 이면 합격 

이 외의 경우에 

- title 속성이 "창", "윈도", "window" 등의 문자열을 포함하고 있으면 합격 

- 링크텍스트가 "창", "윈도", "window" 등의 문자열을 포함하고 있으면 합격 

- <a> ... <img alt=" ">... </a>와 같이 <a> 로 둘러쌓인 이미지 태그의 alt 속성이 "창","윈도","window" 등의 문자열을 포함하고 있으면 합격 

- 이외에는 불합격 

- onclick = window.open( ) 과 같은 소스 코드를 사용하는 경우 winodw.open( )의 파라메터가 "_blank", "_self", "_parent", "_top" 중의 하나를 포함하고 있으면 합격 


② <area> 태그를 이용한 새창 열기시에 사전 경고 제공 여부 

- <area> 태그의 target 없으면 합격 

- <area> 태그의 target="_blank" 이면 합격 

- <area> 태그의 target="_self" 이면 합격 

- <area> 태그의 target="_top" 이면 합격 

- <area> 태그의 target="_parent" 이면 합격 

- <area> 태그의 target="프레임명" 이면 합격 

이 외의 경우에 

- title 속성이 "창","윈도","window" 등의 문자열을 포함하고 있으면 합격 

- alt 속성이 "창","윈도","window" 등의 문자열을 포함하고 있으면 합격 

- 이외의 경우는 불합격 

- onclick = window.open( ) 있을 때 winodw.open()의 파라메터값 중 "_blank", "_self", "_parent", "_top" 중의 하나를 포함하고 있으면 합격 




마) 레이블제공

① <input> 요소에 레이블 또는 title 제공 여부 - 레이블 또는 title의 정확성 여부는 판단하지 않음 

- <input> 태그의 id="..." 속성 값이 label for = "..."로 선언되었으면 합격 

- <input> 태그의 title 속성을 제공하면 합격(id제공시에도 title 우선 적용) 

- <input> 태그의 title 속성을 제공하나 빈 문자열이면 불합격(제공하지 않은 것으로 간주) 

- <label><input .../></label> 과 같이 label 태그내에 input 태그를 포함시킨 암묵적 방법은 합격 


② <textarea> 요소에 레이블 또는 title 제공 여부 - 레이블 또는 title의 정확성 여부는 판단하지 않음 

- <textarea> 태그의 id="..." 속성 값이 label for = "..."로 선언되었으면 합격 

- <textarea> 태그의 title 속성을 제공하면 합격(id제공시에도 title 우선 적용) 

- <textarea> 태그의 title 속성을 제공하나 빈 문자열이면 불합격(제공하지 않은 것으로 간주) 

- <label><input .../></label> 과 같이 label 태그내에 input 태그를 포함시킨 암묵적 방법은 합격 

이외의 경우 불합격 


③ <select> 요소에 레이블 또는 title 제공 여부 - 레이블 또는 title의 정확성 여부는 판단하지 않음 

- <select> 태그의 id="..." 속성 값이 label for = "..."로 선언되었으면 합격 

- <select> 태그의 title 속성을 제공하면 합격(id제공시에도 title 우선 적용) 

- <select> 태그의 title 속성을 제공하나 빈 문자열이면 불합격(제공하지 않은 것으로 간주) 

- <label><input .../></label> 과 같이 label 태그내에 input 태그를 포함시킨 암묵적 방법은 합격 

이외의 경우 불합격 




바) 마크업 문법

① 아이디 중복 선언 

- 한 페이지에서 동일한 아이디를 중복 사용하면 오류 


② 속성 이름 선언 

- 한 페이지에서 속성 이름을 중복 사용하면 오류 


③ 태그 열고 닫음 

- 태그 열고 닫음이 일치하지 않으면 오류 


④ 닫는 태그 누락 

- 여는 태그에 대한 닫는 태그가 없으면 오류 


⑤ 여는 태그 누락 

- 닫는 태그에 대한 여는 태그가 없으면 오류 


⑥ 태그의 정확한 중첩 관계 

- 태그의 열고 닫는 순서의 중첩 관계가 엇갈리면 오류 

반응형
반응형
CSS
cascade style sheets, HTML의 프리젠테이션을 제어하는데 사용
- cascade : 작은 폭포
- 모든 스타일 시트를 하나로 모아 일치하는 모든 선언들을 정렬(저자, 독자, 브라우저 순/ id>클래스>태그를 가지고 있으면 높은 우선순위 )한 후
충돌하는 규칙들에 대해 가장 나중에 나타나는것일 수록 중요함 → cascade
- style sheet : 스타일 문서


문법
ex) div{
width : 150px;
}

선택자{
속성 : ;
}


외부 스타일 시트와 연결 하기
<link type= "text/css" rel= "stylesheet" herf= "lounge.css" >
link : 외부의 정보와 링크로 연결하기위한 태그
type= "text/css" : 이 정보의 유형은 css 스타일 시트임을 나타냄
rel= "stylesheet" : HTML 파일과 연결하려고 하는 것 사이의 관계를 명시
herf= "lounge.css" : 스타일 시트의 위치


선택자
- tag명 선택자
p{     }
: p태그의 스타일을 정의

- 클래스를 위한 선택자 생성
p.greentea{     }
클래스명이 greentea인 p태그의 스타일을 정의(.greentea : 클래스명이 greentea인 태그의 스타일을 정의)
※ 엘리먼트들은 한 개 이상의 클래스를 가질 수 있음 

- id가 있는 선택자 생성
p#footer{     }
id가 footer인 p태그의 스타일을 정의 (#footer : id가 footer인 태그의 스타일을 정의)

- 자손 선택
div h2{     }
div의 자손인 h2의 스타일정의

#elixirs h2{     }
elixirs라는 id를 가진 엘리먼트의 자손인 h2의 스타일정의


색 나타내기
body : rgb(100% 100% 100%);
% : 빨간색과 초록색, 파란색의 비율을 명시(흰색이 출력)

body : rgb(255 255 255);
숫자 : 색을 명시하기위한 측정단위(흰색이 출력)

body : #CC6600;(오랜지색 출력)
hex코드 : 2자리씩 끊어서 16진수를 10진수로 바꾸면 숫자로 명시된 측정단위가 생성
 

박스 모델(Box model : CSS가 엘리먼트를 보는 방법)

- border의 속성
border-color : #FFFFFF;
border-width : 0px;
border-style : solid;
border-top-color : white;
border-rigth-width : medium;
border-bottom-style : dashed;
...

- padding의 속성
padding-top : 10px;
padding-right : 20px;
padding-bottom : 30px;
padding-left : 40px;
padding : 10px 20px 30px 40px;

- margin의 속성
margin-top : 10px;
margin-right : 20px;
margin-bottom : 30px;
margin-left : 40px;
margin : 10px 20px 30px 40px;



span과 div
<span></span> : 인라인 콘텐츠를 논리적으로 분리하는 방법가
<div></div> : 블록 수준의 콘텐츠를 논리적으로 분리하는 방법


의사-클래스(a태그 링크, a태그 방문, a태그 마우스오버)
- 가짜 클래스(클래스인것 처럼 스타일 명시)

a:link{
}
방문하지 않았을때 링크

a:visited{
}
방문 했을때 링크

a:hover{
}
마우스를 링크에 올려뒀을때


유용한 속성 
cursor : poniter; → 마우스 모양을 손가락 모양으로 변경 
!important; → CSS 우선 적용


Tab효과
<div style= "margin-left:32px;">내용 </div>
<pre></pre>  태그(<br/>이 들어감)


엘리먼트의 전체 너비
콘텐츠 영역의 너비 + 패팅 + 테두리+ 마진의 너비


엘리먼트들의 흐름
- 블록 엘리먼트
· 각각의 엘리먼트 사이에 라인 브레이크를 가지고 위에서 아래로 흐름
· 두개의 블록 엘리먼트를 위/아래로 겹쳐 놓으면, 위의 margin-bottom과 아래 margin-top을 합치고 합쳐진 마진의 높이는 두개중 큰 마진의 높이가 됨.
- 인라인 엘리먼트 : 수평방향으로 왼쪽에서 오른쪽으로 위에서 아래로 흐름


레이아웃
float 속성(liquid 레이아웃)
- 일반적인 엘리먼트들의 흐름으로부터 float속성의 엘리먼트를 제거 시키고 뜨게 만듦.
- 엘리먼트들의 흐름에 영향을 받지 않기 때문에 겹치는 문제가 발생함
- float된 엘리먼트의 너비(width)만큼 일반적인 엘리먼트들에게 margin을 부여한다.
- float된 엘리먼트들과의 해상도변경시 겹치는 부분은 clear : right속성을 사용
- 사용법
margin : 0px 10px 10px 10px;
width : 280px;
float : right;

고정된 레이아웃(frozen 레이아웃)
<body>의 바로 밑에 div를 생성한 후 width 속성을 부여

jello 레이아웃
- 고정된 레이아웃에 margin-left : auto;와 margin-right : auto;속성을 부여하면 콘텐츠가 중앙에 오게됨.



position속성(absolute, fixed, relative 포지셔닝)
- absolute 포지셔닝
· position : absolute;
· 일반적인 엘리먼트들의 흐름으로 부터 position속성의 엘리먼트를 제거 시킴.
· topright속성을 이용하여 페이지의 상단과 오른쪽으로 부터의 거리에 위치 시킨다.
· width속성을 이용하여 넓이를 지정한다.
· top, right, bottom 혹은 left 속성이 명시된 픽셀에 따라 엘리먼트가 위치함.
· 해상도변경시 엘리먼트들과의 겹치는 오류가 생김.
· 가장 가까운 조상 엘리먼트에 대해 상대적인 위치를 명시함.

- fixed 포지셔닝
· position : fixed;
· 페이지가 아닌 윈도우의 가장자리로 부터의 거리에 위치 시킴

- relative 포지셔닝
· position : relative;
· 흐름안에서 엘리먼트를 유지시킬수 있고, 그것만의 예약된 공간을 가짐

· 가장 가깝게 포함된 블록드로부터의 절대적 좌표가 아닌 엘리먼트의 실제 위치로 부터의 거리리에 위치시킴.


반응형
반응형
HTML
- Hyper Text Markup Language 웹 페이지를 보여주기 위해 알아야할 모든 걸을 브라우저에게 알려줌.
- 웹 페이지를 구조화 하는데 사용.
- Hyper Text는 사용자가 연상하는 순서에 따라 원하는 정보를 얻을 수 있는 시스템임.
(건너뛰어 읽거나 각주로 옮겨가거나 다른 텍스트를 참고하려고 읽기를 멈추거나 아니면 다른 텍스트가 더 좋을 듯 싶어 읽기를 포기하는 일 등)
- Markup Language는 웹페이지의 구조를 설명함


웹서버(web server)
- 브라우저로부터 요청을 기다리는 인터넷에 연결된 하나의 컴퓨터(웹 페이지, 그림, 음악, 영화 등등의 요청을 기다림)
- 각각의 서버는 HTML파일이나 그림, 음악, 다른 종류의 파일을 저장하고 서비스를 제공함.
- 브라우저는 HTML페이지나 그림과 같은 리소스를 요청 함.
- 서버가 해당 리소스들의 위치를 찾아내면 브라우저에게 응답을 보냄.


웹 브라우저(web browser)
- 웹서버에 해당 HTML 페이지를 요청하고 요청에 대한 응답을 받아 브라우저 화면에 페이지를 보여줌.
- 브라어저가 웹페이지를 보여주는 방법은 HTML에서 브라우저에게 웹페이지의 구조와 내용에 대해 알려줌.


태그(tag)
ex) <h1> 제목을 입력합니다. </h1>
<h1>  : 시작태그
제목을 입력합니다.  : 콘텐츠
</h1>  : 종료 태그
시작태그 + 콘텐츠 + 종료태그 = 엘리먼트
시작태그와 종료 태그 = 매칭 태그

- 시작 태그는 속성을 가질수 있음
- 웹페이지는 항상 <html> <head>, <body>엘리먼트를 가져야함
- <head> 엘리먼트는 웹페이지에 대한 정보를 가지고 있음
- <body> 엘리먼트 안에 넣는 내용은 브라우저에서 볼수 있음
- CSS는 <style> 엘리먼트 내부에 위치하고 <style> 엘리먼트는 <head엘리먼트 내부에 위치함


상대경로 
- 원점이 되는 파일(현 파일의 위치)과 상대적으로 같은 웹사이트에 있는 다른파일을 가르키는 링크
- 현재의 위치를 아는 것이 중요함
- 한단계 상위 폴더에 있는 파일에 링크를 걸때는 ..을 사용(부모 폴더를 의미)
- 경로의 각각의 부분은 / 문자를 사용 해서 분리


절대 경로
파일의 루트 폴더로부터의 경로


엘리먼트의 종류(element)
- 블록 엘리먼트 : 앞과뒤에 라인 브레이크를 가진것처럼 표시(스스로 자립할 수 있음)
- 인라인 엘리먼트 : 테스트의 흐름 내부에있는 라인 위에 표시(문단안에 흐름을 따라감)
- 빈 엘리먼트 : 아무런 콘텐츠도 가지고 있지 않은 엘리먼트(속성은 가질 수 있으나 콘텐츠와 종료 태그가 없음)


URL
- 웹콘텐츠를 포함해 웹에 있는 어떤 것의 위치를 가르키기위해 사용할 수있는 글로벌 주소
ex) http://www.naver.com/index.html
http 
· 웹을 통해 하이퍼 텍스트 문서를 전송하기위해 합의된 프로토콜(하이퍼텍스트 전송 프로토콜)
· 간단한 요청과 응답 프로토콜
· http 요청 → /index.html파일을 찾아주세요
· http 응답 → 파일을 찾았습니다. 여기 있습니다. / 404에러 해당 페이지를 찾을수가 없어요.

www.naver.com 
웹사이트 이름, 도메인에있는 하나의 웹사이트임(corporate.naver.com으로 웹사이트를 만들수 있음), 외부 사이트와의 연결

naver.com
도메인 이름, 사이트의 위치를 가르키지위해 사용되는 유일한 이름

www
도메인 내부에 있는 특정 서버의 이름

/index.html
루트폴더로 부터 자원들을 지칭하는 절대 경로, 같은 사이트의 다른 페이지와의 연결

ex) file:///Windows/Fonts/SDMiSaeng.ttf
file : 프로토콜의한종류
/Windows/Fonts/SDMiSaeng.ttf : Windows폴더 밑에 Fonts폴더 밑에 SDMiSaeng.ttf파일을 읽으라고 알려줌


<a> 태그
- 인라인 엘리먼트
- href 속성
hypertext reference(인터넷이나 서버에 있는 자원들)
브라우저에게 링크의 목적지를 알려줌
다른 웹페이지와의 연결을 위해 상대경로나 URL을 사용할 수 있음
ex1) <a href= "../index/index.html">
ex2) <a href= "../index/index.html#chai"> : index폴더의 index.html파일의 id가 chai 인 태그로 이동
- title 속성
링크로 연결할 페이지에대한 텍스트의 설명을 나타냄
ex) <title="툴팁의 기능">
- target 속성
목표윈도우가 무엇인지 알려줌
_blank는 새 윈도우에서 링크를 열게함
ex) <target="_blank">


<image> 태그
- 인라인 엘리먼트
- src 속성
이미지의 경로를 나타냄 
a 태그의 href 속성과 마찬가지로 상대경로나 URL을 사용할 수 있음
ex) <image src= "http://www.naver.com/images/logo.gif" />
- alt 속성
이미지가 보이지 않을때 alt속성에 설정한 텍스트가 보임
ex) <image alt= "이미지입니다." />
- width, height속성
이미지의 width(너비)와 이미지의 height(높이)를 pixel단위로 제어함
ex) <image width= "48" height= "100" />


이미지(image)
- JPEG와 GIF



thumbnail
- 엄지손톱이란 뜻으로, 미리보는 축소 화상을 말함


문서 타입 정의(doctype, 신뢰성 있는 웹페이지, 표준HTML)
ex) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
!DOCTYPE : 문서타입임을 브라우저에게 알림 
HTML : <html>이 이페이지의 첫번째 엘리먼트라는 의미
PUBLIC : HTML 표준이 공개적으로 사용 가능 함을 의미
"-//W3C//DTD HTML 4.01 Transitional//EN"
· -//W3C//DTD HTML 4.01 : HTML의 버전
·  Transitional : 표준과 예전 HTML의 과도적임을 의미 
"http://www.w3.org/TR/html4/loose.dtd" : 특정한 표준을 식별하는 파일을 가리킴

※ Transitional을 삭제하면 엄격한 HTML 표준을 지킨다는 것을 의미
※ "http://www.w3.org/TR/html4/loose.dtd"의 loose.dtd 를 strict.dtd 로 바꾸면 엄격한 HTML 표준을 지킨다는 것을 의미

W3C : 월드와이드 웹 컨소시엄, 표준 HTML이 무엇인지 정의하는 표준화 기구

브라우저의 HTML을 보여주기 위한 모드
- 쿼크 모드 : HTML의 예전버전의 규칙을 사용하는 모드
- 표준 모드 : W3C에서 정한 표준 HTML 모드

W3C의 유효성 검사기 사이트 : http://validator.w3.org


<meta>  태그(meta)
- 이 페이지에 관한 무엇인가를 브라우저에게 말해주는 태그
ex) <meta http-equiv= "Content-Type" content= "text/html; charset= "UTF-8 >
http-equiv= "Content-Type" : 컨텐트 타입에 관한 설명임을 명시

content= "text/html; charset= "UTF-8 " : 컨텐트 타입정보를 명시, 인코딩 형식을 명시


반응형
반응형
1. 전체 선택자(wildcard selector) : 
     <%@ page language ="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
     <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
     <html>
     <head>
     <meta http-equiv= "Content-Type" content ="text/html; charset=UTF-8">
     <title> Insert title here</title>
     <script type= "text/javascript" src = "./js/jquery-2.1.1.js" ></script >
     <script type= "text/javascript">
          // jQuery의 시작
          $(document).ready( function(){
                 // * : html tag 전부 선택 (문서 전체에서)
                 // css() : 인자 설정
                $( '*').css( 'color', 'red')
          });
     </script>
     </head>
     <body>

     <h1> Hello jQuery</h1>

     </body>
     </html>


2. 태그선택자
     <%@ page language ="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
     <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
     <html>
     <head>
     <meta http-equiv= "Content-Type" content ="text/html; charset=UTF-8">
     <title> Insert title here</title>
     <script type= "text/javascript" src = "./js/jquery-2.1.1.js" ></script>
     <script type= "text/javascript">

          $(document).ready( function(){
     /*              $('h1').css('color', 'red')
                     $('h2').css('color', 'red') 
                     아래와 같이 변경 가능           */
                
                     $( 'h1, h2').css( 'color', 'red')
          });
     
     </script>
     </head>
     <body>

     <h1> Hello jQuery h1</h1>
     <h2> Hello jQuery h2</h2>
     <h3> Hello jQuery h3</h3>

     </body>
     </html>


3. ID 선택자

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src = "./js/jquery-2.1.1.js"></script>
<script type="text/javascript">
     // jQuery의 시작
     
     $(document).ready(function(){
           $('#h1').css('color', 'orange');
           // h1 태그, id h3 선택, 의미는 없음 id는 태그별로 부여하기 때문
           $('h1#h3').css('color', 'red');
     });
</script>
</head>
<body>

<h1 id = "h1">Hello jQuery h1</h1>
<h2 id = "h2">Hello jQuery h2</h2>
<h1 id = "h3">Hello jQuery h1</h1>
<h2 id = "h4">Hello jQuery h2</h2>

</body>

</html>

4. 클래스 선택자

<%@ page language = "java" contentType= "text/html; charset=UTF-8"
    pageEncoding= "UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<meta http-equiv= "Content-Type" content = "text/html; charset=UTF-8">
<title> Insert title here</title>
<script type= "text/javascript" src = "./js/jquery-2.1.1.js" ></script >
<script type= "text/javascript" >
      // jQuery의 시작
     
     $(document).ready( function(){
            // $('.c1').css('color','orange'); // 전체 orange
            // $('h1.c1').css('color','orange'); // h1의 c1만 orange
           $( '.c1.c2').css( 'color', 'orange'); // 클래스 c1, c2인 것만 orange
     });
</script>
</head>
<body>

<h1 class = "c1" >Hello jQuery h1 </h1>
<h2 class = "c1 c2" >Hello jQuery h2 </h2> <!-- 클래스가 2개 -->
<h1 class = "c1" >Hello jQuery h1 </h1>
<h2 class = "c2" >Hello jQuery h2 </h2> <!-- 클래스가 2개 -->

</body>
</html>


5. 자손과 후손 선택자
     자손 : body 태그를 기준으로 할때 그 바로 아래 있는 태그 (1대)
     후손 : body 태그아래 있는 모든 문서 (밑에 전부다)
<%@ page language ="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<meta http-equiv= "Content-Type" content ="text/html; charset=UTF-8">
<title> Insert title here</ title>
<script type= "text/javascript" src = "./js/jquery-2.1.1.js" ></script >
<script type= "text/javascript">
     
     $(document).ready( function(){
// $('body > *').css('color','red'); 
// body밑에 모든 문서 선택 (후손, div태그에 속성이 들어가고 밑으론 상속)
           $( 'body *').css( 'color', 'red'); 
// body 밑에 모든 문서 선택 (모든 태그에 속성이 들어감)
     });
</script>
</head>
<body>

<div>
     <ul>
            <li>사과 </li>
            <li>수박 </li>
            <li>딸기 </li>
            <li>키위 </li>
           
     </ul>
</div>

</body>
</html>



6. 속성 선택자
          요소[속성=값]     속성과 값이 같은 문서 객체를 선택
          요소[속성|=값]    속성 안의 값이 특정 값과 같은 문서 객체 선택
          요소[속성~=값]   속성 안의 값이 특정 값을 단어로 시작하는 문서 객체 선택
          요소[속성^=값]   속성 안의 값이 특정 값으로 시작하는 문서 객체 선택
          요소[속성$=값]    속성 안의 값이 특정 값으로 끝나는 문서 객체 선택
          요소[속성*=값]    속성 안의 값이 특정 값을 포함하는 문서 객체 선택


<%@ page language ="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<meta http-equiv= "Content-Type" content ="text/html; charset=UTF-8">
<title> Insert title here</title>
<script type= "text/javascript" src = "./js/jquery-2.1.1.js" ></script >
<script type= "text/javascript">
     
     $(document).ready( function(){
           $( 'input[type="text"]').val('Hello jQuery' ); 
// input의 타입이 text인 곳에 값을 Hello jQuery를 할당
     });
</script>
</head>
<body>
     <input type = "text"/>
     <input type = "password"/>
     <input type = "radio"/>
     <input type = "checkbox"/>
     <input type = "file"/>
</body>
</html>



7. 입력 양식 필터 선택자
<%@ page language ="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<meta http-equiv= "Content-Type" content ="text/html; charset=UTF-8">
<title> Insert title here</title>
<script type= "text/javascript" src = "./js/jquery-2.1.1.js" ></script >
<script type= "text/javascript">
     
     $(document).ready( function(){
           setTimeout( function(){
                 var value = $( 'select > option:selected').val();
                alert(value)
           }, 5000);
     });
     
</script>
</head>
<body>

     <select >
            <option >사과 </option >
            <option >수박 </option >
            <option selected >딸기 </option >
            <option >키위 </option >
     </select >

</body>
</html>





8. 위치 필터 선택자
<%@ page language ="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<meta http-equiv= "Content-Type" content ="text/html; charset=UTF-8">
<title> Insert title here</title>
<script type= "text/javascript" src = "./js/jquery-2.1.1.js" ></script >
<script type= "text/javascript">
     
     $(document).ready( function(){
            // tr:odd tr의 홀수열에         
           $( 'tr:odd').css( 'background', '#F9F9F9');
     
            // tr:even tr의 짝수열에
           $( 'tr:even').css( 'background', '#9F9F9F');
           
            // 메서드 체이닝
           $( 'tr:first').css( 'background', '#000000').css( 'color', '#FFFFFF');
     });
</script>
</head>
<body>
     <table >
            <tr><th>이름 </th><th >혈액형 </th ><th >지역 </th ></tr >
            <tr><td>강민수 </td><td >AB형 </td ><td >서울 송파</td></tr>
            <tr><td>구지연 </td><td >B형 </td ><td >미국 캘리포니아</td></tr>
            <tr><td >김미화 </td><td >AB형 </td ><td >미국 메사추세츠</td></tr>
            <tr><td>김선화 </td><td >O형 </td ><td >서울 강서</td></tr>                              
            <tr><td>남기주 </td><td >A형 </td ><td >서울 노량진</td></tr>                            
            <tr><td>윤하린 </td><td >B형 </td ><td >서울 용산</td></tr>                                                              
     </table >

</body>
</html>





9. 함수 필터 선택자
<%@ page language ="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<meta http-equiv= "Content-Type" content ="text/html; charset=UTF-8">
<title> Insert title here</title>
<script type= "text/javascript" src = "./js/jquery-2.1.1.js" ></script>
<script type= "text/javascript">
     
     $(document).ready( function(){
           $( 'tr:eq(0)').css( 'background', '#000000').css( 'color', 'white');
     
           $( 'td:nth-child(3n+1)').css( 'background', 'gray');
           
           $( 'td:nth-child(3n+2)').css( 'background', 'lightgray');
           
           $( 'td:nth-child(3n)').css( 'background', 'white');
     });
</script>
</head>
<body>
    <table >
      <tr>
<th >이름 </th><th>혈액형 </th><th>지역 </th>
  </tr>
      <tr>
<td>강민수 </td><td>AB형 </td><td>서울 송파</td>
  </tr>
      <tr>
        <td>구지연 </td><td>B형 </td><td>미국 캘리포니아</td>
      </tr>
      <tr >
        <td >김선화 </td ><td >O형 </td ><td >서울 강서</td>
      </tr >    
  </table>

</body>
</html>


반응형

'개발의 흔적 > Front' 카테고리의 다른 글

CSS정리  (0) 2016.02.22
HTML정리  (0) 2016.02.22
input 박스 name과 id의 차이  (0) 2016.02.01
JavaScript, jstl Select박스 원하는 값 선택  (0) 2016.02.01
jstl 사용법  (0) 2016.01.22
반응형
input Box 속성 name과 id의 차이

▶ name
(1) document.폼객체명.폼원소명.value
(2) document.getElementsByName("name")

name은 page 안에서 중복되어 사용이 가능하며 action에 해당하는 페이지로 전달하는 파라미터로 사용
GET/POST 방식으로 값을 전달하고 싶은 tag에 사용. Form 객체들(input , radio box ,checkbox )에서 전송되어지는 Parameter의 Key값으로 사용
서버단에서는 request.getParameter(parameterName) 이런 식으로 값을 가져옴


▶ id
(1) document.all.id.value
(2) id.value
(3) document.getElementById("폼 id").value

id는 page 안에서 중복 사용 불가하며 주로 JavaScript에서 다룰려고 지정.
name도 자바스크립트로 속성이나 값을 변경 할 수 있으나 중복값을 갖기 때문에 id로 접근하는 것을 주로 사용.
document.getElementById(id) 를 통해서 해당 엘리먼트Object 를 가져옴.

XML문서(DOM Tree) 내에서 node를 식별하는 용도로 사용되어 페이지 안에 이름이 한개만 존재해야 함.
보통은 특정 tag를 지정하기 위해서 사용. 태그 내용을 바꾸는 dhtml 작업에서 주로 사용.

참고로 id로 설정된 값은 서버쪽으로 파라미터로 넘어가지 않기 때문에 서버쪽에서 접근이 안됨.


반응형

'개발의 흔적 > Front' 카테고리의 다른 글

CSS정리  (0) 2016.02.22
HTML정리  (0) 2016.02.22
JQuery 선택자의 종류(HTML 태그명, ID명에 접근하는 방법)  (0) 2016.02.01
JavaScript, jstl Select박스 원하는 값 선택  (0) 2016.02.01
jstl 사용법  (0) 2016.01.22

+ Recent posts