X-internetURL
From JCFWiKi
[편집] StartXML을 JSP로 변환(Samples_ci_main.xml -> Samples_ci_main.jsp로 변환)
주소의 변경 없이 임의의 context path에서도 파일 업로드 프로그램이 실행될 수 있도록 설정하기 위해서 다음과 같은 java scriptlet을 StartXML의 상단에 삽입하고 파일 확장자를 xml에서 jsp로 변경한다.
<%@page contentType="text/xml; charset=utf-8" language="java" import="java.net.*" %><% String baseurl = ""; String scheme = request.getScheme(); String host = request.getServerName(); int port = request.getServerPort(); String path = request.getContextPath(); try { baseurl = new URI(scheme,null,host,port,path,null,null).toString(); } catch (URISyntaxException e) { e.printStackTrace(); } %><?xml version="1.0" encoding="euc-kr"?> ......
파일 업로드 샘플의 초기 로딩 시 jsp로 설정한 StartXML이 로딩될 수 있도록 index_start.jsp와 install_lite_320U.jsp 파일을 다음과 같이 수정한다.
우선 request에서 주소를 가져오고, 가져온 주소를 baseurl에 저장하여 실제로 주소가 필요한 소스파일에서 <%=baseurl%>의 형태로 다이나믹한 주소를 제공하게 된다.
- index_start.jsp
<%@page contentType="text/html; charset=utf-8" language="java" import="java.net.*" %> <% String baseurl = ""; String scheme = request.getScheme(); String host = request.getServerName(); int port = request.getServerPort(); String path = request.getContextPath(); try { baseurl = new URI(scheme,null,host,port,path,null,null).toString(); } catch (URISyntaxException e) { e.printStackTrace(); } %> <HTML> <html> <head> ...... <script language="javascript"> function fn_start() { /*alert(Check_Module()); alert("1");*/ if ( Check_Module() == "true" ) { MiInstallCtrl.Key = "DAEWOO1"; MiInstallCtrl.Version = "3.2"; MiInstallCtrl.Width = "1024"; MiInstallCtrl.Height = "768"; MiInstallCtrl.DeviceType = "Win32U"; MiInstallCtrl.Launch = true; MiInstallCtrl.UpdateURL = "http://scm.dev.daewoobrenic.co.kr/install320U/update_cfg.xml"; var Bcnt = MiInstallCtrl.ExistVersionUpCnt(); if ( Bcnt ){window.location = "<%=baseurl%>/install_lite_320U.jsp";} else {MiInstallCtrl.StartXml = "<%=baseurl%>/commonXML/Samples_ci_main.jsp";MiInstallCtrl.Width = 1024;MiInstallCtrl.Height = 768; MiInstallCtrl.Run(); opener=window; window.open('about:blank','_self').close(); } }else { alert("Cab파일 설치 오류 TobeSoft Col.,,Ltd.에서 배포하는 Miplatform ActiveX가 필요합니다."); } } </script> </head> <body onload="fn_start()"> <OBJECT ID="MiInstallCtrl" CLASSID="clsid:1A000B1F-B285-4fbf-B3CD-B50845003EBA" codebase="http://scm.dev.daewoobrenic.co.kr/install320U/MiPlatform_Updater320_20070809_1500.cab#version=2007,7,27,1" width=0 height=0 VIEWASTEXT> <param name="KEY" value="DAEWOO1"> <param name="VERSION" value="3.2"> <param name="DeviceType" value="Win32U"> </OBJECT> </body>
</html>
- install_lite_320U.jsp
<%@page contentType="text/html; charset=utf-8" language="java" import="java.net.*" %> <% String baseurl = ""; String scheme = request.getScheme(); String host = request.getServerName(); int port = request.getServerPort(); String path = request.getContextPath(); try { baseurl = new URI(scheme,null,host,port,path,null,null).toString(); } catch (URISyntaxException e) { e.printStackTrace(); } %> <html> <head> <meta http-equiv=Content-type content="text/html; charset=euc-kr"> ...... <SCRIPT language=JavaScript for=MiInstallCtrl event=OnEndDownLoad(VersionFileName,DownFileName,Type,TotalCnt,CurIndex)> { // alert("OnEndDownLoad : " + Type); if ( Type == 1 ) //EVENTCONFIG { TotalVersionFileCnt = TotalCnt; for ( var i = pg_cell_At ; i < progress.length ; i++ ) progress_update(progress,i); for ( var j = pg1_cell_At ; j < progress1.length ; j++ ) progress_update(progress1,j); if ( prc_msg != "" && prc_msg != null && prc_msg != "undefined" ) prc_msg.innerHTML = " 설치 완료"; MiInstallCtrl.Key = "DAEWOO1"; MiInstallCtrl.Version = "3.2"; MiInstallCtrl.Width = "1024"; MiInstallCtrl.Height = "768"; MiInstallCtrl.DeviceType = "Win32U"; MiInstallCtrl.Launch = true; MiInstallCtrl.ComponentPath = "%UserApp%TobeSoft\\ucups\\components"; MiInstallCtrl.StartXml = "<%=baseurl%>/DISODC_UI/Samples_ci_main.xml"; MiInstallCtrl.Run(); opener=window; self.close(); } else if ( Type == 2 ) //EVENTGETVERSIONCNT { if ( TotalCnt == CurIndex ){ for ( var i = pg1_cell_At ; i < progress1.length ; i++ ) progress_update(progress1,i); } else { if ( CurIndex > 1 ) { var before_At = pg_cell_At; pg_cell_At += parseInt( ( ( (CurIndex - 1)/TotalVersionFileCnt ) * progress.length ) - before_At ); for ( var i = before_At ; i < pg_cell_At ; i++ ) progress_update(progress,i); } pg1_cell_At = 0; var tpos = DownFileName.lastIndexOf("/") + 1; var Fname = DownFileName.substr(tpos,DownFileName.length - tpos); item_nm.innerHTML = " " + Fname; } } ...... </body> </html>
