ubuntu에서

 

현재 어떻게 실행되어있는지 확인

# lsof -iTCP -sTCP:LISTEN -P | grep apache2 | grep 80

 apache2   14254 www-data    4u  IPv4 8302072      0t0  TCP *:80 (LISTEN)
 apache2   14254 www-data    4u  IPv6 8302072      0t0  TCP *:80 (LISTEN) 

 

혹은 netstat를 사용해도 되지만,

 # netstat -nlt | grep 80

 tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
 tcp6       0      0 :::80                    :::*                      LISTEN

좀 더 명확하게 표시되니...

 

 

Apache2 설정파일 수정

# sudo vi /etc/apache2/ports.conf

 

Listen 80 을  ← (IPv4/IPv6 모두 실행되는 것이지만... IPv6만 실행되서 서비스가 안될 때가 있다)

 

Listen 0.0.0.0:80 으로 수정 후 저장

 

 

Apache2 재실행

# /etc/init.d/apache2 restart

 

다시 확인해보면, IPv4 만 실행되어있다.

 

그런데도, 80 port로의 서비스가 바로 접근이 안된다면...?

VirtualHost 등으로 연결된 상황이라면 더더욱...

 

조금 기다려야 정상(?!)속도로 나오는 듯 하다...;;;

 

 

2개의 달력 InputBox의 시작/종료일자를

상호 선택한 날짜들로 제한하고자 할 때 사용할 수 있다.

 

 

<link rel="stylesheet" href="/css/jquery.datetimepicker.css" type="text/css" />

<script type="text/javascript" src="/js/jquery.datetimepicker.js"></script>

 

$( function() {
    $("input[name='xxx']").datepicker( {
        onClose : function( selectedDate ) {  // 날짜를 설정 후 달력이 닫힐 때 실행
                      if( selectedDate != "" ) {
                          // yyy의 minDate를 xxx의 날짜로 설정
                          $("input[name='yyy']").datepicker("option", "minDate", selectedDate);
                      }
                  }
    } );

    $("input[name='yyy']").datepicker( {
        onClose : function( selectedDate ) {  // 날짜를 설정 후 달력이 닫힐 때 실행
                      if( selectedDate != "" ) {
                          // xxx의 maxDate를 yyy의 날짜로 설정
                          $("input[name='xxx']").datepicker("option", "maxDate", selectedDate);
                      }
                  }
    } );
} );

 

 

* 선택된 날짜의 다음날로 제한하고자 할 때는?

 

var curDate = $("input[name='xxx']").datepicker("getDate");  // Date return
curDate.setDate( curDate.getDate() + 1 );
$("input[name='yyy']").datepicker("option", "minDate", curDate);

 

  1. 오유상 2020.02.24 12:06

    감사합니다 도움받고갑니다

var optMinDate = $("input[name='xxx']").datepicker("option","minDate");

 

달력의 선택 가능범위의 최소값인 minDate가 설정되어있다면

해당 날짜가 format style대로 return되고

 

설정이 되어있지 않다면, NULL이 return된다.

 

 

Naver에서 만든

Smart Editor가 PHP만 Sample로 만들어놔서

JSP에 사용하려면

기본 기능은 다 되는데...

 

내용에 사진 첨부하는 기능이 되지 않는다. (그냥해서는)

 

JSP로 이미지 업로드 기능을 만들어놨다면...

(개발 환경-Framework, 처리구조등이 각기 다를테니)

그나마 간단히 몇 가지만 손대면 연결할 수 있다.

 

 

* 사용버전 : 2.8.2.12056

 

1. /SE2.8.2.O12056/sample/js/plugin/hp_SE2M_AttachQuickPhoto.js

 

var sPopupUrl = "이미지 업로드 팝업창 표시URL"; 로 수정

 

 

2. 이미지 업로드 팝업창을 통해, 업로드 한 후

   Smart Editor에 이미지 업로드 결과를 반영하기 위해 만든 function을 호출하는 부분에서

 

window.opener.parent.function이름(); 요론식으로 호출해야 한다.

 

Smart Editor가 iFrame으로 생성되니...

 

 

 

이미지 업로드 기능을 만들어 놓지 않았다면

요기로 가면, JSP로 만들어 놓은 분이 계시다.

http://zero-gravity.tistory.com/171

 

 

 

* Smart Editor 소개

http://dev.naver.com/projects/smarteditor/

 

* Smart Editor Download

http://dev.naver.com/projects/smarteditor/download

 

 

 

<form enctype="multipart/form-data" 을 지정하면 된다.

 

enctype을 지정하지 않을 경우,

TEXT로 입력한 HTML Tag는

&..; 식의 문자로 치환되어 전달된다.

 

<   &lt;    less than
>   &gt;    greater than
&   &amp;   ampersand
    &nbsp;  non breaking space
"   &quot;  double quote
®   &reg;   registered trade mark
ⓒ  &copy;  copyright

 

HTML상의 컨트롤들은 id와 name으로 구분할 수 있는데...

여러개의 컨트롤중에서 하나나 여럿을 선택해야 하는

radio 와 checkbox

컨트롤의 제목이나 이름을 나타내는 label for를 사용할 때

사소한 오류(?)를 만들어 낼 수도있다.

 

radio와 checkbox의 동그라미와 네모를 클릭하지 않고

설명글을 Click 해도 선택/체크되도록 하기 위해서

label for를 사용하는데...

 

아래처럼 코딩을 하게 되면 기능상의 오류가 발생한다.

 <input type="radio" id="radioid" name="radioid" value="radiovalue1">
 <label for="radioid">라디오1</label>
 <input type="radio" id="radioid" name="radioid" value="radiovalue2">
 <label for="radioid">라디오2</label>

 

라디오2 글자를 Click하면...

희망(!)과는 다르게...

라디오1 이 선택된다...^^;

 

무엇이 문제인가?

 

Form Submit을 처리하기 위해서 name은 일치시켜야 하고

jQuery를 사용하기 위해서 id도 일치시켜야 할 것 같지만...?

굳이 그리 하지 않아도 된다.

 

문제는... label for에서 특정 컨트롤을 for속성에 컨트롤id를 넣기 때문이다.

해결은... radio의 id를 달리해줘야 한다.

 

 <input type="radio" id="radioid1" name="radioid" value="radiovalue1">
 <label for="radioid1">라디오1</label>
 <input type="radio" id="radioid2" name="radioid" value="radiovalue2">
 <label for="radioid2">라디오2</label>

 

글자 Click으로 값을 선택하는 것은 해결되었다.

 

 

이제 Submit을 처리하기 위한

Validation은 어떻게?

 

일반적으로는 이렇게 사용할 수 있지만 (id가 같았으니)

 if( typeof $("#radioid:checked").val() == "undefined" ) {

 

두번째 방식으로 코드를 바꿨다면 이렇게 처리할 수 있다.

 if( typeof $(":radio[name=radioid]:checked").val() == "undefined" ) {

 

 

radio의 동그라미나

checkbox의 네모를

정확하게 Click하는 경우엔 전혀 문제가 되지 않지만

편의를 위해 글자를 Click해도 선택되도록 했다면

요롷게 처리해주는게 깔끔할 듯 하다.

 

 

  1. 김상현 2021.01.06 13:45

    사랑합니다....... 저에게 구원을 주셨습니다......
    PC버전 모바일버전 두가지에 input 버튼 label 써서 label된 사진, 버튼들에 클릭시 input에 체크되도록 만들고있엇는데
    모바일이 되는것을 확인하고 PC버전을 만들고나니 갑자기 모바일이 안되어서 왜 그런지 도통 이해를 못하고 별 짓거리를 다하고있었는데 이 글을 보고 모바일과 PC버전 iput id에 차이를 주니 해결되었습니다...
    감사합니다 복 과하게 받으세요!!!!!!!!

파일다운로드 구현시, 한글명 때문에 URLEncoder.encode() 사용할 때

한글명에 공백이 포함되어있는 경우

 

URLEncoder.encode( "다운 받아주세요.txt", "UTF-8" );

처리결과는

다운+받아주세요.txt

공백이 + 로 변경되어 의도하지 않은 이름이 만들어진다.

 

URLEncoder.encode( "다운 받아주세요.txt", "UTF-8" ).replaceAll( "\\+", "%20" );

강제로 + 를 공백으로 변경해줘야 한다.

 

 

IE11이 보편화 되어있는 이 시기에도

여전히 IE8을 사용하시겠다는 고갱님들이 많으셔서리...;;;

 

$('#objid').val().trim(); 처럼 평범한 script를 처리하지 못한다.

 

이는 jQuery로 변경하면 무사 통과되는...

결론은... jQuery의 위대함(?!)인가?  ^^;;;

 

$.trim( $('#objid').val() );

 

 

https:// 를 사용해서 보여지는 화면에서

https:// 를 사용하는 resource들을 include/사용하게 될 때

IE에서 죽어라 표시되는

 

 

 

사용하는 사람이 알아서(!)

설정을 바꿔서 안나오게 할 수 있지만

개발자의 입장에서는 나오지 않도록 코딩을 해주는 것이...

 

 

<%@ taglib uri="http://

<!DOCTYPE html ... "http://

<html xmlns="http://

<meta http-equiv="

요것들은 전혀 관계가 없고

 

<a href="http:// 또한 당연히 관계가 없는 건... 알쥬?

 

그 이외의 http:// 들은

https:// 로 변경해주면 된다.

 

 

http를 사용하는 것을 알 것 같은 코드들을 다 수정했는데도

당췌 어디서 문제가 발생하는 건지 모르겠을 때

 

IE에서 F12 를 누르면 나오는

개발자도구 에서

콘솔에 놓고

화면을 새로고쳐(F5) 보면 문제되는 부분이 표시된다.

 

 

표시되는 항목의

파일에 표시되는 파일을 쫓아가서

수정해주면 거의 99.9%는 해결되지 않을까 하는...

 

 

iframe 을 사용해서 접속하지 못하도록 하기 위한 설정

모든 브라우저에서 되는 건 아니고, 일반적인 브라우저들(옛날 것X, 희안한 것X)에서는 되는 방법.

 

HttpServletResponse.setHeader( "X-Frame-Options", "SAMEORIGIN" );

 

일반적으로 iframe을 사용한 페이지와 동일한 orgin에 해당하는 frame만 표시하는

SAMEORIGIN 을 무난하게 사용

 

그 외에도 이런 값을 줄 수 있다.

DENY : frame으로 표시 불가

ALLOW-FROM uri : 페이지는 지정된 orgin에 해당하는 frame만 표시

 

X-Frame-Options Header를 가지는 경우

아래와 같이 표시된다. 

 

막무가내로 X 를 보여주기가 그시기 하다면

script로 무작정 정상화면을 표시하도록도 할 수 있다.

<script>
if( top != window ) {
 top.location = window.location;
}
</script> 

 

첫 번째 방법으로도 충분하지만

깔끔한(?) 진행(?)을 위해서

두 번째 방법도 함께 해주는 서비스를? ^^

 

 

'plming > HTML-Web' 카테고리의 다른 글

IE8 에서는 script의 .trim()은 안됩니다.  (0) 2016.01.27
보안컨텐츠만 표시됩니다 없애기  (0) 2015.08.13
iframe 표시-XFS(Cross Frame Script) 방지  (0) 2015.07.27
JSTL IF, ELSE  (0) 2015.07.13
HTML Object Reference  (0) 2015.05.27
반응형 웹 입력폼 코딩  (0) 2015.05.25

+ Recent posts