在讨论移动商店可用的工具之前,我们应该先探讨一下什么是移动商店,它有怎样的重要意义,有哪些常见注意事项。此外,我们还会提到一些常见的错误以及未得到充分理解的一些概念,例如浏览器检测、JSP 选择和设备映射。本文假设大多数用户均无法访问全部可用设备。
您计划使能够通过移动设备访问的任何商店都属于移动商店。在现实中,移动商店包括所有 B2C 电子商务网站。原因在于,在当今的市场中,智能手机和平板电脑迅速普及,无论您是否制定了相应的计划,客户都会通过移动客户端访问您的商店。就此而言,较为明智的做法是至少使用某些移动设备对您的网站执行单元测试,确保您的网站能够提供愉快的购物体验。如果客户在需要时能够通过手机找到您的网站,而不必记住您的网站,稍后再尝试访问,那么他们更有可能购买您的商品。
那么,如何区分移动商店和仅能够通过移动浏览器查看的商店呢?这二者的区别在于,移动商店的设置使您能够根据发出请求的设备提供不同的标记。这种做法的目的是提供更加丰富的客户体验,吸引客户购买您的商品。这也就是说,与传统网站相比,移动商店提供的标记更适合在小尺寸的屏幕上查看,更便于用户进行交互。定制移动网络商店时,请务必始终牢记这几点。
为了使您的商店成为移动商店,您可以利用几种选项。首先,您可以利用 WebSphere Commerce 附带的 mobile starter store,另外也可以自给自足,利用各种表格中的映射(例如 DISPCGREL 和 DISPENTREL)来控制在响应移动请求时显示哪些 JSP 内容。Feature Pack 4 及其更高版本还提供了作为参考的原生和混合应用程序。这些原生和混合应用程序要求您的客户安装某种应用程序,而不是仅仅使用移动 Web 应用程序。这些参考应用程序展示了如何与其他服务协同工作,为移动设备用户打造更加丰富的体验。
接下来,我们将介绍一些概念,了解常见的故障点,以及请求在到达服务器之后的请求流。starter store 选择使用 JSP 来呈现内容,以 Struts 配置文件中的映射作为基础,如下所示:
<global-forwards><forward className="com.ibm.commerce.struts.ECActionForward" name="CompleteOrderView/201/-3" path="/AuctionArea/Messages/CompleteOrder.jsp"> <set-property property="implClassName" value="com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl" /> <set-property property="interfaceName" value="com.ibm.commerce.messaging.viewcommands.MessagingViewCommand"/></forward>
forward 元素 name 属性的语法是 "docname/storeID/deviceFormatID" 三段式语法,第三段的默认值为 "-1"。但在本例中,我们将其设置为 "-3"。请务必牢记,如果出现采用与您的计划不同的 JSP 的请求,那么原因可能是请求绕过了设备检测、用户代理字符串未映射到您定义的字符串,或者所请求的视图缺少映射。
如果您决定开发自己的移动商店,使用 DISPCGREL 和 DISPENTREL 表来控制要显示哪些页面,那么请务必注意映射的实际效果。假设您拥有如表 1 所示的示例项目。
表 1. DISPENTREL 表示例
CATENTRY_ID DISPENTREL_ID LANGUAGE_ID DEVICEFMT_ID STOREENT_ID PAGENAME CATENTTYPE_ID RANK 0 10001 -1 -11 10001 mobile/ShoppingArea/
CatalogSecion/
CatalogEntrySubsection/
PackageDisplay.jsp PackageBean 0 0 10002 -1 -1 10001 ShoppingArea/
CatalogSecion/
CatalogEntrySubsection/
PackageDisplay.jsp 1
rank 属性是升序排列的,因此零 (0) 排在第一位。此外,您需要将移动页面中的 rank 设置为高于默认值,因为人们选择的总是默认视图。为了进一步进行演示,当发出针对表的请求,要求获得该设备视图时(本例中为 -11),查询也会包含默认设备 ID (-1)。如果并未为该设备 (-11) 定义独立的视图,则将返回一个视图。因此,如果两个排名均为零 (0),则返回默认视图。
最后,如果您在开发自己的原生或混合应用程序,那么就需要在模拟器中或者设备本身之中进行测试。这需要安装,浏览器模拟器本身无法完成这项任务。如果您使用的是模拟器,尽管它竭力效仿设备,但可能仍然无法提供与设备本身我安全相同的呈现效果。此外,访问移动商店时,首先需要通过商店视图 URL 进入。正在运行的 servlet 过滤器将确定您运行的是哪种设备,并据以重定向。如果绕过这个 URL,那么浏览器检测就不会执行。商店视图 URL 形式如下:
http://localhost/webapp/wcs/stores/servlet/StoreView?storeId=10101
本文中使用以下产品和浏览器:
IBM® WebSphere Commerce V7.0.0.3 Toolkit with Feature Pack 3 IBM Rational® Application Developer V7.5.5.4 IBM Rational Application Developer V8.0.3 Fiddler2 V2.3.9.3 Mozilla® Firefox® 10.0.2 Internet Explorer® 9.0.8112.16421 UserAgent Switcher V0.7.3 Firebug® V1.9.1 WebDeveloper Toolbar V1.1.9 Android® SDK Tools Revision 16 Android 4.0.3 Android 3.1 Android 2.3.3