如何给一个地址配置mapp路由和jsp处理页面

nandy007
   2013-07-08 09:41:14发布  2017-02-22 14:43:40更新 0收藏, 3054浏览
ExMobi服务端技术
0

ExMobi作为一个中间件,分为客户端(client)和服务端(server)两部分,客户端主要用于界面展示,服务端可以处理http/https网络请求、webservice、DB以及一些标准接口。

不管处理哪一种数据源,都是在服务端进行的,也就是说,客户端实际上并没有直接跟数据源打交道。

那么交互的过程是怎样的呢?

客户端实际是一个界面展现,手机用户在客户端点击任何需要数据交互的操作,客户端会把相关的指令告知服务端,服务端会根据mapp路由去找对应的jsp根据指令信息去进行相应的处理,处理完毕后,会把处理的结果响应给客户端。

那么如何给一个地址配置mapp路由和jsp处理页面呢?

举个例子;

假设客户端有个页面如下:

<!DOCTYPE html SYSTEM "http://www.nj.fiberhome.com.cn/exmobi.dtd">

<html>
<head>
<title>登陆界面</title>
<script>
function doSubmit(){
        if(document.getElementById("comname").value==""){
                alert("企业名称不能为空!");
                return;
        }else if(document.getElementById("username").value==""){
                alert("用户名不能为空!");
                return;
        }else if(document.getElementById("password").value==""){
                alert("密码不能为空!");
                return;
        }
        document.getElementById("form").submit();
}
</script>
</head>
<body>

<form id="form" action="http://domain/ydwq/checkLogin.jsp?type=mobile" method="post">
<input type="text" prompt="企业名称" style="width:70%" id="comname" name="username"/>
<input type="text" prompt="用户名" style="width:70%" id="username" name="username"/>
<input type="password" prompt="密码" style="width:70%" id="password" name="password"/>


<input type="button" style="width:30%" value="登录" onclick="doSubmit()"/>
<input type="reset" style="width:30%" value="重置" />
</form>
</body>
</html>

点击登录的时候信息校验通过会提交form表单,而这个表单要提交的地址是:

http://domain/ydwq/checkLogin.jsp

但是其实客户端并没有直接去请求这个地址,而是告诉服务端要请求这个地址,如果服务端没有在mapp中配置如有指向jsp处理,这个处理就会不成功,会报错。

所以接下来就是配置mapp路由,

<route baseaddr=http://domain>
                <forward path=check.jsp pattern=/ydwq/checkLogin.jsp.type=mobile></forward>
        </route>

同样域名的地址要放在同一个route里面,其属性baseaddr指明地址的域名

forwar标签是对域名下某个url地址配置处理的jsp文件,其中pattern属性指明符合url地址的正则表达式,而path是对应的ExMobi的jsp地址必须位于server目录下

最后就是便携check.jsp文件,在该文件中发起aa:http请求

<%@ page language="java" import="java.util.*,com.fiberhome.bcs.appprocess.common.util.*"
contentType="application/uixml+xml; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/client/adapt.jsp"%>
<aa:http id="checklogin"></aa:http>
<!DOCTYPE html SYSTEM "http://www.nj.fiberhome.com.cn/exmobi.dtd">
<aa:choose>
        <aa:when testxpath="//input[@name='password'] or //div[@id='title']" dsId="checklogin">
                <div>
                        <returncode id="returncode" value='false' type="hidden"/>
                </div>
        </aa:when>
        <aa:otherwise>
                <div>
                        <returncode id="returncode" value='success' type="hidden"/>
                </div>
        </aa:otherwise>
</aa:choose>

下载APP
扫码下载栗子社区APP