`
vickcy
  • 浏览: 31393 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

第一个项目之后的小总结

阅读更多
现在的项目已经进入收尾阶段了,虽然很小的项目,才5个画面,但是也经过了近半年的开发(从项目一开始到现在的负荷测试),多多少少有一些小小的总结,因为是刚工作,第一次做项目,以前只是在培训的时候做过,如果有不正确的地方,希望各大高手多加指正。

系统说明:
开发平台: 日本语Windows XP
IDE:          Eclipse 3.2
服务器:     Redhat Linux + Tomcat 5.5  + Apache2.0
JDK:         JDK1.4.3 (在JDK1.4.3的环境下需要下载安装Tomcat5.5的Compatability Package,安装方法是解压缩复制到tomcat安装目录下)
Framework:     Struts1.3.8
数据库:      Oracle

关于文字乱码
由于做的是对日项目,必然会涉及到文字编码转换的问题,经过查找网页和自己的领悟,得出了以下总结。
<%@ page language="java" contentType="text/html; 1#charset=windows-31j" pageEncoding="UTF-8" %>
在这句话里面有2个编码:
      第一个charset=windows-31j的作用是告诉JVM用windows-31j的编码格式输出数据给JSP页面,如果此项未定义,则服务器是 Tomcat的情况下,默认为ISO-8859-1;如果服务器是Apache+Tomcat则以 APACHE_ROOT/conf/httpd.conf中的charset为准,默认为ISO-8859-1。
      第二个pageEncoding="UTF-8"的作用是告诉JVM用UTF-8解释这个JSP,未定义的情况下参照charset。

2#charset=Shift_JIS">
这句话里面的charset作用是告诉浏览器用Shift_JIS来显示页面,此项不能设置为Windows-31j,因为IE的编码中没有 Windows-31j这一项,IE如果发现请求编码为Shift_JIS则自动会调用Windows-31j来进行解析,但是如果是IE不能辨识的编码 类型,IE会根据自己的推理自动选择一个与1#charset类型最接近的编码进行解析,很有可能出现乱码。

接下来是关于日本语版windows和日本语版Linux的JVM的文字编码问题。
Windows平台的JVM默认文字编码是MS932,但是Linux是UTF-8。所以被Windows JVM以java IO写出去的文件,如果在Linux JVM上同样用Java IO读取,就会出现乱码,原因就在这里。所以如果开发平台和服务器平台不一样的话,建议写文件和读文件的时候都指定一个统一的文字编码,这个文字编码可以 写在ApplicationResource.properties里面,这样能保证两边的读写操作文字编码一致。
java 代码
  1. ..............    
  2. String enc = "MS932";    
  3. FileInputStream fis = null;    
  4. BufferedReader br = null;    
  5. try {    
  6.      fis = new FileInputStream(FILE_PATH);    
  7.      br = new BufferedReader(new InputStreamReader(fis, enc);    
  8. catch (Exception e) {    
  9.      .........    
  10. finally {    
  11.      .........    
  12. }    

关于线程
这次的开发需要做个功能,在每次调用数据库fasade的时候,要控制超时,就是说如果数据库那边在20秒之后还没有返回,那么就要让自己的程序返回数据库超时的Message。
对于这个功能,我想了一下,只想到了用线程来实现,做法如下:
        先为那个需要控制的fasade方法造一个类继承Thread,然后在run()里面执行方法,之后把这个线程join()到Action中。
java 代码
  1. //  XXXAction.java  
  2. ...........  
  3. SearchThread thread = new SearchThread(xxxxxx,  xxxxxxx);  
  4. thread.start();  
  5. try {  
  6.      thread.join(MAX_WAIT_TIME);  
  7.      if (thread.isSuccess()) {  
  8.           result_lst = thread.getResults();  
  9.      } else {  
  10.           throw new DataBaseTimeoutException();  
  11.      }  
  12. catch (Exception e) {  
  13.      thread.interrupt();  
  14.      ........  
  15. }  


java 代码
  1. //    SearchThread.java  
  2. class SearchThread extends Thread {  
  3.        private List result = new ArrayList();  
  4.        private boolean success_flag = false;  
  5.        ...........  
  6.   
  7.        public SearchThread(xxxx,xxxxx) {  
  8.             .......  
  9.        }  
  10.   
  11.        public void run() {  
  12.              this.result = FasadeXXX.getSearchResult(xxxx,xxxx,xxxx);  
  13.              this.success_flag = true;  
  14.        }  

  15.        public List getResults() {  
  16.              return this.result;  
  17.        }  
  18.   
  19.        public boolean isSuccess() {  
  20.              return this.success_flag;  
  21.        }  
  22. }  


MAX_WAIT_TIME就是最大等待时间20秒,如果join()到达最长等待时间,但 是SearchThread里面的success_flag还没有被设置成true的时候,就是说明已经超时,检索没有完成,这个时候会抛出自定义的 DataBaseTimeoutException,中断线程。
不知道这样的做法是否安全,是否会造成线程的混乱,希望高手能指教。不过负荷测试做到现在貌似没有在线程方面发现什么问题,嘿嘿。

接下来是开发中遇到的一些小问题
有一次在进行了BUG修正后,出现了JSP页面提交的日本语乱码,而且是在第一个文字Filter的时候就已经乱码了,返回页面的自然也成了乱码,查了好久,终于在完全编译之后恢复正常了,至今不解是什么原因,难不成是Eclipse的BUG?
还有一个现象就是如果页面上的某一个图像的src=""那么就会发生再次向Server提交请求的现象,之后把这个图像的src改成某个存在的路径下的不存在的图像名字,就不会发生两次提交的现象了,这个难道是IE的机制?不解中……
还有一点需要注意的是Struts的Action是单例的,所以写在Action里的属性一定要考虑到线程安全的问题,特别是那些控制分页的变量,我就出 现这种错误,被老大发现了之后,把所有的Action里的属性变量全部改成方法里面的局部变量了。 ^^^>_<^^^

大致上就这么多了,这是在JavaEye上的第一篇文章,希望大家多加指点,谢谢……
分享到:
评论
2 楼 xiuying 2007-08-22  
加油哦!
1 楼 ojava 2007-08-17  
对我很有帮助,谢谢!

相关推荐

    IT项目管理那些事儿

    第1章 中小型民营IT企业项目管理手记 1.1 项目管理是什么 1.2 背景介绍 1.2.1 个人背景 1.2.2 公司背景 1.2.3 项目背景 1.3 软件工程 1.3.1 系统概述 1.3.2 系统规划 1.3.3 系统需求 1.3.4 系统设计 1.3.5 系统开发 ...

    商业智能(BI)项目可行性研究报告.docx

    商业智能(BI)项目可行性研究报告 21 / 21 商业智能(BI)项目 第一章、商业智能(BI)项目总体介绍 第一节、项目名称 商业智能(BI)项目 第二节、商业智能(BI)概念 商业智能又名商务智能,英文为Business ...

    计算机应用基础项目一-windows-7系统基本操作.pptx

    模块二 Windows7 操作系统 项目一 windows 7系统基本操作 计算机应用基础项目一-windows-7系统基本操作全文共14页,当前为第1页。 了解Windows 7的操作系统的任务栏和开始菜单 掌握控制面板中的一些项目的设置 项目...

    项目数据分析报告.docx

    项目数据分析报告 项目数据分析报告全文共8页,当前为第1页。 【范文:项目数据分析报告】 项目数据分析报告是通过对项目数据全方位的科学分析来评估项目的可行性,为投资方决策项目提供科学、严谨的依据,降低项目...

    数据仓库工作总结

    本文阅读方式:1、如果你认为本节没有意义,请将第二节作为第一节。2、如果你觉得第二节没有意义,请将第三节作为第一节。3、归纳:如果你觉得第X节没有意义,请将X+1节作为第一节。4、如果你觉得整个文档都没有意义...

    园区物联网项目实施方案.docx

    设施农业物联网管理系统 6 1.1系统架构 6 1.2系统功能 7 四、 人员培训和售后维修保养 12 4.1人员培训 17 4.2服务理念 21 4.3运维服务响应承诺 21 五、硬件及配套设施报价 21 六、 项目进度计划 25 6.1第一阶段 ...

    南京工业大学工程项目管理历年考研真题试卷

    1、预报名时大多数学院,每个专业下面的小方向可以随便写,那只是个形式,没人看,更没有导师看。 2、第一志愿报考的全部公费,即非调剂的全公费!调剂的除个别专业外全自费! 3、2008年及以前除化工学院外,其他...

    android实训报告总结.doc

    学员个人实训总结 "学员姓名 "XXX "填写日期 "xxxx-xx-xx " "实训项目编号 "xxxxx "实训项目... " ----------------------- android实训报告总结全文共2页,当前为第1页。 android实训报告总结全文共2页,当前为第2页。

    大数据项目需求调研.docx

    三、考察单位及人员: 大数据项目调研表 大数据项目需求调研全文共3页,当前为第1页。调研日期: 年 月 日 大数据项目需求调研全文共3页,当前为第1页。 公司名称 公司性质 产品类型 所在区域 调研人 岗位职务 销售...

    Android项目开发报告.docx

    Android项目开发报告 1项目简介 本次中软培训主要是关于android的基本应用开发,培训的任务主要是开发一个与日常生活花费有关的现金日记账软件,由于时间紧张此软件只实现了登录、注册、添加、查询等功能,未涉及...

    java毕业实习报告-1.docx

    这篇文章是关于在学习JAVA软件开发时练习项目的总结,简单总结为以下几点: 1、项目一定要全新的项目,不能是以前做过的 2、项目一定要企业真实项目,不能是精简以后的,不能脱离实际应用系统 3、在开发时要和企业的...

    java毕业实习报告资料.docx

    这 篇文章是关于在学习 JAVA 软件开发时练习项目的总结,简单总结为以下几点: 1、项目一定要全新的项目,不能是以前做过的 2、项目一定要企业真实项目,不能是精简以后的,不能脱离实际应用系统 3、在开发时要和...

    一个用python编写的俄罗斯方块小游戏.py

    第1部分 实训题目与要求 1.1 问题提出 俄罗斯方块游戏是一款经典的益智游戏,有PC和手机等多平台版本,既简单又耐玩。通过设计一款贪吃蛇游戏来巩固自己对Python语言的学习,并激发自己对学习编程的兴趣。 1.2 功能...

    服务器虚拟化项目P2V实施迁移方案.docx

    i 19 第页 服务器虚拟化项目P2V实施迁移方案 服务器虚拟化项目P2V实施迁移方案全文共30页,当前为第1页。服务器虚拟化项目P2V实施迁移方案全文共30页,当前为第1页。 服务器虚拟化项目P2V实施迁移方案全文共30页,...

    XinFramework:Android 快速开发框架 总结以往开发结合三方项目 不断更新

     由于工作比较忙只能闲暇时间来做,2017年6月第一次提交,基本满足小型项目的使用,之后会开发组件化版本,供大型项目使用。 精简版去掉了一些三方库,对该版本重构,目前可以以module形式引入Android项目,地址: ...

    计算机网络教案31-设计汇报-高阶项目.docx

    计算机网络教案31-设计汇报-高阶项目全文共3页,当前为第1页。计算机网络教案31-设计汇报-高阶项目全文共3页,当前为第1页。计算机网络课堂教学方案 计算机网络教案31-设计汇报-高阶项目全文共3页,当前为第1页。 ...

    调研与选型_总结1

    1. 为什么使用小游戏开发:调研小程序开发框架之后发现,前者的开源项目很少包含游戏类的,小游 2. 为什么选择Cocos:Cocos拥有更庞大的第三方库支持,便

    计算机应用技术专业学生毕业实习总结.docx

    计算机应用技术专业学生毕业实习总结全文共8页,当前为第1页。只要将dreamweaver的默认图象编辑器设为fireworks,那么在fireworks中制作完成网页图象后将其输出就会立即在dreamweaver中更新。fireworks还可以安装...

    java 面试题 总结

    例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望...

Global site tag (gtag.js) - Google Analytics