728x90

[실행결과]

[소스코드]

<!DOCTYPE html>
<html>
<head>
<title>데모</title>
<style>
	.divTbl     { display: table; width: 100%; }
	.divTblRow  { display: table-row; }
	.divTblCell { display: table-cell; border: 1px solid #999999; padding: 3px 10px; }
	button   { line-height: 17px; margin-top: 10px; }
	textarea { height: 314px; width: 615px; position: fixed; }
</style>
<script src="https://code.jquery.com/jquery-2.1.0.min.js" integrity="sha256-8oQ1OnzE2X9v4gpRVRMb1DWHoPHJilbur1LP9ykQ9H0=" crossorigin="anonymous"></script>
<script>
var com = {
	utils : {}
};

com.utils = {

	/**
	* @description 카드번호 마스킹하는 함수.
	* @param {string} 카드번호(ex:0000-0000-0000-0000)
	* @param {string} 마스킹 타입(EMAIL, CARD, ID, NAME, PHONE 기타등등)
	* @return {string} 마스킹 처리된 문자열
	*/
	makeMask: function (t, s) {
	
		var maskedValue = '';

		switch (t) {

			case 'CARD' :
				if( s.match(/(\d{4})-(\d{4})-(\d{4})-(\d{4})/gi) ){
					// 카드번호 앞 4자리, 뒤 4자리 표시 : 1000-5678-0987-6543 >> 1000-****-****-6543 
					//maskedValue = s.toString().replace(/(\d{4})-(\d{4})-(\d{4})-(\d{4})/gi,"$1-****-****-$4");
					// 카드번호 앞 6자리, 뒤 4자리 표시 : 1000-5678-0987-6543 >> 1000-56**-****-6543
					maskedValue = s.replace(/(\d{4})-(\d{2})(\d{2})-(\d{4})-(\d{4})/gi,"$1-$2**-****-$5");
				}
			break;

			case 'CARDNUM' :
				if( s.match(/(\d{2})\/(\d{2})/gi) ){
					// 카드 유효기간 모두 별표 표시
					maskedValue = s.replace(/(\d{2})\/(\d{2})/gi,"**/**");
				}
			break;

		}
		
		// Log
		$('#txtLog').append('입력값 : |' + s + '| >> 출력값 : |' + maskedValue + '| \n\n'); 

		return maskedValue;
  },

};
</script>
</head>
<body>
<h1>카드번호/유효기간 마스킹 처리</h1>
<div class="divTbl" style="height:330px;">
	<div class="divTblRow">
		<div class="divTblCell" style="width:200px;">

			<button onclick="com.utils.makeMask('CARD', '7234-5678-0987-6543')">
				카드번호 앞 6자리, 뒤 4자리 표시
			</button>
			<button onclick="com.utils.makeMask('CARD', '7000-2000-3000-4000')">
				카드번호 앞 6자리, 뒤 4자리 표시
			</button>
			<button onclick="com.utils.makeMask('CARDNUM', '22/34')">
				카드 유효기간 모두 별표 표시
			</button>
			<button onclick="com.utils.makeMask('CARDNUM', '22/15')">
				카드 유효기간 모두 별표 표시
			</button>

		</div>
		<div class="divTblCell" style="width:500px">
			<textarea id='txtLog'></textarea>
		</div>
	</div>
<div>
</body>
</html>

[첨부파일]

maskCard.html
0.00MB

728x90
반응형
728x90

실행결과 화면은

카드번호 앞6자리, 뒤4자리만 표기한 예제이다.

소스 주석을 참고하면 추가로 카드번호 앞4자리, 뒤4자리만 표기하는 정규식이 있으니 참고바란다.

 

[실행결과]

[소스코드]

<!DOCTYPE html>
<html>
<head>
<title>데모</title>
<style>
	.divTbl     { display: table; width: 100%; }
	.divTblRow  { display: table-row; }
	.divTblCell { display: table-cell; border: 1px solid #999999; padding: 3px 10px; }
	button   { line-height: 17px; margin-top: 10px; }
	textarea { height: 314px; width: 615px; position: fixed; }
</style>
<script src="https://code.jquery.com/jquery-2.1.0.min.js" integrity="sha256-8oQ1OnzE2X9v4gpRVRMb1DWHoPHJilbur1LP9ykQ9H0=" crossorigin="anonymous"></script>
<script>
var com = {
	utils : {}
};

com.utils = {

	/**
	* @description 카드번호 마스킹하는 함수.
	* @param {string} 카드번호(ex:0000-0000-0000-0000)
	* @param {string} 마스킹 타입(EMAIL, CARD, ID, NAME, PHONE 기타등등)
	* @return {string} 마스킹 처리된 문자열
	*/
	makeMask: function (t, s) {
	
		var maskedValue = '';

		switch (t) {

			case 'CARD' :
				if( s.match(/(\d{4})-(\d{4})-(\d{4})-(\d{4})/gi) ){
					// 카드번호 앞 4자리, 뒤 4자리 표시 : 1000-5678-0987-6543 >> 1000-****-****-6543 
					//maskedValue = s.toString().replace(/(\d{4})-(\d{4})-(\d{4})-(\d{4})/gi,"$1-****-****-$4");
					// 카드번호 앞 6자리, 뒤 4자리 표시 : 1000-5678-0987-6543 >> 1000-56**-****-6543
					maskedValue = s.replace(/(\d{4})-(\d{2})(\d{2})-(\d{4})-(\d{4})/gi,"$1-$2**-****-$5");
				}
			break;

		}
		
		// Log
		$('#txtLog').append('입력값 : |' + s + '| >> 출력값 : |' + maskedValue + '| \n\n'); 

		return maskedValue;
  },

};
</script>
</head>
<body>
<h1>카드번호 마스킹 처리</h1>
<div class="divTbl" style="height:330px;">
	<div class="divTblRow">
		<div class="divTblCell" style="width:200px;">

			<button onclick="com.utils.makeMask('CARD', '7234-5678-0987-6543')">
				카드번호 앞 6자리, 뒤 4자리 표시
			</button>
			<button onclick="com.utils.makeMask('CARD', '7000-2000-3000-4000')">
				카드번호 앞 6자리, 뒤 4자리 표시
			</button>

		</div>
		<div class="divTblCell" style="width:500px">
			<textarea id='txtLog'></textarea>
		</div>
	</div>
<div>
</body>
</html>

 

[첨부파일]

maskCard.html
0.00MB

 

 

 

카드번호 유효기간 마스킹 처리는 아래 링크 참고하길 바란다.

 

https://sealove3904.tistory.com/20

 

[자바스크립트] 카드 유효기간 마스킹 처리하기

[실행결과] [소스코드] <!DOCTYPE html> 데모 카드번호/유효기간 마스킹 처리 카드번호 앞 6자리, 뒤 4자리 표시 카드번호 앞 6자리, 뒤 4자리 표시 카드 유효기간 모두 별표 표시 카드 유효기간 모두

sealove3904.tistory.com

 

 

 

 

728x90
반응형
728x90

이메일 정규식 마스킹처리 공유하며 보안관점으로는 서버에서 하는걸 추천한다.

 

[실행결과]

[소스코드]

<!DOCTYPE html>
<html>
<head>
<title>데모</title>
<style>
	.divTbl     { display: table; width: 100%; }
	.divTblRow  { display: table-row; }
	.divTblCell { display: table-cell; border: 1px solid #999999; padding: 3px 10px; }
	button   { height: 30px; line-height: 17px; margin-top: 10px; }
	textarea { height: 314px; width: 668px; position: fixed; }
</style>
<script src="https://code.jquery.com/jquery-2.1.0.min.js" integrity="sha256-8oQ1OnzE2X9v4gpRVRMb1DWHoPHJilbur1LP9ykQ9H0=" crossorigin="anonymous"></script>
<script>
var com = {
	utils : {}
};

com.utils = {

	/**
	* @description 이메일 마스킹하는 함수.
	* @param {string} email(ex:xxxx@abc.com)
	* @param {string} 마스킹 타입(EMAIL, ID, NAME, PHONE 기타등등)
	* @return {string} 마스킹 처리된 문자열
	*/
	makeMask: function (t, s) {
	
		var maskedValue = '';

		switch (t) {
			// 앞 2자리만 표시 처리 (ex : mi******@gmail.com)
			case 'EMAIL' :
				var len = s.toString().split('@')[0].length - 3; // 
				maskedValue = s.replace(new RegExp('.(?=.{0,' + len  + '}@)', 'gi'), '*');
			break;
		}
		
		// Log
		$('#txtLog').append('입력값 : |' + s + '| >> 출력값 : |' + maskedValue + '\n\n'); 

		return maskedValue;
  },

};
</script>
</head>
<body>
<h1>이메일 마스킹 처리</h1>
<div class="divTbl" style="height:330px;">
	<div class="divTblRow">
		<div class="divTblCell" style="width:150px;">

			<button onclick="com.utils.makeMask('EMAIL', 'sealove3904@naver.com')">
				앞 두자리만 표시처리
			</button>
			<button onclick="com.utils.makeMask('EMAIL', '1234567890@gmail.com')">
				앞 두자리만 표시처리
			</button>

		</div>
		<div class="divTblCell" style="width:500px">
			<textarea id='txtLog'></textarea>
		</div>
	</div>
<div>
</body>
</html>

 

[첨부파일]

masking.html
0.00MB

 

728x90
반응형
728x90

샘플화면을 만들면서 HTML, CSS 를 좀 만지다보니 괜찮은 사이트인거 같아 공유한다.

사이트가 넘 복잡한거 같기도하고...

참고로 난 위 사진처럼 테이블을 Div 태그로 생성하여 사용하고 싶었고 CSS 를 어떻게 사용해야지를 알고 싶었다.

 

https://divtable.com/converter/

 

HTML Table to Div Converter

Transform traditional HTML Tables to Div Tables. Copy and convert any visual table document to Div tables with a simple click of a button

divtable.com

 

728x90
반응형
728x90

넥사크로 파일업로드 구현시 Controller 에서 넥사크로에서 전송하는 데이터셋을 받지 못하는 현상이 발생되어

해결방안을 공유하고자 글을 남긴다.

 

현재 만들어진 업로드 공통모듈에서 서버로 전송되는 패킷은 아래와 같이 확인되었습니다.

request 패킷을 보고 일단 XML 포멧에 쓰레기 코드가 들어있어서 안되는거구나 했는데.. 

 

혹시 Controller 서버단에서 Request 를 뒤져보니 parameterMap 에 데이터가 있는걸 보고 아래와 같이 코딩하여 해결함.

 

아래 소스 참고하시고 전체 소스는 첨부 공유할께요.

        MultipartHttpServletRequest multipartRequest     = (MultipartHttpServletRequest) request;

        //--------------------------------------------------------------------------
        // DataSet 받아오기
        //--------------------------------------------------------------------------
        PlatformData nexacroData = new PlatformData();
        
        String inputDatasets = null;
        
        Map<String, String[]> m = multipartRequest.getParameterMap();
        Iterator<String> i = m.keySet().iterator();
        while(i.hasNext()) {
            String k   = i.next();
            String[] v = m.get(k);
            
            if( "inputDatasets".equals(k) ) {
                inputDatasets = v[0];
            }
        }
        
        nexacroData.loadXml(inputDatasets);
        
        com.nexacro.java.xapi.data.DataSetList inputDataSet = nexacroData.getDataSetList();
        com.nexacro.java.xapi.data.DataSet dsUpload = inputDataSet.get("dsUpload");        
        
        logger.info("### dsUpload DataSet : " + dsUpload.saveXml());
        //--------------------------------------------------------------------------

 

[첨부파일]

StorageController.java
0.01MB

 

 

728x90
반응형
728x90

[소스코드]

          /**
           * @description 문자열 길이(Byte)를 구하는 함수.
           * @param {string} 문자
           * @param {string} charset (UTF-8,EUC-KR)
           * @return {string} 문자열 길이(Byte)
           */
          lengthB: function (s, charset, b, i, c) {
                
                // argv 값 Validation 은 추가 필요합니다.
                if( s == '' ){
                    b = -1;    
                }else{
                    charset = charset ? charset.toUpperCase() : 'UTF-8';
                    
                    if( charset.search(/UTF-8|EUC-KR/g) > -1 ){
                        if(charset == 'UTF-8'){
                            for(b=i=0;c=s.charCodeAt(i++);b+=c>>11?3:c>>7?2:1);
                        }else{
                            for(b=i=0;c=s.charCodeAt(i++);b+=c>>11?2:c>>7?2:1);
                        }
                    }
                }
                
                console.log('입력값 : |' + s + '| 캐릭터셋 : |' + charset + '| >> 출력값 : |' + b + '(byte)|'); 

                return b;
          },

 

[실행결과]

[첨부파일]

test.html
0.00MB

728x90
반응형
728x90

[소스코드]

          /**
           * @description 문자열에서 좌측 대체 문자열로 채워 문자열을 생성하는 함수.
           * @param {string} 문자
           * @param {string} 대체문자
           * @param {string} 자리수
           * @return {string} 문자열
           */
          sPad: function (s, r, l) {

                var result = s.padStart(l, r);

                console.log('입력값 : |' + s + '| >> 출력값 : |' + result + '|'); 

                return result;
          },
          /**
           * @description 문자열에서 우측 대체 문자열로 채워 문자열을 생성하는 함수.
           * @param {string} 문자
           * @param {string} 대체문자
           * @param {string} 자리수
           * @return {string} 문자열
           */
          ePad: function (s, r, l) {
    
                var result = s.padEnd(l, r);

                console.log('입력값 : |' + s + '| >> 출력값 : |' + result + '|'); 

                return result;
          },

 

[실행결과]

 

[첨부파일]

test.html
0.00MB

 

 

728x90
반응형
728x90

[소스코드]

          /**
           * @description 좌측공백을 제거한다.
           * @param {string} 문자열
           * @return {string} 좌측 공백이 제거된 문자열
           */
          trimL: function (s) {

                var result = s.replace(/^[ ]*/g, '');

                console.log('입력값 : |' + s + '| >> 출력값 : |' + result + '|'); 

                return result;

          },
          /**
           * @description 우측공백을 제거한다.
           * @param {string} 문자열
           * @return {string} 우측 공백이 제거된 문자열
           */
          trimR: function (s) {
    
                var result = s.replace(/[ ]*$/g, '');

                console.log('입력값 : |' + s + '| >> 출력값 : |' + result + '|'); 

                return result;

          },
          /**
           * @description 공백을 제거한다.
           * @param {string} 문자열
           * @return {string} 공백이 제거된 문자열
           */
          trim: function (s) {

                var result = s.trim();

                console.log('입력값 : |' + s + '| >> 출력값 : |' + result + '|');

                return result;

          },

 

[실행결과]

 

[첨부파일]

test.html
0.00MB

728x90
반응형
728x90

[소스코드]

          /**
           * @description 유일한 ID를 반환한다.
           * @param {string} ID 앞에 붙여지는 문자열
           * @param {string} ID 생성시 구분되는 문자열
           * @return {string} 유일한 ID
           */
          uuid: function (prefix, separator) {

                var result = '';

                if(!separator) separator = '-';

                prefix = (!prefix) ? '' : prefix + separator;

                var char = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
                var u = Date.now().toString(16) + Math.random().toString(16) + '0'.repeat(16);

                var argv1 = u.substr(0,8);
                var argv2 = u.substr(8,4);
                var argv3 = '';
                
                for( var i=0; i<4; i++ ){
                        argv3 += char[Math.random() * 16  | 0];
                }
                
                var argv4 = char[Math.random() * 16  | 0] + u.substr(13,3);
                var argv5 = u.substr(16,12);
                
                var guid = [argv1, argv2, argv3, argv4, argv5].join(separator);
                
                result = prefix + guid;
     
                console.log(' >> 출력값 : ' + result);
     
                return result;
              
          },

 

[실행결과]

 

[첨부파일]

test.html
0.00MB

728x90
반응형

+ Recent posts