`
sharong
  • 浏览: 493431 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
D1667ae2-8cfc-3b68-ac7c-5e282789fa4a
论开源
浏览量:8720
7eb53364-fe48-371c-9623-887640be0185
Spring-data-j...
浏览量:13059
社区版块
存档分类
最新评论

开发wap项目随笔

阅读更多
很久没有开发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条。
当新增一条数据时,修订缓存中的全部相关数据,尤其是列表数据;当更新一条数据时,也需要做相同的动作。
分享到:
评论
5 楼 lyong757 2009-08-18  
我也想研究下wap服务器的架设 但是手头没有资料  不知能否给我一份资料  关于使用tomcat作为服务器如何架设wap服务器  邮箱:lyong757@163.com 
4 楼 sharong 2009-06-24  
myseo 写道
可以看下memcachedb

是memcached附带的一个产品么?是不是也是类似derby那样的内嵌数据库?有空研究下
3 楼 myseo 2009-06-05  
可以看下memcachedb
2 楼 swen00 2009-05-31  
空格,换行都会对显示造成问题,如果是tomcat服务器,在/conf/web.xml文件中配置
<init-param>
  <param-name>trimSpaces</param-name>
  <param-value>true</param-value>
</init-param>
1 楼 flynofry 2009-05-30  
我现在也做手机移动开发快一年了,手机上面的适配问题还真是需要积累经验。以后有问题多多请你指教!

相关推荐

    civil 3d .net二次开发随笔(-)

    ### Civil 3D .NET 二次开发随笔 #### 一、引言 随着三维建模技术的进步,Civil 3D 成为了土木工程、测绘、设计与施工领域的重要工具。Civil 3D 是一款由 Autodesk 公司开发的专业三维建模软件,广泛应用于土木...

    awt开发工具学习随笔

    在Java项目中,为了提高效率,开发者通常会使用自动化工具来生成DTO类、SQL语句和XML配置文件。这些工具可以帮助减少手动编码的工作量,保证代码的一致性和可维护性。 5. 使用Apache POI处理Excel文件: Apache ...

    盛大网游项目工作随笔

    盛大网络是中国网络游戏...总结来说,"盛大网游项目工作随笔"是一部关于网游开发和运营实战的宝典,涵盖了从底层网络通信到上层游戏逻辑的全方位技术细节,对于想要深入了解网游行业的读者来说,具有很高的学习价值。

    WPF开发随笔收录-心电图曲线绘制.doc

    WPF开发随笔收录-心电图曲线绘制 WPF开发随笔收录-心电图曲线绘制是一个关于WPF开发的心电图曲线绘制技术的记录,涵盖了心电图曲线绘制的实现方式、数据接收和绘制功能的实现、自动缩放功能的实现等知识点。 一、...

    李建壹 Louis Lee(小路哥 lotus Notes开发随笔.

    本文将深入探讨Lotus Notes的开发技术,结合李建壹 Louis Lee(小路哥)的开发随笔,揭示其在实际工作中的应用和经验分享。 Lotus Notes的核心特性在于它的数据库系统,它不仅仅是一个文档存储系统,更是一个强大...

    VS .NET报表开发之RDLC报表随笔

    - **创建报表**:在Visual Studio中新建一个项目,添加RDLC报表,通过拖拽和放置控件来设计报表布局。 - **设置数据源**:为报表指定数据源,可以是数据库查询结果、XML文件等。 - **样式和格式化**:调整报表元素的...

    计算机汉字录入课程项目训练考核教学随笔.pdf

    ### 计算机汉字录入课程项目训练考核教学随笔 #### 一、典型实用训练项目的形成 在职业学校的计算机录入课程教学中,采用具体而有针对性的训练项目实例来进行练习,并结合考核来强化学习成果,是一种行之有效的...

    android 随笔40K

    【Android随笔40K】是一个适合初学者的Android编程实践项目,主要目的是通过一个简单的便签应用(Notepad)来帮助学习者掌握Android开发的基础知识。在这个项目中,开发者可以了解到如何创建一个基本的Android应用...

    Android开发实战经典-020704-随笔提示文本:AutoCompleteTextView源代码和视频教程.zip

    Android开发实战经典_020704_随笔提示文本:AutoCompleteTextView源代码和视频教程.zip

    网恋随笔散文随笔散文.rar

    很抱歉,但根据您给出的信息,标题和描述中提到的是"网恋随笔散文随笔散文.rar",这明显与IT行业知识不相符,而更倾向于文学或个人创作。标签虽为"教育",但没有具体的IT教育相关知识点。压缩包子文件的文件名称列表...

    Java完整随笔(学习)

    12. **Java开发工具**:如Eclipse、IntelliJ IDEA的使用技巧,以及Maven或Gradle构建工具的配置和应用。 13. **单元测试**:JUnit或其他测试框架的使用,如何编写和执行单元测试,以及断言和测试最佳实践。 14. **...

    MATHCAD学步随笔

    工程数学软件实用入门资料,可视很好,不需要专门的语言。

    散文随笔【黄牛散文随笔】.rar

    "散文随笔【黄牛散文随笔】.rar" 是一个压缩文件,其中包含了由作者“黄牛”创作的散文随笔集合。这个标题指示我们,这是一份文学作品,主要涵盖了散文和随笔这两种文体,可能包含作者对生活、社会、自然等各方面的...

    散文随笔【人间五月散文随笔】.rar

    2. **PDF文件格式**:PDF(Portable Document Format)是Adobe公司开发的文档格式,它能保留原文档的字体、图像和版式,跨平台兼容性好,适合阅读和分享文本内容。 3. **散文随笔**:散文随笔是一种文学形式,介于...

    关于描写夏天的散文随笔.doc

    关于描写夏天的散文随笔.doc

    TT随笔一 啰嗦

    在博客中,作者可能分享了对某个开源项目或自研项目的源码剖析,涵盖了类的设计、函数的实现、模块的组织结构等方面。这有助于我们提升编程技巧,解决实际问题,并且在遇到类似问题时能够迅速定位和修复。源码分析也...

    教师随笔-小班教师政治随笔5篇.docx

    根据给定文件的信息,我们可以提炼出以下几个主要的知识点: ### 1. 幼儿教育的重要性 - **基础知识**:从婴幼儿出生到成长的过程是不断进步发展的。幼儿园阶段是这一过程中的重要环节,它不仅关系到孩子们的身体...

    Eclipse开发工具介绍

    Eclipse的主要作用是提供了自动编译、随笔提示、自动语法检查、代码修改建议、代码生成等功能,使开发者可以快速高效地开发Java应用程序。 4. JUnit测试工具的使用 JUnit是一个测试框架,提供了许多测试工具和技术...

    一年级数学第一学期教学随笔.pdf

    一年级数学第一学期教学随笔.pdf

Global site tag (gtag.js) - Google Analytics