'프로그래밍'에 해당되는 글 8건

  1. 2020.10.28 부모창(opener)으로 submit 할때
  2. 2020.10.23 request 객체 활용
  3. 2020.10.22 자바자료형
728x90

window.open 으로 열린 popup창에서 부모창으로 정보를 갱신할때 부모창을 타겟으로잡아 submit 해준다.

 

[팝업 오픈시]

function winOpen() {

   document.domain = "myDomain.com"; // 도메인을 일치하지 않을 경우 제어가 안되는 경우가 있다.

   window.open("popup.htm", "myPopup", "width=800, height=600, resizable=no, scrollbars=no") ;

}

 

 

[부모창 제어시]

function openSubmit() {

    document.domain = "myDomain.com";  // 도메인을 일치하지 않을 경우 제어가 안되는 경우가 있다.

    opener.name = "myOpner";

    document.myForm.target = opener.name;

    document.myForm.action = "/what/goWhat.do";

    document.myForm.submit();

    self.close();   //window.close(); 를 사용해도 된다.

}

 

 

 

 

 

 

도메인을 일치시켜야 하는 이유는 크로스 도메인 오류가 발생하는 경우가 있어서인데 다른 도메인의 창을 제어하려할 경우 에러가 발생함을 막기 위하여 브라우저에서 차단하는 경우때문이다.

 

브라우저에서 크로스도메인을 허용하지 않는 이유는 소유하지 않은 페이지에 대한 권한을 주지 않기 위해서이다.

예를 들어 팝업으로 구글이나 네이버창을 열고 오프너가 팝업창에 권한을 행사하여 변경처리 하거나 반대로 팝업에서 오프너에 대한 권한을 행사할수 있게 될 경우 보안문제가 발생한다.

게시판등에 팝업이 뜨도록 작성하고(요즘은 허용되지 않는 경우가 대부분) 그 팝업창에서 오프너를 제어할 수 있는 경우가 예전에 있었고 이에 대한 패치로 크로스 도메인에 대한 패치가 브라우저에 적용되어 있다.

(같은 도메인에서 팝업하고 처리 하는 경우 도메인지정은 생략해도 에러가 안나는 경우가 대부분이다.)

 

간혹 self.close() 또는 window.close() 처리시 submit 처리가 완료되지 않은 상황에서 close()처리가 발생되어 오프너가 정상적으로 동작하지 않는 경우도 있다.

이 경우 close 동작전 timeout 을 0.5초 정도 지정해주거 콜백 처리를 하는 경우가 있다.

 

 

728x90

'프로그래밍 > Jquery, javascript' 카테고리의 다른 글

alert()와 console.log() 활용  (4) 2020.12.14
Posted by 내맘대로내뜻대로
프로그래밍/JAVA2020. 10. 23. 17:45
728x90

request 객체에는 사용자 정보가 기본적으로 많이 담겨 있다.

request 객체에서 해당 정보를 사용하여 개발되는 사이트의 로그나 사용자 반응을 확인하는 용도로 많이 사용한다.

또한 여러종류(개발,테스트,스테이징,운영,DR..)의 서버가 동작중일 경우 같은 코드로 서버별 다른 동작을 할때도 유용하다.

 

 

<%

// request.getHeader("referer"); // 접속 경로

// request.getHeader("user-agent"); // 유저의 시스템 정보
// request.getHeader("host"); // 접속 ip

// request.getHeader("User-Agent"); // 브라우져 정보 가져오기
// request.getHeader("WL-Proxy-Client-IP")
// request.getHeader("Proxy-Client-IP")
// request.getHeader("X-Forwarded-For") // 클라이언트 ip 주소 가져오기

// request.getRequestURI();   //프로젝트경로부터 파일까지의 경로값을 얻어옴

// request.getContextPath();  //프로젝트의 경로값만 가져옴

// request.getRequestURL();   //전체 경로를 가져옴

// request.getServletPath();   //파일명

 

// String request.getParameter(name)  //페이지에 전달된 파라미터를 name 기준으로 가져옴
// String[] request.getParameterValues(name)  // 페이지에 전달된 파라미터들을 모두 가져와 배열형태로 반환함

// String request.getProtocol() 웹 서버로 요청 시, 사용 중인 프로토콜을 리턴한다.
// String request.getServerName() 웹 서버로 요청 시, 서버의 도메인 이름을 리턴한다. 
// String request.getMethod() 웹 서버로 요청 시, 요청에 사용된 요청 방식(GET, POST, PUT 등)을 리턴한다. 
// String request.getQueryString() 웹 서버로 요청 시, 요청에 사용된 QueryString을 리턴한다. 
// String request.getRequestURI()  웹 서버로 요청 시, 요청에 사용된 URL 로부터 URI 값을 리턴한다. 
// String request.getRemoteAddr()  웹 서버로 정보를 요청한 웹 브라우저의 IP주소를 리턴한다. 
// int request.getServerPort() 웹 서버로 요청 시, 서버의 Port번호를 리턴한다. 
// String request.getContextPath() 해당 JSP 페이지가 속한 웹 어플리케이션의 콘텍스트 경로를 리턴한다. 
// String request.getHeader(name) 웹 서버로 요청 시, HTTP 요청 헤더(header)의 헤더 이름인 name에 해당하는 속성값을 리턴한다. 

 

다양한 request 객체 내 정보를 시스템로그에 찍어보면 활용도를 찾을수 있다.

 

System.out.println("referer:"+request.getHeader("referer"));

System.out.println("user-agent:"+request.getHeader("user-agent"));

System.out.println("host:"+request.getHeader("host"));

System.out.println("WL-Proxy-Client-IP:"+request.getHeader("WL-Proxy-Client-IP"));

System.out.println("Proxy-Client-IP:"+request.getHeader("Proxy-Client-IP"));

System.out.println("X-Forwarded-For:"+request.getHeader("X-Forwarded-For"));

System.out.println("HTTP_CLIENT_IP:"+request.getHeader("HTTP_CLIENT_IP"));

System.out.println("HTTP_X_FORWARDED_FOR:"+request.getHeader("HTTP_X_FORWARDED_FOR"));

System.out.println("getContextPath:"+request.getContextPath());

System.out.println("getProtocol:"+request.getProtocol());

System.out.println("getQueryString:"+request.getQueryString());

System.out.println("getRemoteAddr:"+request.getRemoteAddr());

System.out.println("getRequestURI:"+request.getRequestURI());

System.out.println("getServerName:"+request.getServerName());

System.out.println("getServletPath:"+request.getServletPath());

System.out.println("getSession:"+request.getSession().getId());

 

 

 

// Enumeration request.getHeaderNames() 웹 서버로 요청 시, HTTP 요청 헤더(header)에 있는 모든 헤더 이름을 리턴한다. 

// 파라미터의 헤더에 담긴 모든 정보를 조회하려고 할때 while문을 활용하여 전체를 찍어볼 수 있다.

Enumeration headers = request.getHeaderNames();

 

while(headers.hasMoreElements()) {

    String headerName = (String)headers.nextElement();

    String value = request.getHeader(headerName);

    System.out.println("headerName:"+headerName+","+value);

}

 

%>

 

728x90

'프로그래밍 > JAVA' 카테고리의 다른 글

아파치 톰캣 버전별 jdk 버전  (3) 2022.06.07
open jdk 관련  (0) 2022.06.07
java 쓰레드풀(Thread pool) 을 활용한 멀티쓰레드 처리  (0) 2020.12.21
quartz 사용시 스케쥴 cron 형식  (2) 2020.11.02
자바자료형  (0) 2020.10.22
Posted by 내맘대로내뜻대로
프로그래밍/JAVA2020. 10. 22. 16:32
728x90

자바의 자료형은 크게 기본형(primitive type)과 참조형(referene type)으로 나뉜다. 그리고 기본형은 다시 정수형, 실수형, 문자형, 논리형 네 가지로 분류할 수 있다. 이것들을 다음 표에 정리하였다.

[표 1] 자바의 기본 자료형(primitive type)의 종류

분류

이름

바이트 수

비고

정수형

byte

1

-127 ~ +128

short

2

-32,768 ~ + 32,767

int

4

-2,147,483,648 ~ +2,147,483,647

long

8

-9,223,372,036,854,775,808~

+9,223,372,036,854,775,807

실수형

float

4

단정도 실수형 (유효 자리는 7 정도임)

double

8

배정도 실수형 (유효 자리는 15정도)

문자형

char

2

유니코드 문자열

논리형

boolean

1

true, false

 

 정수형은 정수를 저장하는 자료형으로서 byte, short, int, long 네 가지가 있으며 각각에 저장할 수 있는 정수의 범위가 다르다 ([표 1] 참조) 한 가지 알아둘 것은 C/C++ 과 다르게 자바의 정수형에는 unsigned 형이 없고 부호 있는 정수형만 있다는 것이다. (자료 구조의 단순함을 유지하기 위해서 이렇게 설계했다고 한다.) 그리고 C/C++의 long long int 가 자바의 long형에 해당된다. 숫자 상수끝에 L/l 접미어가 붙으면 long형으로 저장된다.

 

 실수형은 실수(소숫점이나 e/E를 포함하는 수)를 저장하는 자료형으로서 float와 double 형이 있다. (이것은 C/C++과 동일하다.) 숫자 상수 끝에 f/F 접미어가 붙으면 float형으로 저장된다.

 

 컴퓨터에서는 모든 문자에 번호를 할당하고 문자를 정수로 바꿔서 저장한다. 어떤 문자에 어떤 번호를 할당하는 가는 여러 방법이 있으며 자바는 유니코드(unicode)라는 세계 표준 규격을 따른다. 유니코드는 국제적으로 사용되는 모든 문자를 0~65,535 범위(2 바이트)의 정수에 할당한 것이라고 이해하면 된다. 자바의 char형은 유니코드 한 문자를 표현할 수 있는 자료형으로서 2 byte 크기이다. 문자상수는 작은 따옴표를 사용하여 표시한다. 예를 들면 ‘a’, ‘가’, ‘3’ 등이다. (C/C++에서는 char형이 1byte이다. 혼동하면 안된다.)

 

 논리형은 true(참)과 false(거짓) 단 두 개의 값만을 가지는 자료형이다. 조건 검사에서 사용되는 논리식의 결과값을 저장하는 용도로 사용된다.

 

 

자료출처 : studymake.blogspot.com/2015/07/java-primitive-types.html

728x90
Posted by 내맘대로내뜻대로