출처: http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=60392&sca=&sfl=wr_subject%7C%7Cwr_content&stx=ssh&sop=and

2000년대 접어들면서 리눅스에서는 암호화 통신인 ssh 사용이 일반화 되었습니다.
그리고 ssh 를 이용하여 ftp 대신 sftp 서비스를 이용하기도 합니다.
저 역시 대부분의 서버작업을 ssh 를 이용하며 ftp 대신 sftp 를 이용합니다.

그런데 윈도우에서는 서버작업시 터미널을 주로 이용하는데 문제는 ftp 였습니다.
그래서 혹시나 sftp 를 지원하는 프로그램이 없나 찾아보게 되었습니다.
윈도우용 ssh 클라이언트 프로그램으로는 대표적으로 putty(ssh) 나 winscp(sftp) 등이 있지만
윈도우 ssh Server 용 프로그램은 본적이 없었던거 같습니다.

구글링을 해보니.. cygwin 으로 openssh 를 동작시키는 방법이 있었지만
http://pigtail.net/LRP/printsrv/cygwin-sshd.html
귀차니즘과 어느정도 아시는 분들이나 문제없이 설치할듯 하고 해서 계속 찾아보니..
몇가지 프로그램을 발견했지만 대부분 유료가 많았습니다. 그러다 freeSSHd 라는 프로그램을 찾게되었고
그 프로그램을 이용하여 쉽게 구축할수 있더군요.

다음은 freeSSHd 를 이용하여 설치 및 설정을 하는 방법입니다.

테스트환경 : 윈도우 XP 프로페셔널
필요 환경 : NT 계열
freeSSHd Download : http://www.freesshd.com

다운로드에 가시면 하시면 2개의 설치 실행화일을 받으실수 있습니다.
freeSSHd.exe 는 ssh server 를 설치하는 install 화일이고 freeUserImport.exe 는 윈도우 계정을
ssh 서버로 접근가능하게 컨버팅해주는 util 입니다.

우선 freeSSHd.exe 를 실행합니다.
설치중에 어려움은 없을거고 설치 중간에 시스템 서비스로 등록하겠느냐고 나오는데 그건 여러분의 판단에
맏기겠습니다. 저같은경우는 등록해서 사용했습니다.

이제 설치가 완료되고 freeSSHd 셋팅을 할 차례입니다.
트레이에 못보던 아이콘이 생기고 클릭하면 freeSSHd 아래와 같이 셋팅창이 뜰겁니다.


1. Server satatus
Telnet Server 와 SSH Server 의 실행 과 중지를 하는곳입니다.
사용자 삽입 이미지


2. Telnet
텔넷 서버의 설정을 하는경우 설정합니다. 그러나 텔넷은 권장하지 않습니다.
텔넷을 사용할거라면 굳이 freeSSHd를 설치할 필요가 없죠.
사용자 삽입 이미지


3. SSH
Listen address 에서 특정 IP를 지정할수도 있습니다.
Max number of connections 설정은 최대 접속갯수를 설정합니다. 0은 제한이 없다는 것입니다.
Idle timeout 은 입력이 없으면 얼마후에 접속을 서버쪽에서 종료시키는 기능입니다. 0은 제한이 없습니다.
Command shell 은 SSH 접속시 사용할 명령어 실행하기 위한 인터페이스이고 리눅스에서는 shell 이죠.
그외 옵션은 아래와 같이 설정하고....
RSA , DSA 설정은 기본값으로 두고.. 다음
사용자 삽입 이미지


4. Authentication
ssh 인증을 어떤식으로 할것이냐는 것입니다.
패스워드 방식과 공개키 방식이 있습니다.
저는 두가지 경우를 모두 선택했습니다. 여기서 Allowed 와 Required 는 차이가 없습니다.
공개키 생성을 이용하기 위해서는 puttygen.exe 를 이용하시면 됩니다.
puttygen.exe 다운로드
puttygen.exe 사용방법은 인터넷에도 자료가 많으니 따로 정리하지 않겠습니다.
사용자 삽입 이미지


5. Encryption
어떤 암호화 알고리즘을 사용할것인가를 선택합니다.
사용자 삽입 이미지


6. Tunneling
freeSSHd 를 통해 터널링을 지원할것인가의 여부를 설정합니다.
실제 원격에서 putty 등을 통해 터널링을 이용할수있습니다. putty 설정을 통해 외부접속하는 방법은
인터넷에 ssh 터널링으로 검색해보면 될듯하고 스쿨에도 꽤 자료가 있습니다.
사용자 삽입 이미지


7. SFTP
sftp 접속시 홈디렉토리를 설정합니다.
여러가지 sftp 프로그램이 있지만 개인적으로는 winscp 를 추천합니다.
winscp 다운로드
사용자 삽입 이미지


8. Automatic updates
업데이트 설정입니다.
사용자 삽입 이미지


9. Online users
현재 접속해 있는 User 리스트를 출력합니다.
해당유저를 두번클릭하면 Disconnect 버튼이 활성화 되며 해당 유저의 접속을 강제로 종료시킬수 있습니다.
사용자 삽입 이미지


10. Logging
아래와 같이 체크하면 사용자들의 접속 기록을 확인할수 있습니다.
사용자 삽입 이미지


11. Host restrictions
접속 제한 IP들을 설정하는 곳입니다.
tcp_wrapper 와 같은 보안정책을 실행합니다.
Allow only these IP addresses : 전체를 막고 지정한 특정 IP의 접속을 허용합니다.
Refuse these IP addresses : 전체를 풀고 지정한 특정 IP의 접속을 차단합니다.
사용자 삽입 이미지


12 Users
현재 등록된 User를 등록, 수정, 삭제 할수 있습니다.
Add 를 클릭하게 되면 아래와 같이 새창이 뜹니다.
Login  : ID입력
Authorization : 인증은 윈도인증, 패스워드, 공개키인증방식을 선택할수 있습니다.
패스워드 방식을 선택하면 패스워드 입력창이 활성화 됩니다.
사용자 삽입 이미지


여기까지 설정이 되었다면 freeSSHd 의 셋팅이 모두 끝났습니다.
하지만 일반적인 경우 접속이 되지 않습니다. 그건 윈도우의 방화벽 때문입니다.
대부분의 분들은 잘 아실거라 생각하지만 혹시 잘모르시는 분들도 있다고 보고 윈도우 방화벽에서
22번 포트를 푸는 방법을 설명하자면...
제어판 => Windows 방화벽 => 고급탭 선택 후 설정하려는 연결설정을 선택한후 설정을 클릭
=> 고급설정창이 뜨고 추가 버튼을 클릭한후 아래의 이미지에 나와있는것처럼 설정을 하시면됩니다.
사용자 삽입 이미지


AND

출처: http://weezzle.net/1395

=======================================================================================

레이어는 기존의 창에 투명한 창을 겹쳐놓은것과 같은 기능을 하는것입니다.

즉 투명한 창에 그림이나 글자같은 요소를 넣을수 있고 또 그것은 기존창과 독립적으로 배치가 가능하고

또 움직이는 애니메이션효과까지 적용할수 있습니다.

단 이런 레이어를 사용하게 되면 문서의 요소들을 사용자의 의도대로 배치할수 있기때문에 많이 사용하지만

브라우저마다 지원하는 태그가 약간씩 다르기 때문에 주의하셔야 합니다.

여기서는 익스플로러와 넷스케이프에서 공통적으로 사용할수 있는 레이어태그를 기준으로 설명하겠습니다.

=======================================================================================

 <Div>레이어를 만들어주는 태그
 
 레이어를 만들어 주려면 <Div>태그안에 position:absolute라는 스타일을 적용시켜야 합니다.
여기서 <Div>태그는 그안의 내용을 문단으로 나누어 주는 역할을 하는 태그입니다.

그 태그에 position:absolute속성을 주어야만 비로소 레이어의 역할을 하게 되는 것입니다.


<Div>태그에 id라는 속성을 사용하여 레이어의 이름을 표시할수 있습니다.

즉 레이어가 여러개일때 각각을 구분해지는 표시가 되는것이죠.


 레이어를 삽입하는 형태는 다음과 같습니다.

<Style type="text/css">
      #이름{ position:absolute; }
</Style>
:
:
<Div id="이름">레이어안에 들어갈 내용</Div>

=======================================================================================

 LEFT / TOP
 
 left와 top속성은 레이어의 위치를 설정하는 것으로 그 속성값은 left 는 브라우저

좌측경계으로부터의 거리..top은 브라우저 상단경계로 부터의거리를 각각 수치로 입력하면 됩니다.

그 표현은 다음과 같습니다.
그 의미는 브라우저 상단과 좌측으로부터 100픽셀씩 떨어진 곳에 임의의 레이어를 만든다는 것입니다.

#이름 { position:absolute; left:100px; top:100px; }

 =======================================================================================

 WIDTH / HEIGHT : 너비와 높이
 
 width와 height속성은 레이어의 크기를 설정하는 속성입니다.

속성값으로 width는 레이어의 너비를 height는 레이어의 높이를 수치로 입력하면 됩니다.

그 표현은 다음과 같습니다. 그 의미는 너비200px, 높이200px의 레이어를 만든다는 것입니다

#이름 {position:absolute; width:200px; height:200px;}

 =======================================================================================

 BACKGROUND-COLOR : 배경색
 
 background-color속성은 레이어의 배경색을 설정하는 속성입니다.

속성값으로 색이름이나 RGB색상코드를 입력합니다.

그 표현은 다음과 같습니다. 그 의미는 레이어의 배경색을 검은색으로 설정한다는 것입니다.

#이름 {position:absolute; background-color:black; }
 
=======================================================================================

 BACKGROUND-IMAGE : 배경이미지
 
 background-image속성은 레이어의 배경이미지를 설정하는 속성입니다.

속성값으로 url(배경이미지경로및파일명)을 가집니다.

그 표현은 다음과 같습니다. 그 의미는 레이어의 이미지를 1.gif로 설정한다는 것입니다.

#이름 {position:absolute; background-image:url(1.gif); }

 =======================================================================================

VISIBILITY
 
visibility속성을 사용해서 레이어를 보여줄것인지 또는 감출것인지를 설정하는 속성입니다.

속성값으로 hidden과 visible를 가지는데.. hidden은 레이어를 보이지 않게 visible은 레이어를 보이게 설정해줍니다.

그 표현은 다음과 같습니다. 그 의미는 레이어를 감춘다는 의미입니다.

#이름 {position:absolute; visibility:hidden; }
 
=======================================================================================

 Z-INDEX : 레이어상하관계
 
레이어를 문서에 넣어줄때는 한꺼번에 여러개의 레이어를 넣는 것도 가능합니다.

레이어는 투명한 창을 겹쳐놓은것과 같다 말씀드렸습니다.

당연히 레이어의 내용이 서로 겹치게 되면 위쪽에 있는 레이어의 내용이 보이게 되겠죠??


 z-index속성은 레이의 상하관계를 숫자로 설정해주는 속성으로 속성값의 숫자가 클수록

위쪽에 배치된다고 생각하시면됩니다.

즉 z-index의 속성값이 클수록 우선적으로 보여지는 것이죠..

그 표현은 다음과 같습니다.

#이름 {position:absolute; z-index:3;}
 
=======================================================================================

 CLIP
 
clip속성을 사용하게 되면 레이어의 일부분만 보여줄수 있습니다.

즉 일정영역을 설정하여 그 부분만 보여주고 나머지 부분은 보이지 않게 설정하는 것입니다.

그 속성값으로 일정영역을 설정하는 rect값을 가지는데.. rect()괄호안에는 4개의 좌표값이 순서대로 들어갑니다.


rect()괄호안에 들어갈 좌표가 잘못설정되면 안되니 주의해서 보세요..

첫번째 들어갈 좌표는 레이어 왼쪽경계로부터 보여줄영역의 왼쪽경계까지 거리
두번째 들어갈 좌표는 레이어 왼쪽경계로부터 보여줄영역의 오른쪽경계까지 거리
세번째 들어갈 좌표는 레이어 상단경계로부터 보여줄영역의 하단경계까지 거리
네번재 들어갈 좌표는 레이어 상단경계로부터 보여줄부분의 상단 경계까지 거리


그 표현은 다음과 같습니다.

의미는 레이어의 상단으로부터 50픽셀, 레이어 왼쪽으로부터 50픽셀 떨어진 거리에 가로200, 세로50만큼의 영역만 보여준다는 것입니다.

#이름 {position:absolute; clip:rect(50 250 100 50);}
 
=======================================================================================

AND

출처 : http://blog.naver.com/eroicaplus?Redirect=Log&logNo=90036328974


div 태그로 만든 Layer를 안보이게 하는 두가지 방법

 

1. display:none  <-> block

    아예 사라지게 하는것. 보이지도 않고 해당 공간도 존재하지 않게 됨

 

2. visibility:hidden <-> visible

    보이지만 않고 해당 공간은 존재. width와 height값을 주었다면 그만큼 공간은 존재하게 됨

 

같은 기능을 하는 div 태그에 어떤건 display로 적혀있고 어떤건 visibility로 적혀있길래

디자이너 대리님께 여쭤보니 저리도 명쾌한 대답을..

 

나도 누가 뭐 물어보면 아주 명쾌하게 대답하고 싶다..

 


+ 추가로 알게 된 사실.

 

display의 속성으로 none과 block만 있는 줄 알았는데 아니었다.

none, block, inline, inline-block, list-item, table-header-group, table-footer-group
 - IE 6.0 기준
 
또하나, display = "" 하면 디폴트 값이 쓰여지게 되는데 이때 span 태그 안에 있으면 inline
div 태그 안에 있으면 block 가 쓰여지게 된다.
AND

출처 :http://www.javascriptkit.com

Document Object Methods

Last updated: June 17th, 2009

Document object methods

Methods Description
createAttribute("attributename") Creates a new attribute, ready to be inserted somewhere in the document. It returns a reference to the created attribute.

Example(s):

var styleattr=document.createAttribute("align")
styleattr.nodeValue="center"
document.getElementById("sister").setAttributeNode(styleattr)

createComment(commenttext) Creates an instance of the comment node. Once created, you can then insert it into the document tree using appendChild(), for example.

Example(s):

var commentnode=document.createComment("Copyright JavaScript Kit")
document.getElementById("mydiv").appendChild(commentnode)

createDocumentFragment() Creates an empty document fragment. The result is a temporary container for creating and modifying new elements or attributes before introducing the final result to your document tree. This is a very useful method when you're performing multiple operations that add to or modify the document tree. Instead of directly modifying the document tree each time (very inefficient), it's much better to use a temporary "whiteboard" that is created by createDocumentFragment() to perform all your operations on first before finally inserting the result to the document tree.

Example(s):

<div id="sister"></div>

<script type="text/javascript">
var docfrag=document.createDocumentFragment()
var mydiv=document.createElement("div")
var divtext=document.createTextNode("This is div text")
mydiv.appendChild(divtext)
docfrag.appendChild(mydiv)
document.getElementById("sister").appendChild(docfrag) //div now reads "this is div text"
</script>

createElement(tagName) Creates an instance of the element object, which can then added to the document tree using appendChild(), for example.

Example(s):

var textblock=document.createElement("p")
textblock.setAttribute("id", "george")
textblock.setAttribute("align", "center")
document.body.appendChild(textblock)

createTextNode(text) Creates a new text node, which can then be added to an element in the document tree.

Example(s):

var headertext=document.createTextNode("Welcome to JavaScript Kit")
document.getElementById("mytitle").appendChild(headertext)

getComputedStyle(elementRef, pseudoElementName)

Not supported in IE, which uses the "currentStyle" property instead.

Firefox/W3C only method that returns a style object containing the actual CSS property values added to an element, whether they are set using inline CSS or global/external stylesheets. To get the value to a specific cascaded CSS property, you'd just look up that property within the returned object. Note that this method is accessed using document.defaultView.getComputedStyle().

The following example shows how to retrieve the value of the CSS property "padding", applied to the element via external style sheet:

<head>
<style type="text/css">
#adiv{
padding: 10px;
}
</style>
</head>

<body>
<div id="adiv">This is some text</div>

<script type="text/javascript">
var mydiv=document.getElementById("adiv")
var actualstyle=document.defaultView.getComputedStyle(mydiv, "")
var divpadding=actualstyle.padding //contains "10px"
</script>
</body>

getElementsByClassName

Note: Supported in FF3+, Opera 9.5+, Safari 3+, though not IE8.

Gets a collection of element(s) based on their shared class name, for example:

//get elements with "cats" class name
document.getElementsByClassName("cats")

You can get elements with different CSS class names all in one scoop, by separating each class with a space:

//get elements with "cats" or "dogs" class names
document.getElementsByClassName("cats dogs")

Since getElementsByClassName() is a native method of the browser, it is blazingly fast compared to custom code that attempt to simulate it. See "getElementsByClassName Speed Comparison".

Note that getElementsByClassName() also exists on each individual element on the page, to allow you to restrict the returned elements to just those contained within that element.

getElementById(id) Accesses any element on the page via its ID attribute. A fundamental method within the DOM for accessing elements on the page.
getElementsByName(name) Returns an array of elements with a name attribute whose value matches that of the parameter's. In IE6, elements with an ID attribute of the matching value will also be included in the array, and getElementsByName() is limited to retrieving form objects such as checkboxes and INPUT. In Firefox, nither of these "pitfalls" apply.

<div name="george">f</div>
<div name="george">f</div>

<script type="text/javascript">
var georges=document.getElementsByName("george")
for (i=0; i< georges.length; i++)
// do something with each DIV tag with name="george". Firefox only.
</script>

getElementsByTagName(tagname) Returns an array of elements whose tag name matches the parameter. In Firefox/ IE6+, you may enter an asterisk ("*") as the parameter to retrieve a list of all elements within the document.

var ptags=document.getElementsByTagName("p")
var alltags=document.getElementsByTagName("*") //returns all elements on page

querySelector(selectors, [NSResolver])

Note: Currently supported in FF3.1+, IE8+ (only in IE8 standards mode), and Safari 3.1+

Accepts a CSS selector(s) and returns the first matching element (based on the document tree) within the document, or null.

Example:

<ul id="mylist">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>

<script type="text/javascript">
var item2=document.querySelector('#mylist li:nth-of-type(2)')
alert(item2.innerHTML) //alerts "Item 2"
</script>

You can enter multiple CSS selectors each separated by a comma (,), in which case the first matching element of any of the CSS selectors entered will be returned:

//returns either element "#leftcolumn" or "#rightcolumn", depending on which one is found first:
document.querySelector("#leftcolumn, #rightcolumn")

querySelector() supports an optional 2nd "NSResolver" parameter to resolve namespace prefixes in XHTML documents. Not supported in IE8.

querySelectorAll(selectors, [NSResolver])

Note: Currently supported in FF3.1+, IE8+ (only in IE8 standards mode), and Safari 3.1+

Accepts a CSS selector(s) and returns all matching elements (based on the document tree) within the document as a staticNodeList, or null. A staticNodeList is a static collection of elements that are not affected by any subsequent changes occuring on the document tree.

Example:

<ul id="mylist">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>

<script type="text/javascript">
var odditems=document.querySelectorAll('#mylist li:nth-of-type(odd)')
for (var i=0; i<odditems.length; i++)
 alert(odditems[i].innerHTML) //alerts "Item 1", "Item 3" etc.
</script>

You can enter multiple CSS selectors each separated by a comma (,), in which case all matching elements found using the entered CSS selectors will be returned:

//returns both elements "#leftcolumn" or "#rightcolumn", or one of them if only one defined:
document.querySelectorAll("#leftcolumn, #rightcolumn")

querySelectorAll() supports an optional 2nd "NSResolver" parameter to resolve namespace prefixes in XHTML documents. Not supported in IE8.

See "Overview of CSS3 Structural puesdo-classes" for advanced CSS selectors you can use with the query selector methods.

Note: See also JavaScript document object.

AND

AND

출처 :http://cafe.naver.com/oraclesql.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=77

tomcat 5.5.x 버전에서.

 

1. tomcat홈/conf/web.xml 파일을 수정한다.

 

<!--
    <servlet>
        <servlet-name>invoker</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.InvokerServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>
-->

<!--
    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>
-->

 

주석 처리된 2부분을 해제한 후 저장

 

2. /apache-tomcat-5.5.23/webapps/ROOT/WEB-INF 밑에 classes 디렉토리 생성 후

HelloWorld.java 를 넣어 둔다. 컴파일해서 HelloWorld.class 파일을 생성한다.

 

3. 톰캣을 재시동한다.

 

4. 웹사이트에서 확인한다.

http://사이트홈/servlet/HelloWorld



AND

출처: http://therocks.tistory.com/13

수많은 삽질 끝에 APM_SETUP6.0과 Tomcat6.0을 연동하는데 성공해서 이와 관련된 내용을 정리해서 올리고자 한다. 나와 비슷하게 많은 사람들이 삽질을 할 수 있을 듯 한데, 조금이나마 도움이 되었으면 좋겠다.

먼저 웹에서 받을 수도 있겠지만, 일단 본인이 사용한 파일들을 올려두겠다. 현재 날짜로 (2008년 02월 18일) 최신 릴리즈를 사용한 것들이라 추후에는 사라질 수도 있을 것 같다. 그리고 이전 버젼들과는 파일들이 서로 호환되지 않는다고 하니 파일들의 버젼도 유의해서 확인해야할 것 같다.


먼저 위의 파일들을 적당한 폴더에 받아두고, 설치와 설정을 다음 순서와 같이 진행하면 된다.

0. JDK 설치
java기반의 Tomcat을 구동해야하기 때문에 JDK는 기본적으로 설치가 되어 있어야 한다. 본인은 JDK6.0을 설치했다.

1. APM 설치
내려 받은 APM을 클릭하여 설치하면 된다. 설치는 아주 간단히 되므로 굳이 상세히 언급하진 않겠다. 다만 본인은 C:\APM_Setup 이 root directory가 되도록 설치하였으며 그 외에도 기본 설정을 사용하였다.

2. Tomcat 설치
마찬가지로 간단히 설치하였다. JDK가 설치되었다면 큰 문제 없이 설정된다. 다만 본인은 C:\APM_Setup\Server\Tomcat 6.0 에 설치되도록 하였는데, APM_Setup이 그런 디렉토리 구조를 가지고 있어서 왠지 통일하는게 좋을 것 같아서였다. Tomcat은 파일 복사만으로도 별 문제 없이 실행할 수 있으나, Windows Service로 구동하기 위해서 서비스와 함께 설치되도록 하였다.

3. JK 설정

  • mod_jk.so 복사 먼저 내려 받은 jk library를 APM이 설치된 하위의 Apache module 폴더에 복사한다. 이때 파일 이름을 mod_jk.so로 바꾸어 준다. 본인의 경우에는 C:\APM_Setup\Server\Apache\modules\mod_jk.so 파일이 생성되었다. 이후부터는 C:\APM_Setup\Server\Apache를 %APACHE_HOME% 이라 작성하겠다. 설치하는 각자의 Apache가 있는 곳과 대응된다고 보면 된다.
  • httpd.conf 설정 다음으로 %APACHE_HOME%\conf\httpd.conf 파일을 수정하여 apache가 jsp를 인식했을 때 tomcat으로 그 처리를 전달하도록 한다. httpd.conf 파일에 다음과 같은 부분들을 추가한다.
    아래에서 붉은색으로 되어 있는 부분들이 중요한 부분들이고 그 외에는 로그와 같은 정보를 확인하도록 설정하는 것이다. tomcat과 관련된 worker를 설정해주기 위해 이와 관련된 파일을 지정하고 설정 정보를 제공해주어야 한다.
##########################################################################
# @START tomcat jk connector
#
# Load mod_jk module
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
JkWorkersFile conf/workers.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel debug
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Send JSPs for context /*.jsp to worker1
JkMount /servlets-examples/* worker1
JkMount *.jsp worker1
#
# @END tomcat jk connector
##########################################################################
  • workers.properties 설정 %APACHE_HOME%\conf\workers.properties 파일을 생성하고 해당 worker와 관련된 정보를 지정해준다.
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

이같이 하고, Tomcat과 APM을 구동하면 무리 없이 jsp파일이 처리되는 것을 확인할 수 있다. apache가 jsp파일에 대해서 요청이 오면 tomcat을 호출하는 것이기 때문에 jsp에 대해서는 모두 tomcat의 context path설정을 따라서 진행이 되었다. 예를 들어 /test/index.jsp라고 하면 tomcat의 ROOT 하위의 /test/index.jsp를 호출하게 된다. php나 html은 여전히 apache의 context path를 따르기 때문에 둘간의 혼동을 없애려면 둘의 root directory를 하나로 통일해 두는 것이 좋을 것 같다.

그리고 중요한 것은 혹시나 virtual host를 사용하는 경우에는 JkMount *.jsp worker1 와 같이 worker를 지정할 때 각 virtual host마다 지정해주어야 한다. 본인의 경우 Virtual Host를 사용하였는데, 문제 없이 잘 동작하는 것을 확인할 수 있었다.

보통은 Tomcat으로 작업하면 java 기반으로 하고, APM을 사용하는 경우에는 php를 기반으로 하기 때문에 크게 연동할 일이 없을 것 같은데, 본인의 경우 wiki 기반의 홈페이지에 java 기반의 appliation demo를 보여주기 위해서 연동할 필요가 있었다. 물론 Apache와 Tomcat을 각각 80, 8080 포트에 따로 구동할 수도 있었지만, 본인이 사용하는 Network내에서는 8080포트를 외부로 공개하는 것을 꺼리기 때문에 이같은 연동이 필요했다.
또한 하나의 서버에서 Virtual Host로 두개의 홈페이지를 구동하는 경우에 한 홈페이지는 php기반이고, 다른 홈페이지는 jsp기반이라면 유용하게 적용될 것이라 생각한다. 본인도 아직 설치해보지는 않았지만, 추후 이같은 작업이 필요했기에 연동을 시도했다.

* 참고 사이트
http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html




AND

출처: http://1upz.com/?page=4

em의 사용과 IE 버그

Posted 2007/10/24 12:08, Filed under: Web Standards

em의 필요성

일반적으로 폰트의 크기를 지정하기 위해서 px, 혹은 pt 와 같은 단위를 습관적으로 사용 해 왔습니다만 Screen display의 경우에는 플랫폼간의 부조화나 브라우저에서 폰트 사이즈를 인위적으로 조절하는 것이 불가능한 경우가 생기기 때문에 이를 지양하고 em 과 같은 상대 단위를 사용하는 것이 좋습니다.

em의 크기는 어떻게 가늠하는가.

em은 대문자 M의 폭을 기준으로 그 사이즈가 정해지는 상대적 단위이기 때문에 원하는 크기를 지정하기 위해서는 상위 엘리먼트로 거슬러 올라가야 합니다. 마치 부모와 자식과의 관계처럼 자식은 부모에게 영향을 받는 속성을 갖고 있죠.

/* CSS */
#parent {
  font-size:20px;
  }
<!-- HTML -->
<div id="parent">
  <div id="child">Who Am I?</div>
</div>

위의 예(이해를 돕기 위해 px 단위를 사용 했습니다)를 보면, Who Am I? 의 기본 크기는 별다른 지정이 없으므로 20px로 표현이 됩니다. 만약 child 엘리먼트의 폰트 사이즈를 1em으로 지정 했을 경우 Who Am I?는 parent의 100% 크기인 20px로 나타나고, child가 2em 라면 40px, 0.5em 라면 10px로 나타나게 되는 형식이 em의 원리 입니다.

처음 크기는 무엇으로 결정 되나?

앞서 얘기 한데로 em은 상대적 단위 이기 때문에 상위 엘리먼트의 값을 참조하게 됩니다. body 그리고 html까지 올라가서 그 값을 참조하게 되는 것이죠. 그렇다면 최상위 엘리먼트는 무엇을 참조하게 될까요? 네, 브라우저의 설정 값을 참조하게 됩니다. 바꿔 얘기하자면 브라우저의 설정 값을 변경하면 페이지의 폰트 크기들을 조절할 수 있게 되는 겁니다. (참고로 Opera나 IE7의 경우에는 줌 브라우징이 가능하고 Fire Fox는 절대 단위 폰트들도 resizing이 가능하므로 em은 IE6를 위한 선택이라 해도 과언이 아닙니다.)

일반적으로 브라우저의 기본 크기는 12pt (16px)로 설정 되어 있기 때문에 12pt를 기준으로 페이지 전체를 디자인 해야 하고, 또한 기본 설정의 변경에 따라 변화되는 모습을 융통성 있게 제작하는 것이 무엇보다 중요 합니다.

Resizing bug in IE6

em을 사용하여 텍스트 크기 조절이 가능토록 디자인 해야 하는 주된 이유는 사용자 편의성에 있습니다. 만일 시력이 좋지 않은 사용자라면 작은 글씨로 된 텍스트는 읽을 수가 없으므로 이를 적당히 키워 읽기 편하도록 만들자는 것이 그 목적 이죠. 그런데 단순히 em의 사용만으로는 IE6 에서 확대/축소율의 문제점이 발생합니다. 폰트가 지나치게 커지거나 지나치게 작아져서 오히려 더욱 불편해 지는 문제 입니다.
파이어폭스의 모습과 비교한 아래 이미지를 보시면 그 차이를 느끼실 수 있을 겁니다.

FF와 IE의 텍스트 확대 축소 변화

이 문제는 최상위 엘리먼트의 폰트 사이즈 단위를 %로 지정하여 간단히 해결할 수 있습니다. 만약 font-size를 body부터 시작 했다면 html을 추가해 % 값을 지정해 주십시오.

html {
  font-size:100%;
  }

폰트의 크기를 브라우저 기본값의 100%로 보여주라는 코드라 이론상으로는 아무런 의미가 없지만 사이즈의 근본을 em이 아닌 %로 우회하여 IE에서도 확대, 축소의 비율을 적당하게 적용 시킬 수 있도록 한다는 원리 입니다.

만일 html 에 이미 폰트 사이즈를 지정했거나 html이 아닌 다른 곳에 %를 지정하고 싶다면 폰트가 지정된 최 상위 엘리먼트(보통은 body가 되겠죠)의 수치와 단위를 em 에서 %로 변경 해 주시면 됩니다.

body {
  font:75%/1.6 'Trebuchet MS', Helvetica, sans-serif;
  }

그 밖의 문제

IE에서 하이퍼링크를 클릭할 경우 본문의 텍스트 크기가 순식간에 줄어들거나 커지는 증상도 앞서 얘기한 것처럼 최상위 단위를 %로 지정해 줌으로써 해결이 가능할 것 같습니다. 그렇지만 확실한 것은 아니고, 어디까지나 추측일 뿐인데, 일단은 제 환경에서는 재현이 되지 않기 때문에 혹시라도 이런 증상이 나타나시는 분은 테스트를 부탁 드립니다.


Trackback URL : http://1upz.com/trackback/95 > > > >관련글 쓰기

  1. # lyzche 2007/10/24 13:04 Delete Reply

    웅..그렇군요.
    웹폰트 조절할 때 em을 요즘 쓰는데..영향을 받는 게 신기하다 했어요.
    속성이군요.
    px보다 조금은 세밀하게 조절할 수가 있는 거 같아서 자주 em으로 고쳐서 쓰게 되는..

    1. Re: # 1UP 2007/10/24 20:31 Delete

      어차피 스크린의 최소단위는 픽셀이기 때문에 px단위보다 세밀하다는 말은 무의미합니다 ^^; 오히려 작업하기에는 px이나 pt의 사용이 편하죠.

      그런데 이글루스로 옮기신건가요? 이글루스 블로그가 아니었던것 같은데...

    2. Re: # lyzche 2007/10/25 00:10 Delete

      예전엔 당연히 태터였더랬죠.ㅎㅎ
      티스토리를 잠시 접고 간단한 이글루에서 생활하는 중올습니다. 오랜만이에요. 인사가 늦었네요^^;
      + 웹폰트 조절할 때 보니까 em이 서로의 영역에 간섭하면서 영향받아서 커졌다 줄어들었다 하는 모양이 pt보다 조금 세분화된 것처럼 느껴지더라구요. 실제로는 무의미하다. 그런 거군요. 암튼 em 단위로 쓰면 좀 신기하던 차였습니다.ㅎㅎ

  2. # 나니 2007/10/27 09:34 Delete Reply

    또 한 가지 버그가 더 있는데
    항상 그런건 아니고 부분적으로 분명히 절대적인 수치상으로 9pt에 해당하는 크기인데
    영문은 정상적으로 9pt로 나오고 한글만 12pt로 보이는 버그가 발생할 때가 있습니다.
    이것은 어떻게 할 때 발생하는건지 감도 안와서 한동안 em을 기피했었어요.

    그리고 em과는 상관없지만 ie가 멍청해서인지 몰라도
    9pt와 12pt 사이 (10pt, 11pt) 의 크기는 인식을 못해서 무조건 12pt로 나오더군요. (px로 대체해도 같은 증상)

    1. Re: # 1UP 2007/10/27 19:41 Delete

      9pt와 12pt는 그냥 보기에도 그 크기의 차이가 엄청날텐데, 그런 버그가 있었나요? 우선순위로 지정된 영문폰트 때문에 한글 출력이 엉망이 되는 듯 합니다만 만약 소스가 있으시다면 보내주세요~~^^

  3. # 특급앙마™ 2007/10/28 19:01 Delete Reply

    css도 html도 결코 쉽게 보면 안되는군요.
    새로운 사실 하나 알아갑니다.

    1. Re: # 1UP 2007/10/31 00:53 Delete

      쉬우면 좋을텐데 말이죠..ㅜㅜ

  4. # 달룡.. 2007/11/07 23:00 Delete Reply

    흠..그렇군요..좋은 정보입니다.사실 전 이렇게 전문적이지는 않아서 px 로만 사용을 하고 있는데, 이런 차이도 있었네요..

    1. Re: # 1UP 2007/11/09 10:42 Delete

      em의사용은 솔찍히 어렵습니다. 모든 브라우저에서 줌 브라우징이 가능하게되길 기대해봐야겠죠
      최근에 파이어폭스3을 설치해봤는데 오페라 처럼 구현되더라고요. 앞으로 점점 이런 모습들로 바뀔 것 같습니다

  5. # [오름, xdg] 2007/11/12 02:42 Delete Reply

    통상적으로 font-size:100%; 라 한다면, IE6에서 "보기-텍스트크기-보통(M)"을 의미할까요?
    저 같은 경우에는 em으로 글자의 크기를 결정하지만 처음 기준 설정값을 키워드로 설정을 합니다.
    font-size:small%; 이렇게요. 그 다음 em을 사용하지요.

    키워드와 %의 상관 관계를 잘 몰라서... 그럽니다만... 위의 글을 보면서 문득 이런 생각을 했습니다.
    키워드 small이면 %로 몇 %가 될까요.
    저도 클릭을 할 때마다 제 블러그의 글씨가 작아지며 깜빡거려서... 수정을 해 보고 싶어서요.
    그리고 최초의 기준 폰트만 %로 지정하고 이후에는 em을 그대로 쓰는 것은 아마도 문제가 없지 않을까 싶습니다. 그러면 키워드 small의 % 값만 고치면 될 듯 싶은데 맞는 생각일까요?

    참 어디선가 제가 읽은 책에서는 font-size:100%;면 대부분의 브라우저에서 약 16px 정도가 된다고 하는데 맞는 말일까요? 그럼 키워드 smoll은 몇 px일까? 갑자기 기억나서요.

    좋은 글보고 질문만 하고 가네요.
    가능하시면 답변 부탁드립니다.
    미리 감사드립니다.

    1. Re: # 1UP 2007/11/12 04:36 Delete

      font-size:100%는 자기 자신이 갖고있는 폰트 사이즈의 100% 라는 의미 입니다. 고로 부모 앨리먼트로 부터 물려받은 그대로의 크기를 나타내죠.
      IE6에서 '텍스트 크기-보통' 은 16px의 크기를 갖고 있으며 앨리먼트의 폰트 값이 100%라면(다른 부모로부터 값을 상속받지 않았을 경우) 16px의 값을 갖게 됩니다.

      그리고 small, x-small, xx-small 과 같은 키워드 수치는 단계마다 120% 씩 차이가 있습니다만 브라우저마다 미세한 차이를 보이고 있어 썩 권장하는 속성은 아닙니다. 제 기억으로는 디폴트 값에 해당하는 small은 12px~13px 사이의 값을 갖고 있는 걸로 기억합니다. 아마 small 사이즈에 굴림을 지정했다면 13px 정도의 크기로 랜더링 될 것이라 생각 되네요. 1px 보다 작은 수치를 표현할 수 없기 때문에 유사치의 값을 표현이 되는 현상인데요, 정확한 값의 출력과는 자간이나 행간의 차이가 있겠죠? ^^

  6. # [오름, xdg] 2007/11/12 15:51 Delete Reply

    아 그렇군요. 아직 정식으로 블러그를 오픈하기 전이라 스킨을 가다듬으며 이것저것 준비 중인데 좋은 정보 얻어갑니다.
    말씀하신 데로 제가 수정하려면 font-size:small;의 경우에는 16px이 100%니까 13px은 약 81%정도 되겠네요.
    고로 간략하면 font-size:80%;
    스킨은 처음 만드는 것이라 제공해 주신 텍스트큐브의 coolant 스킨을 해독해 가며 제 취향에 맞게 어느 정도 정착시킨 스킨을 완성해 나가고 있는 데, 주신 정보는 많은 도움이 될 것 같습니다.
    좋은 정보 감사드립니다.

  7. # 2007/11/12 18:21 Delete Reply

    비밀댓글 입니다

    1. Re: # 1UP 2007/11/12 23:32 Delete

      앵? 그런거 아니었는데요 ㅜㅜ;; 따듯하지 못한 답변, 미안합니다 ㅜㅜ 흑..

  8. # 2007/11/13 17:20 Delete Reply

    비밀댓글 입니다

    1. Re: # 1UP 2007/11/18 05:39 Delete

      글을 자주 쓰지는 못하고 있어서 자주 놀러오시라고는 큰소리로 할 수가 없네요~
      살살 놀러오세요~^^;;

  9. # ^^ 2007/11/15 19:10 Delete Reply

    ^^

    1. Re: # 1UP 2007/11/18 05:39 Delete

      ^^?;;

  10. # s 2007/11/26 05:01 Delete Reply

    아..예전 제로보드 포럼에서인가에서 em 단위에 대해 많은 의견이 오고가는것을 보았던 기억이 나는것 같습니다..
    역시 문제는 한글글꼴..다양한 브라우져,다양한 폰트사이즈에 맞춰서 일일이 수정한다는게 정말 쉬운일은 아닐꺼라는 생각이 드네요,,css를 배우느는 저에게는 정말 유용한 정보입니다,,^ ^
    아..또 슈터즈에 있었으면서도 한번도 인사도 못드렸어요,,너무 늦게 인사드리는것은 아닌지
    항상 유용한 정보 감사하게 구독하고 있습니다.
    추운계절에 몸건강하시구요,,앞으로 자주 인사드릴께요..~*..,,^ ^

    1. Re: # 1UP 2007/11/28 02:38 Delete

      저 슈터즈에서 방출되기 일보 직전 입니다. 아님 암묵적으로 이미 그리 됐을지도....ㅜㅜ;

  11. # graphittie™ 2007/12/22 01:48 Delete Reply

    하하. 역시 좋은 포스트군요. 한가지 알려드리면 px는 상대크기입니다... 아주 뒤늦은 뒷북이군요. :)

    http://www.w3.org/TR/CSS21/syndata.html#value-def-length


AND

출처: http://kukie.net/resources/design/font_size.html
by kukie

브라우저의 기본 글꼴크기(1em/100%)를 기준으로한 글꼴 비교표.
pt/px에 익숙한 제작자/사용자는 CSS 초보가 당황할 만한 것 #2를 참고하시기 바랍니다.

points pixels ems percent
글꼴 6pt 글꼴 8px 글꼴 0.5em 글꼴 50%
글꼴 7pt 글꼴 9.5px 글꼴 0.55em 글꼴 55%
글꼴 7.5pt 글꼴 10px 글꼴 0.6em 글꼴 60%
글꼴 8pt 글꼴 11px 글꼴 0.7em 글꼴 70%
글꼴 비교하기 9pt 글꼴 비교하기 12px 글꼴 비교하기 0.75em 글꼴 비교하기 75%
글꼴 10pt 글꼴 13px 글꼴 0.8em 글꼴 80%
글꼴 10.5pt 글꼴 14px 글꼴 0.85em 글꼴 85%
글꼴 11pt 글꼴 15px
글꼴 0.95em 글꼴 95%
글꼴 12pt 글꼴 16px 글꼴 1em 글꼴 100%
글꼴 13pt 글꼴 16.5px 글꼴 1.05em 글꼴 105%
글꼴 14pt 글꼴 19px 글꼴 1.1em 글꼴 110%
글꼴 15pt 글꼴 20px 글꼴 1.25em 글꼴 125%
글꼴 16pt 글꼴 21px 글꼴 1.3em 글꼴 130%
글꼴 17pt 글꼴 23px 글꼴 1.45em 글꼴 145%
글꼴 18pt 글꼴 24px 글꼴 1.5em 글꼴 150%
글꼴 19pt 글꼴 25px 글꼴 1.55em 글꼴 155%
글꼴 20pt 글꼴 27px 글꼴 1.7em 글꼴 170%
글꼴 21pt 글꼴 28px 글꼴 1.75em 글꼴 175%
글꼴 22pt 글꼴 29px 글꼴 1.8em 글꼴 180%
글꼴 23pt 글꼴 31px 글꼴 1.95em 글꼴 195%
글꼴 24pt 글꼴 32px 글꼴 2em 글꼴 200%

관련 URL


OS에 따른 일반적인 글꼴

Generic Family Common Macintosh Fonts Common Windows Fonts
Serif Times, New Century Schoolbook, Palatino
애플명조(AppleMyungjo)
Times New Roman, Georgia
바탕(Batang)
Sans-serif Helvetica, Arial, Verdana
애플고딕(AppleGothic), 서울체(Seoul)
Arial, Tahoma, Verdana
돋움(Dotum), 굴림(Gulim)
Cursive ---
필기(Pilgi)
---
Fantagy WingDings, Symbol WingDings, Symbol
AND

cookie 생성

Web 궁금하니? 2008. 9. 26. 17:32

자바스크립트 로그인폼 아이디저장 기능에 대한 질문입니다.

lsh00315 2007.07.09 17:21

답변 1| 조회 1,975

만들고 있는 쇼핑몰에 아이디저장기능을 추가시키려고 네이버를 돌아다니는데 아래 소스를 가장 많이 쓰는거같아 시도해봤는데 안되더군요... 원본 소스는

=========================================================

<html>
<head>
<script language="javascript">
function setCookie (name, value, expires) {
  document.cookie = name + "=" + escape (value) +
    "; path=/; expires=" + expires.toGMTString();
}

function getCookie(Name) {
  var search = Name + "="
  if (document.cookie.length > 0) { // 쿠키가 설정되어 있다면
    offset = document.cookie.indexOf(search)
    if (offset != -1) { // 쿠키가 존재하면
      offset += search.length
      // set index of beginning of value
      end = document.cookie.indexOf(";", offset)
      // 쿠키 값의 마지막 위치 인덱스 번호 설정
      if (end == -1)
        end = document.cookie.length
      return unescape(document.cookie.substring(offset, end))
    }
  }
  return "";
}
function saveid(form) {
  var expdate = new Date();
  // 기본적으로 30일동안 기억하게 함. 일수를 조절하려면 * 30에서 숫자를 조절하면 됨
  if (form.checksaveid.checked)
    expdate.setTime(expdate.getTime() + 1000 * 3600 * 24 * 30); // 30일
  else
    expdate.setTime(expdate.getTime() - 1); // 쿠키 삭제조건
  setCookie("saveid", form.id.value, expdate);
}
function getid(form) {
  form.checksaveid.checked = ((form.id.value = getCookie("saveid")) != "");
}

//맨 위에서부터 여기까지 main페이지에 붙여넣었습니다
</script>
</head>
<body onLoad="getid(document.mainform)">
<form name=mainform>
아이디 <input type=text name=id>
암호 <input type=password name=pw>
<input type=checkbox name=checksaveid onClick="saveid(this.form)">아이디 기억
</form>
</body>
</html>

=======================================================

 

이 색으로 바꾼것이 제가 복사하여 직접 사용한 소스부분입니다.

 

인덱스 파일이 있고 여기에 header/main/bottom 등을 불러오게 되있습니다.

 

로그인폼이 main 에 있어서 위 소스중 헤드 안에 들어가는 소스를 main 자바스크립트 안에 넣었습니다.(본문소스중 파란글씨로 적어놓았습니다)

 

그리고 나머지 소스들도 마찬가지로 main에 넣었습니다 그 소스입니다.

 

===============실제 적용한 소스 내용==================

<td width="119" height="24" onLoad="getid(document.login_id)">
                                                             <form name="login_id">
                                                             <input type="text" name="login_id" maxlength="15" size="17" class="text" style="width:110px" tabindex="1" style="background-image:url('<?=$g_skin_link?>/image/id_log_bg1.gif'); border-width:1; border-color:#a9a9a9; border-style:solid; width:120px; height:18px;" tabindex="3" autocomplete="off" onFocus="this.style.background='#ffffff'" onBlur="this.style.background='#ffffff'">
               </td>
                                                         <td width="233" height="48" rowspan="2">&nbsp;<input type="image" src="<?=$g_skin_link?>/image/loginleft_002.gif" width="49" height="42" border="0" onfocus="blur()" name="I1" ></td>
                                                     </tr>
                                                     <tr>
                                                         <td width="119" height="24">
                                                             <input type="password" name="login_pass" maxlength="15" size="17" class="text" style="width:110px" autocomplete="off" tabindex="2" style="background-image:url('<?=$g_skin_link?>/image/pw_log_bg1.gif'); border-width:1; border-color:#a9a9a9; border-style:solid; width:120px; height:18px;" autocomplete="off" tabindex="4" onFocus="this.style.background='#ffffff'" onBlur="this.style.background='#ffffff'">
               </td>
                                                     </tr>
                                                     <tr>
                                                          <td width="385" height="5" colspan="3"></td>
                                                     </tr>
                                                     <tr>
                   <td width="13" height="27"> </td>
                                                          <td width="353" height="27" colspan="2">
                                                          <input type=checkbox name=checksaveid onClick="saveid(this.form)">

==================================================================

정리해드리자면

 

main의 <script language=JavaScript> 안에

 

위 원본 소스 상단에 위치한 가장 긴 부분을 넣었고.

 

나머지는 로그인 폼 안에 "실제 적용한 소스 내용" 안에 오렌지색으로 바꾼 소스가

 

실제로 추가한 소스입니다.

 

근데 이상하게 정상 적용되지 않는군요...뭔가 잘못한건지..초짜라...

 

자세하게 설명 부탁드립니다.

 

 

 

 

추가된 질문
2007.07.10 22:27 추가
// 저장할 변수명, 저장할변수, 일자 (1:1일, 2:2일, 365:일년)
function setCookie (name, value, expiredays)

일자는 알겠는데 저장할변수명과 저장할변수에는 뭐라고 써 넣어야 하는건가요?

그리고 onload='javascript:getValue();' 이것은 꼭 body에 넣어야 하는건가요? 로그인폼은 main페이지이고

body가 있는 페이지는 header입니다. 상관 없나요?



신고

의견 쓰기

답변하시면 내공 10점을, 답변이 채택되면 내공 75점(채택25+추가50)을 드립니다. >나도 답변하기

질문자 선택

re: 자바스크립트 로그인폼 아이디저장 기능에 대한 질문입니다.

sjisbmoc

답변채택률 76.5%

2007.07.11 10:38

<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
<script>

// 저장할 변수명, 저장할변수, 일자  (1:1일, 2:2일, 365:일년)

function setCookie (name, value, expiredays)
{
 var todayDate = new Date();
 todayDate.setDate( todayDate.getDate() + expiredays );
 document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";";
}

function getCookie(name)
{
 var Found = false;
 var start, end;
 var i = 0;

 while (i <= document.cookie.length)
 {
  start = i;
  end = start + name.length;
  if (document.cookie.substring(start, end) == name)
  {
   Found = true;
   break;
  }
  i++;
 }

 if (Found == true)
 {
  start = end + 1;
  end = document.cookie.indexOf(';', start);
  if (end < start) end = document.cookie.length;
  return document.cookie.substring(start, end);
 }
 return '';
}

function setValue()
{
 var fm = document.form;
 setCookie ('user_id', fm.user_id.value, 1);
}

function getValue()
{
 var fm = document.form;
 fm.user_id.value = getCookie('user_id');
}

</script>

 </HEAD>
 <!-- body load 이후 쿠키에 저장된 값을 가져와 ID 값을 적용한다. -->
 <BODY onload='javascript:getValue();'>
  <form name='form'>

   <table>
    <tr>
     <td>
      <input type='text' name='user_id' style='width:100;' maxlength='10'>
      <!-- user_id 값을 쿠키에 저장한다. -->
      <input type='button' name='btn' value='setCookie' onclick='javascript:setValue();'>
     </td>
    </tr>
   </table>

  </form>
 </BODY>
</HTML>


 반듯이 onload 부분에 넣을 필요는 없습니다. 'user_id'  객체가 생성된 후 실행하기

위해서 해당 함수에 넣었을 뿐 특별한 이유는 없습니다.

onload 에 넣지 않을 경우는 user_id 객체가 선언된 이후에 호출 되도록 해야 합니다.

저장할 변수명과 가저올 변수명은

user_id 를 저장할때 쿠키에 저장할 이름을 정해 놓아야 가져올때도 가져 올 수 있기

때문입니다.

학교에서 한반의 학생들에게 번호를 부여하고 번호대로 호출 하듯이

집어넣을때 이름을 붙여넣으면 가져올때 똑같은 이름을 호명해서 쿠키에서

불러올 수 있기때문입니다.

부여하는 이름은 특별히 정해진것은 아니며 쿠키를 제작하는 사람의 기호에 맞춰서

집어넣으면 됩니다. 쿠키에 저장된 변수를 불러올때는 이때 이용한 이름을 이용하여

불러오면 되기때문에 불러올때와 집어넣을때 명칭은 동일하게 됩니다.

의견 쓰기

AND