X-internetURL

From JCFWiKi

Jump to: navigation, search

[편집] 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 = "&nbsp;설치 완료";
			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 = "&nbsp;" + Fname;
			}
 
		}
......
 
</body>
</html>