很久没有开发wap项目了,上一次开发wap项目还是03年非典的时候,开发的一款社区游戏。最近由于项目需要,临时又客串了一次waper,虽然开发周期很短,不到二周,但是还是学到了一些东西。
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条。
当新增一条数据时,修订缓存中的全部相关数据,尤其是列表数据;当更新一条数据时,也需要做相同的动作。
分享到:
相关推荐
本文是一篇介绍在VS .NET报表开发中,RDLC报表开发的随笔,写的不错。好东西要广传,现转载全文,并感谢网友“蜡人张”的随笔,本人收益较多。 (注:这个资源本应该是免费的,但小弟积分少的可怜,又需要下载一些...
java学习过程中的随手笔记,包括常见的文件选择和保存窗口的实现,poi的excel处理
台湾 lotus Notes高级开发工程是 李建壹 Louis Lee(小路哥 lotus Notes开发随笔.
使用.net对autodesk公司三维软件civil 3d进行二次开发的文档. civil 3d是可用于测量、设计、勘察、施工等领域的3维软件.
教师随笔-小班教师政治随笔5篇.docx
基于simulink与xpctarget的嵌入式系统开发随笔
本人在盛大做了一段时间的网游技术,本资源是一点点工作随笔。
WPF开发随笔收录-心电图曲线绘制.doc
容斋随笔
完整的学习JAVA的随笔
留守儿童教育随笔.doc
前端开发的一些随笔梯子articlefork
一年级语文教学随笔.pdf
校园文明随笔精选.doc
oracle 数据仓库随笔 oracle 数据仓库随笔 oracle 数据仓库随笔oracle 数据仓库随笔oracle 数据仓库随笔oracle 数据仓库随笔oracle 数据仓库随笔oracle 数据仓库随笔oracle 数据仓库随笔
小学三年级语文教学反思随笔[小学语文老师随笔我培训反思](20211124223534).pdf
网恋随笔散文随笔散文.rar
关于描写夏天的散文随笔.doc
工程数学软件实用入门资料,可视很好,不需要专门的语言。
疫情期间教师线上教学工作随笔.docx