Posted on 2006-03-30 10:59
Kevin Meng 閱讀(275)
評論(0) 編輯 收藏
進(jìn)行JSP開發(fā)時(shí),利用可中MVC框架使得開發(fā)起來非常便利。比較有名的MVC框架有struts,spring等。簡單,快捷的Struts是應(yīng)用最廣泛的一個。
arcIMS的客戶端開發(fā)模式分HTML Viewer和Java Viewer兩種,Java Viewer由于需要在客戶端安裝JRE,在webGIS開發(fā)中已經(jīng)被一棒打死。而arcIMS提供的HTML Viewer中,大量處理地圖的代碼都是用JavaScript編寫,界面代碼和業(yè)務(wù)處理代碼大量的混雜在一起,調(diào)試起來很不方便。利用struts對arcIMS請求代碼進(jìn)行封裝,實(shí)現(xiàn)了業(yè)務(wù)代碼和界面代碼的分離。
(1)在struts中新建一個action
<action-mappings >
??? <action
????? attribute="requestMapForm"
????? input="/index1.jsp"
????? name="requestMapForm"
????? path="/requestMap"
????? scope="request"
????? type="com.suzhou.struts.action.RequestMapAction" />
? </action-mappings>
(2)在map.jsp中新建一個form,對應(yīng)這個action,記住,struts的<url-pattern>必須設(shè)置成*.do的格式(在web.xml中設(shè)置),如果設(shè)置成/do/*格式,多次請求這個action會出現(xiàn)找不到action的錯誤。
<FORM action="requestMap.do" name="requestMapForm">
<INPUT type="submit" value="確定"/>
</FORM>
(3)編寫action代碼
代碼
??1
package
?com.suzhou.struts.action;
??2
??3
import
?javax.servlet.http.HttpServletRequest;
??4
import
?javax.servlet.http.HttpServletResponse;
??5
??6
import
?org.apache.struts.action.Action;
??7
import
?org.apache.struts.action.ActionForm;
??8
import
?org.apache.struts.action.ActionForward;
??9
import
?org.apache.struts.action.ActionMapping;
?10
?11
import
?com.esri.aims.mtier.io.ConnectionProxy;
?12
import
?com.esri.aims.mtier.model.map.Map;
?13
import
?com.suzhou.struts.form.RequestMapForm;
?14
?15
/**?*/
/**
?
?16
?*?MyEclipse?Struts
?17
?*?Creation?date:?03-29-2006
?18
?*?
?19
?*?XDoclet?definition:
?20
?*?@struts.action?path="/requestMap"?name="requestMapForm"?input="jspForm.jsp"?scope="request"?validate="true"
?21
?
*/
?22
public
?
class
?RequestMapAction?
extends
?Action?
{
?23
?24
????
//
?---------------------------------------------------------?Instance?Variables
?25
?26
????
//
?---------------------------------------------------------?Methods
?27
?28
????
/**?*/
/**
?
?29
?????*?Method?execute
?30
?????*?
@param
?mapping
?31
?????*?
@param
?form
?32
?????*?
@param
?request
?33
?????*?
@param
?response
?34
?????*?
@return
?ActionForward
?35
?????
*/
?36
????
public
?ActionForward?execute(
?37
????????ActionMapping?mapping,
?38
????????ActionForm?form,
?39
????????HttpServletRequest?request,
?40
????????HttpServletResponse?response)?
{
?41
????????RequestMapForm?requestMapForm?
=
?(RequestMapForm)?form;
?42
????????String?strAction
=
requestMapForm.getAction();
?43
????????
?44
????????ConnectionProxy?conn?
=
?
new
?ConnectionProxy();
?45
????????conn.setHost(
"
menglikun
"
);
//
ArcIMS服務(wù)器的名稱或者IP
?46
????????conn.setConnectionType(conn.TCP);
?47
????????conn.setPort(
5300
);
//
ArcIMS服務(wù)器的端口
?48
????????conn.setService(
"
zixian
"
);
//
需要調(diào)用的ArcIMS服務(wù)器的服務(wù)名稱
?49
????????conn.setDisplayMessages(
false
);
?50
????????
?51
????????
//
使用Map對象的訪問方式
?52
????????
/**/
/*
?53
????????Map?map=(Map)request.getSession().getAttribute("gongzhongMap");
?54
????????if(map==null){
?55
????????????//如果Map對象為空,新建一個Map對象
?56
????????????map=new?Map();
?57
????????????try{
?58
????????????????map.initMap(conn,0,false,false,false,false);
?59
????????????????map.refresh();
?60
????????????????request.setAttribute("mapURL",map.getMapOutput().getURL());
?61
????????????????request.getSession().setAttribute("gongzhongMap",map);
?62
????????????????return?mapping.getInputForward();
?63
????????????}catch(Exception?ex){
?64
????????????????System.out.println(ex.getMessage());
?65
????????????????ex.printStackTrace();
?66
????????????}
?67
????????}else{
?68
????????????map.refresh();
?69
????????????request.setAttribute("mapURL",map.getMapOutput().getURL());
?70
????????????request.getSession().setAttribute("gongzhongMap",map);
?71
????????????return?mapping.getInputForward();
?72
????????}
?73
????????
*/
?74
????????
/**/
/*
?75
?????????*?不使用Map對象,直接通過arcXML進(jìn)行請求的訪問方式。
?76
?????????*?這種方式的好處是可以使用arcXML所有的功能,功能非常強(qiáng)大。
?77
?????????*?但要自己寫代碼處理arcIMS返回的結(jié)果。
?78
?????????
*/
?79
????????String?strArcXML
=
"
<?xml?version=\
"
1.0
\
"
?encoding=\
"
UTF
-
8
\
"
??>
"
?80
????????????
+
"
<ARCXML?version=\
"
1.1
\
"
>
"
?81
????????????
+
"
<REQUEST>
"
?82
????????????
+
"
<GET_IMAGE>
"
?83
????????????
+
"
<PROPERTIES>
"
?84
????????????
+
"
<ENVELOPE?minx=\
"
-
13.62
\
"
?miny=\
"
33.91
\
"
?maxx=\
"
53.62
\
"
?maxy=\
"
73.33
\
"
?/>
"
?85
????????????
+
"
<IMAGESIZE?width=\
"
600
\
"
?height=\
"
400
\
"
/>
"
?86
????????????
+
"
</PROPERTIES>
"
?87
????????????
+
"
<LAYER?type=\
"
acetate\
"
?name=\
"
acetate\
"
?id=\
"
acetate\
"
>
"
?88
????????????
+
"
<OBJECT?units=\
"
pixel\
"
>
"
?89
????????????
+
"
<NORTHARROW?type=\
"
4
\
"
?coords=\
"
20
?
30
\
"
?shadow=\
"
32
,
32
,
32
\
"
?size=\
"
15
\
"
?/>
"
?90
????????????
+
"
</OBJECT>
"
?91
????????????
+
"
</LAYER>
"
?92
????????????
+
"
</GET_IMAGE>
"
?93
????????????
+
"
</REQUEST>
"
?94
????????????
+
"
</ARCXML>
"
;
?95
????????
try
{
?96
????????????conn.send(strArcXML);
?97
????????????
return
?mapping.getInputForward();
?98
????????}
catch
(Exception?ex)
{
?99
????????????System.out.println(ex.getMessage());
100
????????????ex.printStackTrace();
101
????????}
102
????????
return
?
null
;
103
????}
104
}