浏览 7762 次
锁定老帖子 主题:开发wap项目随笔
精华帖 (0) :: 良好帖 (3) :: 新手帖 (3) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-29
最后修改:2009-05-29
1.项目在开发中并没有遇到太多困难,但是测试的时候,由于多普达(dopod)c730的不兼容性,首页访问时就报错,曾一度无计可施。最后发现是空格的问题,根据空中网资深waper的说法,只要在一开始页头没有空格,制表符等字符,任何机型应该都可以正确显示,修改之,发现完全正确。 下面是页头的正确显示,在开发时使用了一个header.jsp页面,每个页面都需要引用它,header.jsp的页头大致显示如下: <%@ page language="java" contentType="text/vnd.wap.wml;charset=UTF-8"%><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <%@page import = "java.util.Date, java.text.SimpleDateFormat, java.util.Enumeration, java.util.regex.Matcher, java.util.regex.Pattern, org.apache.log4j.Logger, org.springframework.web.context.support.WebApplicationContextUtils" %> <%! final static Logger logger = Logger.getLogger("web"); ... ... 注意第一行,在<%@ page的语句引用之后,<?xml... 要紧跟其后,否则这里会有一个空格,郁闷,就这小问题一整天才解决。 但是多普达的机器还是需要先登录移动梦网,貌似是需要先配置物理层和链路层等,取得相关参数,才可以由梦网进入wap社区页面。 无论如何,总算搞定了这款难缠的机型。 2.诺大的公司,竟然无人给提供一个过滤字符和内容的模块,只好自己临时开发了一些通用方法,个人觉得以后也有用,贴在下面: /** * 此方法过滤字符串中的引用图片的标签<img * 代之以[图片不能显示] */ String flushImg(String sourceStr){ if(sourceStr == null || "".equals(sourceStr.trim())){ return null; } sourceStr = sourceStr.toLowerCase(); if(sourceStr.indexOf("<img") == -1){ return sourceStr; } String res = ""; int prefix = -1; while((prefix = sourceStr.indexOf("<img")) != -1){ String tempStr = sourceStr.substring(prefix); sourceStr = sourceStr.substring(0,prefix); int suffix = tempStr.indexOf(">"); if(suffix != -1){ sourceStr = sourceStr.concat("[图片不能显示]"); tempStr = tempStr.substring(suffix+1); sourceStr = sourceStr.concat(tempStr); res = sourceStr; } } return res; } /** * 过滤字符串中的html标签,在网上查了半天正则,最后还是自己修改出来了 * 一个基本没有bug的正则,今后大家google不用担心了,呵呵 */ String filterHtml(String str) { if(str == null || "".equals(str)){ return ""; } String regxpForHtml = "<([a-zA-Z/])([^>]*)>"; Pattern pattern = Pattern.compile(regxpForHtml); Matcher matcher = pattern.matcher(str); StringBuffer buffer = new StringBuffer(); boolean result1 = matcher.find(); while (result1) { matcher.appendReplacement(buffer, ""); result1 = matcher.find(); } matcher.appendTail(buffer); return buffer.toString(); } 3.本次开发中,由于wap社区很多模块只是从web社区取得数据,并不新增,实际上就是二者用一个数据库,但是实际开发中,由于很多地方使用了memcached作为缓存,所以形成这样一个现象,web社区修改了的数据,恰好在wap社区刚刚查看过,缓存中存在数据,所以web社区更新的记录,在wap社区不能马上体现,需要根据缓存的延时来确定。这对于用户体验有一定问题,今后开发中需要密切关注此问题。 另外,在使用memcached的时候,一般都是在memcached中保存一个列表,例如保存某个用户的日记列表,同时这个用户的所有日记也以主键->日记pojo的形式保存在了memcached中。开发时应该遵循这样一个原则,当用户新增一条数据(新增一篇日记),就需要刷新一遍日记列表,或者直接删除这个日记列表。这个日记列表,如果数量非常大的话,可以只存100条。 当新增一条数据时,修订缓存中的全部相关数据,尤其是列表数据;当更新一条数据时,也需要做相同的动作。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-05-30
我现在也做手机移动开发快一年了,手机上面的适配问题还真是需要积累经验。以后有问题多多请你指教!
|
|
返回顶楼 | |
发表时间:2009-05-31
空格,换行都会对显示造成问题,如果是tomcat服务器,在/conf/web.xml文件中配置
<init-param> <param-name>trimSpaces</param-name> <param-value>true</param-value> </init-param> |
|
返回顶楼 | |
发表时间:2009-06-05
可以看下memcachedb
|
|
返回顶楼 | |
发表时间:2009-06-24
myseo 写道 可以看下memcachedb
是memcached附带的一个产品么?是不是也是类似derby那样的内嵌数据库?有空研究下 |
|
返回顶楼 | |