목차

webplus_httphead 가이드

이 화면은 webplus_httphead 함수에 대한 예시화면이다.

WEB 서버에 HTTP HEAD 명령이 보안상의 이유로 제한된 경우에 활용한다.

예시

샘플 JSP 정보

툴 설치 디렉토리\template\HTML5\UTIL\WEBPLUS\webplus_httphead.jsp.txt → webplus_httphead.jsp로 이름 변경후 활용한다.

템플릿 위치: /HTML5/UTIL/WEBPLUS/webplus_httphead

템플릿 파일

화면 스크립트

function btn_wplushttphead_on_mouseup(objInst)
{
	var file_info;

	file_info = this.webplus_httphead("screen", this.fld_url.gettext());

	factory.consoleprint(factory.jsonstringify(file_info));

	this.fld_result.settext(file_info.result);
	this.fld_errcode.settext(file_info.err_code);
	this.fld_errmsg.settext(file_info.err_msg);

	this.fld_filetype.settext(file_info.file_type);
	this.fld_fileurl.settext(file_info.file_url);
	this.fld_filesize.settext(file_info.file_size);
	this.fld_gmttime.settext(file_info.gmt_time);
	this.fld_localtime.settext(file_info.local_time);
}

/**
 * webplus_httphead.jsp 파일을 연계하여 서버에 있는 파일 크기 및 수정시각 정보를 구함
 * @param file_type 파일 유형 ("screen"/"picklist")
 * @param xframe_file_url xFrame5 파일 URL ("/BIZ/biz_screen")
 * @returns {*} 파일 정보 오브젝트 (아래 file_info 변수 주석 참조)
 */
function webplus_httphead(file_type, xframe_file_url) {
    var file_info, file_url, json_str, webplus_httphead_url;

	// 파일 정보 오브젝트
    file_info =  {
        result: 0,           // 처리결과값 (1: 성공, 0: 실패)
        err_code: 0,         // 에러 코드 (1: 유효하지 않는 파라미터값, 2: 파일 없는 경우, 3: 유효하지 않은 데이터, 9: 오류 발생)
        err_msg: "",         // 에러 메세지
		file_type: "",       // 파일 유형 ("screen"/"picklist")
		file_url: "",        // 파일 URL
        file_size: 0,        // 파일 바이트 크기
        gmt_time: "",		// GMT 기준 파일 수정 시각 (YYYYMMDDHHMMSS)
        local_time: ""	   // 로컬 시간대 기준 파일 수정 시각 (YYYYMMDDHHMMSS)
    };

	// URL 정보 설정
	webplus_httphead_url = "http://127.0.0.1:8080/xframe5/template/HTML5/UTIL/WEBPLUS/webplus_httphead.jsp";

	// 파라미터 정보 설정
    file_url = webplus_httphead_url + "?type=" + file_type + "&url=" + encodeURIComponent(xframe_file_url);

	// AJAX GET Sync 방식으로 호출
    $.ajax({
        url: file_url,	  	   // url
        method: "GET",         	// 'POST', 'GET', 'PUT'
        async: false,		      // sync 방식으로 동작 (true/false)
        dataType: "text",          // 'xml', 'html', 'script', 'json', 'jsonp', 'text'
        cache: false,
        crossDomain: true,

        // withCredentials를 사용할 경우,
        // 서버에서도 Access-Control-Allow-Credentails를 true로 설정해야 하고,
        // Access-Control-Allow-Origin을 "*"로 사용할 수 없음
        xhrFields: {
            withCredentials: true
        },

		// 오류 발생시
        error: function (jqXHR, textStatus, errorThrown) {
            file_info.result = 0;
            file_info.err_code = jqXHR.status;
            file_info.err_msg = "(" + jqXHR.readyState + ") " + errorThrown;
        },

		// 성공시
        success: function (data, textStatus, jqXHR) {
			// 수신 데이터 트림 처리 및 데이터 형식 확인
            json_str = factory.stringtrim(data);
			if (json_str.charAt(0) != "{") {
                file_info.result = 0;
                file_info.err_code = 3;
                file_info.err_msg = "invalid data format";
            }
            else {
				file_info = factory.jsonparse(json_str)
            }
        }
    });

    return file_info;
}

webplus_httphead.jsp 스크립트

<%@ page contentType="text/html; charset=utf-8" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%
/**
 * factory.wplushttphead API를 통해서 호출되는 웹 서비스 모듈
 * Test URL: http://127.0.0.1:8080/xframe5/template/HTML5/UTIL/WEBPLUS/webplus_httphead.jsp?type=screen&url=/1.xml
 *
 * @param type url에 대한 파일 구분 ("screen"/"picklist")
 * @param url xFrame5에서 사용하는 파일 URL 정보 ("/" 부터 시작, 예시: /BIZ/007190.xml)

 * @returns {string} Format : FileByteSize^FileLastModifyGMTDateTime^FileLastModifyLocalDateTime
 *		-1 : file not exist
 *		-2 : error
 *		-3 : invalid paramter
 *	 	 n : file byte size
 */

out.clearBuffer();

String fileType = "";		// screen/picklist
String fileUrl = "";

try {
	System.out.println("webplus_httphead> start ===============================================");

	// Set CORS HTTP Header Start
	response.setHeader("Access-Control-Allow-Credentials", "true");
	response.setHeader("Access-Control-Allow-Headers", "X-Requested-With");

	// a String containing the value of the requested header, or null if the request does not have a header of that name
	String origin = request.getHeader("Origin");
	System.out.println("request origin = " + origin);
	if (origin == null) { response.setHeader("Access-Control-Allow-Origin", "*"); }
	else { response.setHeader("Access-Control-Allow-Origin", origin); }
	// Set CORS HTTP Header End

	fileType = request.getParameter("type");		// screen/picklist
	fileUrl = request.getParameter("url");

	System.out.println("webplus_httphead> fileType = [" + fileType + "], fileUrl = [" + fileUrl + "]");

	if (fileType == null || fileUrl == null) {
    	out.println("{");
    	out.println("\"result\" : \"" + "0" + "\",");
    	out.println("\"err_code\" : \"" + "1" + "\",");
    	out.println("\"err_msg\" : \"" + "invalid parameter value" + "\",");
    	out.println("\"file_type\" : \"" + fileType + "\",");
    	out.println("\"file_url\" : \"" + fileUrl + "\",");
    	out.println("\"file_size\" : \"" + "0" + "\",");
    	out.println("\"gmt_time\" : \"" + "" + "\",");
    	out.println("\"local_time\" : \"" + "" + "\"");
    	out.println("}");
    	return;
	}

	// TODO: 프로젝트 환경에서 변경해야 함.
	String 	fileAbsolutePath = "D:\\SOFTBASE\\HTML\\xframe5\\project\\terminal\\";

	fileAbsolutePath += fileType + fileUrl;

	System.out.println("webplus_httphead> fileAbsolutePath = [" + fileAbsolutePath + "]");

	File file = new File(fileAbsolutePath);
    if (file.exists() == false) {
    	out.println("{");
    	out.println("\"result\" : \"" + "0" + "\",");
    	out.println("\"err_code\" : \"" + "2" + "\",");
    	out.println("\"err_msg\" : \"" + "file not exist" + "\",");
    	out.println("\"file_type\" : \"" + fileType + "\",");
    	out.println("\"file_url\" : \"" + fileUrl + "\",");
    	out.println("\"file_size\" : \"" + "0" + "\",");
    	out.println("\"gmt_time\" : \"" + "" + "\",");
    	out.println("\"local_time\" : \"" + "" + "\"");
    	out.println("}");
	}
	else {
        long fileSize = file.length();

    	// A long value representing the time the file was last modified, measured in milliseconds
    	// since the epoch (00:00:00 GMT, January 1, 1970), or 0L if the file does not exist or if an I/O error occurs
    	long 			lLocalDateTime = file.lastModified();
    	Calendar 		calendar = Calendar.getInstance();

    	SimpleDateFormat format = new SimpleDateFormat();
    	format.applyPattern("yyyyMMddHHmmss");

    	// lFileModifyDateTime: the new time in UTC milliseconds from the epoch.
    	calendar.setTimeInMillis(lLocalDateTime);
    	String fileLocaDateTime = format.format(calendar.getTime());

    	// Local Time -> GMT Time
   		TimeZone timeZone = TimeZone.getDefault();
   	    int offset = timeZone.getOffset(lLocalDateTime); // The offset includes daylight savings time
   	    long lUTCDateTime = lLocalDateTime - offset;
   		calendar.setTimeInMillis(lUTCDateTime);
		String fileGmtDateTime = format.format(calendar.getTime());

		System.out.println("webplus_httphead> Size = " + fileSize + ", GMT = " + fileGmtDateTime + ", Local = " + fileLocaDateTime);

    	out.println("{");
    	out.println("\"result\" : \"" + "1" + "\",");
    	out.println("\"err_code\" : \"" + "0" + "\",");
    	out.println("\"err_msg\" : \"" + "" + "\",");
    	out.println("\"file_type\" : \"" + fileType + "\",");
    	out.println("\"file_url\" : \"" + fileUrl + "\",");
    	out.println("\"file_size\" : \"" + fileSize + "\",");
    	out.println("\"gmt_time\" : \"" + fileGmtDateTime + "\",");
    	out.println("\"local_time\" : \"" + fileLocaDateTime + "\"");
    	out.println("}");
	}

	System.out.println("webplus_httphead> success end ===============================================");
}
catch (Exception e) {
    System.out.println("webplus_httphead> " + e.getMessage());
    e.printStackTrace();

	out.println("{");
	out.println("\"result\" : \"" + "0" + "\",");
	out.println("\"err_code\" : \"" + "9" + "\",");
	out.println("\"err_msg\" : \"" + e.getMessage() + "\",");
	out.println("\"file_type\" : \"" + fileType + "\",");
	out.println("\"file_url\" : \"" + fileUrl + "\",");
	out.println("\"file_size\" : \"" + "0" + "\",");
	out.println("\"gmt_time\" : \"" + "" + "\",");
	out.println("\"local_time\" : \"" + "" + "\"");
	out.println("}");

    System.out.println("webplus_httphead> error end ===============================================");
}
%>