已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件学院学生信息管理系统设计及STRUTS实现软件学院学生信息管理系统设计及STRUTS实现【摘要】 本系统是基于Struts来开发的一套B/S构架软件学院信息管理系统。该系统充分利用了Struts优势,将数据库操作的数据层代码与用户登陆使用的Web页代码分离开来,使软件在健壮性,代码重用和结构方面上一个新的台阶,大大提高软件开发效率。系统分为六大模块:课程模块,教务管理模块,教师模块,学生模块,科研管理模块,学院实验室模块。系统提供了友好的用户操作页面和方便快捷的操作,主要适用于本学院学生使用该系统做学院网上信息查询,CET报名,作业上传,课件下载等。也适用于教师使用该系统进行课件管理,查询学生情况等。同样也适用于负责教务的老师进行教务管理等。【关键词】 MVC Struts JSP Action 数据库 ABSTRACTThis paper describes the MIS of Software School. The System is developed based on Struts. It makes the best of Strutss powerful function, for examples, servlets handling the data access and navigational flow, while JSP pages handling the presentation. Java engineers and HTML developers each work on their own part of the application. It means that a change in one part of a Struts application dose not mandate a change to another part of the application, and HTML developers can often change the look and feel of an application without changing how the back-office servlets work. This system contains six components: Information of Courses, Education Administration, Teacher Component, Student Component, Scientific Research and Lab Management. It provides a friendly interface and powerful functions, and is designed to be used by students and teachers.KEYWORDS MVC Struts JSP Action Database目录引言4第一章项目整体规划及分析51.1项目概述51.1.1项目目的51.2.4项目背景51.2系统设计框架图91.2.1符号说明91.2.2系统整体流程图91.2.3系统详细的总体框架101.2.4模块简述111.3Struts 介绍121.3.1MVC 设计模式121.3.2MVC处理过程131.3.3MVC的优点131.3.4JSP Model1 和 JSP Model2141.3.5Struts概述151.3.6Struts体系结构及工作流程16第二章系统设计182.1开发工具182.2数据库设计182.2.1数据字典182.3程序设计192.3.1整体项目设计的数据库问题202.3.2项目开发中的国际化问题及Struts框架对国际化支持252.3.3已实现模块的流程概述312.3.4模块具体实现细节分析32第三章应用前景及后续工作373.1系统的应用前景373.2 后续工作373.2.1尚未解决的问题383.2.2需要改进的地方38第四章结论38第五章致谢语39第六章参考文献39引言目前市场上有很多的学生信息管理系统,但大多都是用PHP,VB,JSP来开发,将视图与后台数据处理混在一个页面,整体框架较为混乱,当项目较为庞大时,将会降低软件的健壮性,大大增加了重复的代码量。基于MVC设计模式的Struts框架,有效的改善了项目开发中的这些缺陷,大大提高后期软件开发效率。该系统分为六大模块:课程模块,教务管理模块,教师模块,学生模块,科研管理模块,学院实验室模块。第一章 项目整体规划及分析1.1 项目概述1.1.1 项目目的虽然我院已广泛采用上述技术在一定程度上实现了数字化办公,但大都是基于单机的应用,存在弊端如下: 1.学院的事务处理基本上依然是传统的纸介质文件传递方式,效率较低,受时间空间控制. 2.学院的教学资源管理,如课件,学生作业上传等,存在一定的混乱. 3.学院的学生信息不完善,造成查询困难. 综上,本小组预备研究设计一套适合本院实际应用的信息管理系统,最大程度地实现办公自动化,教学管理网络化,提高工作效率。 系统需要提供友好的用户浏览页面,使用方便,容易上手。由于该系统是采用B/S架构,因此对客户机的软硬件无特殊要求,只需有Web浏览器即可。1.2.4 项目背景 该项目是结合厦门大学软件学院的学生信息管理系统的需求分析来设计开发的,在项目开始阶段需要结合项目的背景对客户进行需求分析的调查,这为以后项目的详细设计提供依据,同时需求分析是客户和程序员之间沟通的过程,因此项目是否满足客户的需求,做好需求分析是很关键的。I. 需求分析目的A. 建立和用户之间的沟通桥梁:通过描述该系统的功能,可以从客户那得到反馈的意见和建议。避免了在开发过程中的不明确因素以及不完整功能实现。B. 提高开发效率:在编写需求分析的过程中可以及时发现一些问题并可以及时得到解决,减少了在开发过程中的回头现象,对开发的过程有个缜密的计划,并及时纠正一些错误的主观理解。C. 为进度安排提供依据:经过对开发系统的详细描述使我们对开发需要的环境、资源等有了较清楚的认识因此在安排进度上能更加合理。D. 为以后软件测试、扩展提供参考II. 支持文档A. 软件学院管理信息系统需求分析说明书B. 软件学院信息管理系统毕业设计开题报告C. 软件学院办公管理信息系统总体设计报告III. 背景A. 作为毕业设计的课题B. 本系统作为厦门大学软件学院学生信息管理系统IV. 任务概述A. 目标建立一个稳定可靠的行政教学信息管理系统,为教务部门、老师、学生提供高效的信息办公服务。通过校园网访问该系统的访问者可以方便地进行全面及时的信息数据查询录入;其根本目的是为了提高学院办公教学管理的效率。B. 约束 本项目开发受到的很诸多约束限制,这将影响任务的完成,因此以下因素以予考虑:a 经费限制:本项目是学院自主开发项目,投入经费不可能很多。b 开发期限:现在的开发期限大约为三个月,在开发周期内将进行需求调查分析、系统设计、软件编码、系统测试等工作,时间较为紧迫。c 人力资源:项目组目前人员较少。d 软硬件资源:软件学院目前的软硬件资源有限,系统开发工作要充分考虑到学院的软硬件资源的限制。C. 数据描述系统的数据分为静态数据和动态数据。静态数据是指系统运行过程中主要的参考数据,在很长时间内一般不会随着运行而变化。而动态数据是在运行过程中要发生变化的数据,以及在运行过程中要输入和输出的数据a 静态数据:静态数据即系统运行前已有的数据。例如,(1) 学生信息基本表(包括学号,姓名,性别,籍贯,家庭电话,家庭住址,手机,Email等)(2) 教师信息基本表(包括教师编号,姓名,性别,国籍,联系电话,住址, Email等)(3) 系统角色定义表(包括角色编号,角色名称,角色权限,角色描述等)(4) 学院现有班级信息记录表(包括班级记录编号,班级名称,班级类型,学生入学年份等)(5) 学生用户表(包括学号,角色编号,用户密码)(6) 教师用户表(包括用户名,角色编号,用户密码)(7) 学生就业情况记录表(包括学号,单位名,单位性质,所属省份,所在城市等)(8) 党员情况记录表(包括党员ID,学生学号,所属党支部,申请入党时间,党校学习时间,入党时间,转正时间等)(9) 评优及奖学金记录金(包括获奖编号,获奖名称,获奖等级等)(10) 学生活动记录表(包括活动编号,活动内容,活动获得的综合测评得分等)(11) 实验室信息表(包括实验室编号,实验室名称,实验室说明等)(12) 实验室安排表(包括实验室课程安排记录编号,实验室编号,学年,日期,上课时间,课程编号等)(13) 其他b 动态数据:系统运行过程中需要的输入数据以及系统运行过程中产生的输出数据。例如,(1) 用户名和密码(2) CET报名记录表(包括学生学号,CET考试编号,报考 CET考试类型,考试费用是否已交等)(3) CET控制表(包括CET考试编号,报名开始日期,报名截止日期)(4) 其他V. 性能要求对于我们的系统我们的性能需求主要包括时间需求、适应性、可用性、数据精确度、安全保密性、可跨平台性等。A. 时间要求由于是通过校园网进行访问,故下载网页的时间应该不大于3秒运行时间没有限制B. 适应性管理信息系统要求能有比较好的适应性,能使用键盘鼠标进行操作,能在32位的视窗操作系统上顺利运行C. 可用性要求系统在出现故障后能正确恢复。D. 数据精确度由于输入的数据涉及较少,故只要求小数能精确到小数点后两位就可以了。E. 安全保密性系统所保存的信息都是较为公开的信息,故不要求对数据进行加密,但是要对用户的访问进行控制,分配不同的权限,根据权限的不同访问不同的资源;同时要建立日志记录用户的访问情况。F. 可维护性要求该系统是可维护的,主要的维护工作集中在用户信息的维护及数据库的维护等。G. 可跨平台性和可移植性系统使用JAVA开发,有很好的移植性。VI. 运行环境描述A. 运行该软件所需要的设备及其规格客户端要求:CPU为奔腾III以上处理器,内存为64兆以上。服务端要求:服务器CPU为奔腾4或同级CPU,内存256M以上。B. 支持软件网络操作系统:中文Windows 2003 Server数据库:SQL Server 2000Web Server:Tomcat及J2EE Application Server网关软件:Sygate客户端:IE5.0版本浏览器以上C. 接口无特殊的硬件接口通讯接口要求安装TCP/IP协议D. 控制要求输入控制:对必须输入的项目和输入的类型进行提示,提交时要求进行数据校验,以保证输入数据的正确性。故障处理:对出现网络中断、系统崩溃等现象时,数据不会被破坏,同时数据在平时要进行及时的数据备份,以便在出现故障是及时还原。E. 用户界面用户界面要简洁友好、层次清晰、功能分类明确、风格要求统一,不仅包括界面风格及数据格式如时间格式等。1.2 系统设计框架图 为了明确系统目标同时为系统的实现提供流程依据,这里提供了系统的总体设计框架图来大概说明系统的主要模块以及总体流程。1.2.1 符号说明 图1 以下所用到的框图所表示的含义1.2.2 系统整体流程图图2 系统总体的简单流程1.2.3 系统详细的总体框架系统管理员给予注册权限注册登陆学生系统管理员新增用户管理数据库其他用户课表查询个人信息查询个人工具箱教师团委行政人员课件管理作业管理论文管理学生综合素质测评管理选修课程安排CET报名管理不及格学生查询学杂费缴费管理图3 总体框架1.2.4 模块简述功能名称功能标识符功能详细描述院选修课子系统Elective_info学生通过网络选院选修课CET报名子系统CET_Sign学生通过该系统报名。管理者在规定日期后,获得报名成功的学生的信息。学生可查询自己报名成功已否。学费书费缴纳子系统Fee_Pay登记,查询学生学费缴纳情况毕业设计子系统Graduate_Design登记,查询应届毕业生毕业设计进展状况论文管理子系统Paper_Manage上传,查询教师,学生论文教学课件管理子系统PPT_Manage上传,下载教师教学课件学生作业管理子系统Homework_Manage上传,批改学生作业课表查询子系统Course_Timetable查询本院的课程开设状况,及每个课程的学生状况综合素质测评子系统Moral_Score登记,查询各个学生的综合素质得分个人档案查询子系统Individual_Info查询个人的信息个人工具箱子系统My_Tools-更改登陆密码,发送信息给其他用户1.3 Struts 介绍1.3.1 MVC 设计模式 MVC 模式是1996年由Buschmann提出的,即Model-View-Controller的缩写,是一种常用的设计模式。它强制性地把应用程序的输入,处理和输出分开,减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。它的3个主要组成部分如下:模型(Model):是应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供数据。由于同一个模型可以被多个视图重用,所以提高了应用的可重用性。视图(View): 是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理,视图可以向模型查询业务状态,但不能改变模型。视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。控制器(Controller):接受用户的输入并调用模型和视图去完成用户的需求。当Web用户单击Web页面中的按钮来发送HTML表单时,控制器接收请求并调用相应的模块组件去处理请求,然后调用相应的视图来显示模型返回的数据。MVC的工作原理如下图所示: 图4 MVC工作原理1.3.2 MVC处理过程首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理;然后模型根据用户请求来进行相应的业务逻辑处理,并返回数据;最后控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。1.3.3 MVC的优点 在最初的JSP网页中,象数据库查询语句这样的数据层代码和象HTML这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心地计划和不断地尝试。MVC从根本上强制性地将它们分开。尽管构造MVC应用程序需要一些额外的工作,但是它给我们带来的好处是无庸置疑的。首先,多个视图能共享一个模型,如今,同一个Web应用程序会提供多种用户界面,例如用户希望既能通过浏览器来收发电子邮件,还希望通过手机来访问电子邮箱,这就要求Web网站同时提供Internet界面和WAP界面,在MVC设计模式中,模型响应用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个模型可以被不同的视图重用,所以大大提高了代码的可重用性。其次,模型是自包含的,与控制器和试图保持相对独立,所以可以方便地改变应用程序的数据层和业务规则。例如,如果把数据库从SQLServer移植到Oracle,或者把RDBMS数据源改变成LDAP数据源,只需改变模型即可,一旦正确地实现了模型,不管数据来自数据库还是LDAP服务器,视图都会正确显示它们。由于MVC的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的松耦合的构件。此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接不同的模型和视图去完成用户的需求,也可以构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型进行处理,然后选择适当的视图将处理结果显示给用户。使用MVC需要精心的计划,由于它内部原理比较复杂,将MVC运用到应用程序中,会带来额外工作量,增加应用的复杂性,所以,MVC不适合小型应用程序,但对于开发存在大量用户界面,并且业务逻辑复杂的大型应用程序,MVC将会使软件在健壮性,代码重用和结构方面上一个新的台阶。尽管在最初构建MVC框架时会花费一定的工作量,但从长远的角度来看,它会大大提高后期软件开发效率。1.3.4 JSP Model1 和 JSP Model2Sun公司先后制定了两种规范,称为JSP Model1 和JSP Model2。两者的本质区别在处理用户请求的位置不同。在Model1体系中,如下图所示,JSP页面负责响应用户请求并将处理结果返回给用户。JSP既要负责业务流程控制,又要负责提供表示层的数据,同时充当视图和控制器,未能实现这两个模块之间的独立和分离,因此Model1不适合开发复杂的大型应用程序。图5 Model1 模型JSP Model2体系结构是一种联合使用JSP与Servlet来提供动态内容服务的方法。它结合了JSP和Servlet两种技术各自的优点,用JSP生成表示层的内容,让Servlet完成深层次的处理任务。即,Servlet充当控制器的角色,负责处理用户请求,创建JSP页需要使用的JavaBean对象,根据用户请求选择合适的JSP页返回给用户,在JSP页内没有处理逻辑,它仅负责检索原先由Servlet创建的JavaBean对象,从Servlet中提取动态内容插入到静态模板。如下图所示: 图6 Model 2 模型1.3.5 Struts概述Struts最早是作为Apache Jakarta项目的组成部分问世运作。项目的创立者希望通过对该项目的研究,改进和提高Java Server Pages、Servlet、标签库以及面向对象的技术水准。Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。它的目的是为了减少在运用MVC设计模型来开发Web应用的时间。你仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。 Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的工作原理,如下图所示: 图7 Struts 工作原理1.3.6 Struts体系结构及工作流程让我们从MVC角度观察struts框架中的组件。框架中三个部分:模型,视窗和控制器。I 模型在struts框架中,模型分为两个部分:lA.系统的内部状态lB.可以改变状态的操作(事务逻辑) 内部状态通常由一组ActinForm JavaBean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。 大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。II 视窗 由JSP建立,struts包含扩展自定义标签库,可以简化创建完全国际化用户界面的过程。III 控制器 Struts中,基本的控制器组件是ActionServlet类中的实例servlet,实际使用的servlet在配置文件中由一组映射(由ActionMapping类进行描述)进行定义。图8 Struts体系结构 图9 Struts响应流程第二章 系统设计2.1 开发工具 系统使用由IBM开发的免费的Eclipse作为开发工具,由于是基于Struts构架,因此使用了EasyStruts作为Eclipse插件,提高了编写Struts的效率。数据库设计工具使用的是PowerDesigner 11,创建sql脚本方便快捷。数据库采用的是SQLServer 2000。2.2 数据库设计数据库是整个项目的核心部分,数据库设计的好坏很大程度上影响到系统的设计。有的数据是静态的即在系统运行之前就需要提供的,有些是动态生成的,需要清楚哪些是静态数据哪些是动态数据。同时数据库的设计需要遵循其设计原则。2.2.1 数据字典说明用于唯一地标识数据库和表文件的代码、名称或标识符、功能(说明数据库/表的作用)、使用它的程序、附加的描述性信息。(Y表示“yes”,N表示“no”)。users_student(学生用户)字段PKUK/NNFKTYPEstudent_noYUK/NNYvarcharrole_idNNNYintuser_pwdNNNNvarcharusers_teacher(教师用户)字段PKUK/NNFKTYPEuser_nameYUK/NNNvarcharrole_idNNNYintuser_pwdNNNNvarcharrole(用户角色表)字段PKUK/NNFKTYPErole_idYUK/NNNintrole_nameNNNNvarcharrole_purviewNNNNvarcharrole_commentNNNNvarcharteachers(教师信息表)字段PKUK/NNFKTYPEteacher_idYUK/NNNintuser_nameNUK/NNYvarcharteacher_nameNNNNvarcharteacher_sexNNNNvarcharteacher_birthdayNNNNdatetimeteacher_degreeNNNNvarcharteacher_positionNNNNvarcharteacher_countryNNNNvarcharteacher_mobileNNvarcharteacher_emailNNNNvarcharteacher_addressNNNNvarcharteacher_phoneNNvarcharteacher_introduceNNNNvarcharstudents(学生信息表)字段PKUK/NNFKTYPEstudent_noYNNNvarcharstudent_nameNNNNvarcharstudent_sexNNNNvarcharhome_phoneNNvarcharhome_addressNNnvarcharstudent_typeNNNNvarcharstudent_birthdayNNNNdatetimestudent_gradeNNNNvarcharstudent_nativeNNNNvarcharstudent_polityNNNNvarcharstudent_phoneNNvarcharstudent_mobileNNvarcharstudent_emailNNvarcharstudent_addressNNvarcharstudent_interestNNvarcharclass_idNNNYvarcharClasses(班级信息表)字段PKUK/NNFKTYPEclass_idYNNNvarcharclass_nameNNNYvarcharclass_typeNNNNvarcharclass_yearNNNNvarcharclass_noNNNNbitteacher_idNNNYint2.3 程序设计在概要设计以及数据设计后就开始对系统进行详细设计。系统的详细设计是下一步编码的主要依据,详细设计的描述和程序的代码思路是非常接近的,因此这里应该尽量描述得详细全面,否则将对编码带来很大的影响。2.3.1 整体项目设计的数据库问题I. 数据库连接Java 中数据库连接有2种方式,1. 用jdbc-odbc bridge 直接连接SQLServer2. 用jdbc直接连接SQLServer 第一种方法可移植性不好,当SQLServer改变部署在另一台机子时,需要重新设置数据源.因此,为了开发方便,采用第二种方法.第二种方法的具体步骤如下:首先到微软的网站下载jdbc for sqlserver的driver 地址是: Microsoft SQL Server 2000 Driver for JDBC(/downloads/release.asp?releaseid=38312)然后下载安装到要安装的目录中,假设安装目录为d:javaforsql安装后要在classpath中设置路径d:javaforsqllibmsbase.jar;d:javaforsqllibmssqlserver.jar;d:javaforsqllibmsutil.jar在程序中可进行如下设置:首先注册驱动器,使用sqlserver jdbc驱动的别名:com.microsoft.jdbc.sqlserver.SQLServerDriver程序为Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); 然后要设置连接String url=jdbc:microsoft:sqlserver:/yourserver:port;DatabaseName=yourdatabaseConnection conn= DriverManager.getConnection(url,uername,password);II. Struts对数据库连接的支持Struts配置文件struts-config.xml有一data-sources元素,可用来配置应用所需的数据源。数据源负责建立和特定数据库的连接,许多数据源采用连接池机制实现,以便提高数据库访问性能。Java 语言提供了javax.sql.DataSource接口,所有的数据源必须实现该接口。许多应用服务器和Web容器提供了内在的数据源组件,很多数据库厂商也提供了数据源的实现。下图表现了Web应用通过数据源访问数据库的过程。Web应用javax.sql.DataSource接口Poolman数据源JDBC Pool数据源DBCP数据源数据库 图10 Web应用通过数据源访问数据库下表列出了几种比较流行的数据院实现名称 供应商 URLPoolman开放源代码软件/projects/poolman/ExpressoJcorporateJDBC Pool开放源代码软件/projects/jdbcpool/DBCPJakarta/commons/index.html元素包含零个,一个或多个子元素。元素用于配置特定的数据源,它可以包含多个子元素。元素用于设置数据源的各种属性。下面的代码为本项目在struts-config.xml中的配置数据源,实现了与SQLServer 数据库的连接 配置了数据源后,就可以在Action类中访问数据源。在org.apache.struts.action.Action类中定义了getDataSource(HttpRequest)方法,它用于获取数据源对象的引用。以下程序代码是本项目在Action类访问数据源的一个实现:public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exception javax.sql.DataSource dataSource; java.sql.Connection con; try dataSource=getDataSource(request); con=dataSource.getConnection();catch(SQLException sqle)getServlet().log(“Ccess”,sqle);finally/enclose this in a finally block to make /sure the connection is closed.Try con.close();catch(SQLException e)getServlet().log(“Connection.close”,e);也可以在配置文件中声明多个数据源,此时需要为每一个数据源分配唯一的key值,通过该值来标识特定的数据源。例如: .properties as before .properties as before .在Action类中通过以下方式访问特定的数据源: dataSourceA=getDataSource(request,”A”); dataSourceB=getDataSource(request,”B”);由于本项目只用到一个数据库 “eManage”,所以只配置了一个数据源。III. 处理数据库数据编码如果数据库系统的字符编码为 ”GB2312”,那么可以直接读取数据库中的中文数据,而无需进行编码转换。如果数据库字符编码为 “ISO-8859-1”,那么必须先对来自数据库的数据进行编码转换,然后才能使用.例如: Connection con=DbUtil.connectToDb(); PreparedStatement pStmt=null; Result rs=null; pStmt=con.prepareStatement(“select FIELD1 from MYTABLE”); rs=pStmt.executeQuery();while(rs.next() String field1=rs.getString(“FIELD1”); String field1_ch=new String(field1.getBytes(“ISO_8859-1”), “GB2312”); /process data由于本系统所采用的SQLServer 2000数据库中文版的字符编码为”GB2312”,所以可以直接读取数据库中的中文数据.2.3.2 项目开发中的国际化问题及Struts框架对国际化支持I. 本地化与国际化的概念在过去,软件开发者在开发应用程序时,将注意力集中于实现具体的业务逻辑.软件面向的用户群是固定的,软件只需要支持一种语言.如今,随着跨国业务的迅猛发展,需要同一个软件能同时支持多个语言和国家.对于已经开发好的软件,比如某种英文软件,如果要是其支持新的语言,比如中文,必须对该软件进行中文本地化.对软件的本地化设计修改原有程序的代码,数据和配置文件等,需要在原有软件的基础上开发出新的软件版本.国际化(简称I18N)指的是在软件设计阶段,就应该使用软件具有支持多种语言和地区的功能.这样,当需要在应用中添加一种新的语言和国家的支持时,不需要对已有的软件返工,无需修改应用的程序代码.软件的本地化与国际化的区别如图所示.简单地说,本地化意味着针对不同语言的客户,开发出不同的软件版本;国际化以为着同一个软件可以面向使用各种不同语言的客户. 图11 本地化与国际化的Web应用区别Locale(本地)指的是一个具有相同风俗,文化和语言的区域.如果一个应用没有事先把I18N作为内嵌的功能,那么当这个应用需要支持新的Locale时,开发人员必须对嵌入在源代码中的文本,图片和消息进行修改,然后重新编译源代码.每当这个应用需要支持新的Locale时,就必须重复这些繁琐的步骤,这种做法显然大大降低了软件开发效率.II. Struts框架对国际化的支持Struts框架对国际化的支持体现在能够输出和用户Locale相符合的文本和图片上.当Struts配置文件的元素的locale属性 为true时,Struts框架把用户的Locale实例保存在session范围内,这样,Struts框架能自动根据这一Locale实例来Resource Bundle中选择合适的资源文件.如图,当用户的Locale为英文时,Struts框架就会向用户返回来自于application_perties文件的文本内容;当用户的Locale为中文时,Struts框架就会向用户返回来自于application_perties文件的文本内容.Web客户1Locale=enWeb客户2Locale=chStruts框架application_pertiesApplication_perties 图12 Struts框架根据用户的Locale来选择资源文件对于多应用模块的Struts的应用,可以为每个子配置一个或多个Resource Bundle,应用模块中的Action,ActionForm Bean,JSP页和客户化标签都可以访问这些Bundle.Struts配置文件中的每个元素定义了Resource Bundle.当应用中包含多个Resource Bundle时,它们通过元素的key属性来区别.Resource Bundle的持久化消息文本存储在资源文件中,其扩展名为”.properties”,这一文件的格式为:key=value.默认资源文件名应该取为perties.当Struts 框架处理Locale为中文的用户请求时,它会依次搜索如下资源文件: application_ch_CN.properties application_perties perties Struts框架首先在WEB-INF/classes/目录下寻找application_ch_CN.properties文件,如果存在该文件,就从该文件获取文本信息,否则再依次寻找application_perties和pertie文件.III. 本项目实现的中文应用本地化A. 处理响应结果的编码 在JSP的开头,编写此语句 在HTML中,编写此语句 B. 采用Servlet 过滤器设置请求数据的字符编码 调用HttpServletRequest的setCharacterEncoding(“UTF-8”)方法,能够把用户的请求数据的字符编码也设为UTF-8.这样,Web应用的输入和输出都采用同一种编码,就无需在程序中进行编码的转换.这一功能可以由Servlet过滤器来完成,因为它可以预处理所有的HTTP请求,这样能避免在每个Web组件中设置请求数据编码。如图:Web客户Servlet过滤器Web组件Web组件UTF-8 图13 filter工作原理以下代码为设置过滤的SetCharacterEncodingFileter.java,位于工程中other包中.package other;import java.io.IOException;import java
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山东外事职业大学单招职业技能考试题库及答案解析(名师系列)
- 2026年浙江邮电职业技术学院单招职业技能测试必刷测试卷及答案解析(夺冠系列)
- 2026年大庆职业学院单招综合素质考试必刷测试卷附答案解析
- 备考2026初级会计职称《经济法》三色笔记
- 房屋拆除承包协议书
- 房屋收回委托协议书
- 房屋无偿转租协议书
- 房屋纠纷调节协议书
- 房屋翻修写合同范本
- 房屋财产安全协议书
- 老年人安全用药与护理
- 高校教师教学评价标准与案例分析
- 医疗机构输血科(血库)建设管理规范
- 2025-2030脑机接口医疗设备注册审批通道与伦理审查要点
- 项目实施运行保障措施
- 2025年机动车科目一考试题库pdf及答案
- 备考国企笔试题库及答案
- 品质部年度总结
- 营地安全管理培训课件
- 食品微生物安全知识培训课件
- 钢结构防腐施工质量控制措施
评论
0/150
提交评论