《j2ee系统架构和程序设计》课程设计实训项目——某职业技术学院学生选课信息管理系统_第1页
《j2ee系统架构和程序设计》课程设计实训项目——某职业技术学院学生选课信息管理系统_第2页
《j2ee系统架构和程序设计》课程设计实训项目——某职业技术学院学生选课信息管理系统_第3页
《j2ee系统架构和程序设计》课程设计实训项目——某职业技术学院学生选课信息管理系统_第4页
《j2ee系统架构和程序设计》课程设计实训项目——某职业技术学院学生选课信息管理系统_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录J2EE系统架构和程序设计课程设计实训项目某职业技术学院学生选课信息管理系统2111项目背景及业务领域与目标2112学生选课信息管理系统需求2113学生选课信息管理系统需求分析4114系统设计系统架构设计8115系统设计系统数据库逻辑结构设计9116系统设计系统详细设计13117系统实现17118在项目中应用核心设计模式40119项目核心程序类代码461110对系统中的核心程序类中的方法进行单元测试671111课程实训项目开发的心得体会71J2EE系统架构和程序设计课程设计实训项目某职业技术学院学生选课信息管理系统111项目背景及业务领域与目标1、项目背景说明今天,随着信息技术的发展,各高校的选课流程已不再是过去的手工形式了。取而代之的是各种各样的选课电子系统。选课流程繁琐复杂,而且容易出错,如何有效的理清各项工作流程并且使整个选课过程高效的进行,一直是我们探索的课题。这次,应客户的需求,我们决定开发一套某职业技术学院学生选课信息管理系统。2、业务领域与目标(1)业务领域本系统面向中小型学院,用户群体为学院的教务科,教师以及学生。(2)业务目标根据现实选课流程实现各种操作,如发布课程,删除课程,查询课程,浏览所选课程,提交课程以及其他查询教师和教室等相关操作。112学生选课信息管理系统需求1、选课系统功能性需求描述1学生有登录选课系统的帐号和密码。2学生在登录选课系统后可执行选课操作。3学生在登录选课系统后可执行退课操作。4学生在登录选课系统后可执行查询操作(包括本学期课表及其它课程)。5管理员进行课程信息维护(包含添加、修改、删除、故障解决)。6管理员进行学生信息维护(包含添加、修改、删除、故障解决)。7管理员进行系统维护。2、选课系统非功能需求(1)系统承载量总用户数50000,峰值在线用户数9000,峰值并发用户数1000,平均在线用户数3000,平均并发用户数500。(2)系统性能指标1)日常交互类的平均响应时间添加管理员添加课程删除课程查看用户注销删除管理员114系统设计系统架构设计本系统在框架设计上采用STRUTS框架,在数据持久化技术应用上采用JDBC数据库访问技术,页面设计中使用CSS技术美化界面,使用共有文件统一各页面的风格。此外,在页面显示部分,采用STRUTS标签技术,系统上下全部实现国际化;采用XMLXSLT技术实现课程详细信息部分的显示,并运用AJAX技术实现在线人数统计。1、开发平台的选择本项目采用JAVA平台(由前面的设计约束已经决定),其中用到了XML和AJAX技术,使用的数据库为MYSQL,开发工具为MYECLIPSE,应用服务器为TOMCAT。2、C/S还是B/S影响选择的决定因素本项目B/S,基于达到“零维护”;同时,浏览器可以解析JAVASCRIPT,能够实现AJAX技术,符合技术要求。3、选择什么类型的框架选择STRUTS框架,主要原因是应用MVC体系架构分离系统的表示和业务处理层。4、系统的架构的包图系统采用四层架构整个系统遵循多层次的架构模式,从上到下一次为视图层(表示层)、控制器层、模型层(业务层)、持久化层(和数据库层)。其中的视图层采用页面调用技术,减少了设计页面个数,同时使用CSS文件美化界面,统一各个页面的风格;控制器层由各个ACTION及其对应的FORM组件组成。系统中的各个层次组件请求和响应的处理流程如下示图115系统设计系统数据库逻辑结构设计1、数据定义(1)学生实体,对应的数据库表逻辑结构定义STUDENTPKIDPASSWORDNAMESEXBIRTHDAYMAJORCLASSPHONEEMAILCOURSES(2)管理员实体,对应的数据库表逻辑结构定义ADMINISTRATORPKIDPASSWORDNAMESEXBIRTHDAYOFFICEPHONEEMAIL(3)课程实体,对应的数据库表逻辑结构定义COURSEPKIDNAMETEACHERPERIODPOSITIONDESCRIPTIONCREDITTIME1TIME2TIME3TIME4TIME52、创建数据库表结构的SQL语句代码示例DROPTABLEIFEXISTSCOURSESELECTIONADMINISTRATORCREATETABLECOURSESELECTIONADMINISTRATORIDVARCHAR20NOTNULL,NAMEVARCHAR45NOTNULL,SEXVARCHAR10NOTNULL,BIRTHDAYDATENOTNULL,OFFICEVARCHAR45NOTNULL,PHONEVARCHAR45NOTNULL,EMAILVARCHAR45NOTNULL,PASSWORDVARCHAR45NOTNULL,PRIMARYKEYIDENGINEINNODBDEFAULTCHARSETGB2312DROPTABLEIFEXISTSCOURSESELECTIONCOURSECREATETABLECOURSESELECTIONCOURSEIDVARCHAR20NOTNULL,NAMEVARCHAR45NOTNULL,TEACHERVARCHAR45NOTNULL,PERIODVARCHAR45NOTNULL,POSITIONVARCHAR45NOTNULL,DESCRIPTIONVARCHAR250NOTNULL,TIME1VARCHAR45NOTNULLDEFAULT0,TIME2VARCHAR45NOTNULLDEFAULT0,TIME3VARCHAR45NOTNULLDEFAULT0,TIME4VARCHAR45NOTNULLDEFAULT0,TIME5VARCHAR45NOTNULLDEFAULT0,CREDITINT10UNSIGNEDNOTNULLDEFAULT0,PRIMARYKEYIDENGINEINNODBDEFAULTCHARSETGB2312DROPTABLEIFEXISTSCOURSESELECTIONSTUDENTCREATETABLECOURSESELECTIONSTUDENTIDVARCHAR20NOTNULL,NAMEVARCHAR45DEFAULTNULL,SEXVARCHAR10DEFAULTNULL,BIRTHDAYDATENOTNULLDEFAULT19000101,MAJORVARCHAR45DEFAULTNULL,CLASSVARCHAR45DEFAULTNULL,PHONEVARCHAR45DEFAULTNULL,EMAILVARCHAR45DEFAULTNULL,COURSESVARCHAR45DEFAULTNULL,PASSWORDVARCHAR45DEFAULTNULL,PRIMARYKEYIDENGINEINNODBDEFAULTCHARSETGB2312116系统设计系统详细设计1、系统模型(系统中的功能结构)学生选课系统学生平台管理员平台登陆个人信息管理课程管理课程查询添加课程删除课程查看课表修改用户信息退出登陆课程管理用户管理退出查看用户信息添加管理员添加课程删除课程删除管理员2、系统中核心类的类图LOGINBOOLLOGOUTBOOLREGISTBOOLADDCOURSEBOOLDELETECOURSEBOOLSEARCHCOURSEBOOLVIEWCOURSEBOOLUSERNAMECHARSTUDENTIDCHARPASSWORDCHARREALNAMECHARSEXCHARCOLLEGECHARYEARCHARPHONECHAREMAILCHARCOURSECHARUSERLOGINBOOLLOGOUTBOOLDELETECOURSEBOOLADDCOURSEBOOLADDADMINBOOLDELETEADMINBOOLVIEWUSERCHARADMINIDINTADMINUSERNAMECHARADMINPASSWORDCHARADMINADDERCHARADMINLEVERCHARADMINCOURSEIDINTTEACHERCHARCOURSENAMECHARCREDITHOURCHARCLASSROOMCHARCOURSETIMECHARTOTALPERSONCHARREMAINPERSONCHARCLASSTIMECHARCLASSDESCRIPTIONCHARCOURSE11113、用户课程管理相关的流程分析及活动图(1)学生用户课程管理相关的流程分析(2)学生用户课程管理相关的活动图查看课表添加课程删除课程查看课程添加查看删除(3)管理员用户课程管理相关的流程分析管理员登陆教师列表课程列表学生列表查询修改删除查询修改删除查询修改删除(4)管理员用户系统操作流程分析4、系统中的各个模块中相关程序类及页面文件的目录结构5、系统中的各个层的相关程序类的结构示图(1)表示层(2)控制层(3)业务层(4)数据访问DAO层117系统实现1、注册用户时候实时校验若用户想要进入本系统,就必须要有一个帐号,若没有,则可以注册一个,打开注册界面,填写表单信息,点击注册按钮,等待系统的确认信息。具体的操作流程和数据检查的功能实现如下用户首先必须先注册并且所填写的相关信息必须要满足系统的格式和逻辑要求,为此应用了AJAX相关的技术。对用户在注册表单中所输入的相关数据做了实时表单验证,当用户输入的内容有误,不填或者填写错误信息时系统都会自动提示,以保证用户在提交时已经获得了正确的数据。比如,如下截图表示当用户名为空时提示“不能为空”的错误提示信息。输入用户名后系统开始验证。若此用户名已存在(注册的用户与现在数据库的一个客户的用户名称相同,系统不允许),系统提示“此用户名已占用”。若用户名不存在,系统则给出提示“有效用户名”。用户在系统中成功地注册了个人相关的信息后,将进入登陆界面。在登录表单中用户输入用户名、密码、选择登陆后,系统会有成功或者错误的信息提示。2、选课页面局部刷新(1)系统的选课页面输入课程号,若此课程还未被选择,则课程列表会自动添加新选课程,但整个页面不会刷新,而且学分也会自动更新为新的值。若课程不存在,系统则给出提示“无效课程号”。若此课程已选择,系统则给出提示“已经选择该课程”。3、课表中的课程信息自动提示生成课表后,将鼠标移至某一门课程名上,会相应弹出课程介绍。实现弹出提示框的JAVASCRIPT程序代码示例如下VARDATADIVVARDATATABLEBODYVARCURELEMENTVARBKELEMENTVARXMLHTTPREQVARFLAG0FUNCTIONCREATEXMLHTTPREQUESTIFWINDOWXMLHTTPREQUESTXMLHTTPREQNEWXMLHTTPREQUESTELSEIFWINDOWACTIVEXOBJECTTRYXMLHTTPREQNEWACTIVEXOBJECT“MSXML2XMLHTTP“CATCHETRYXMLHTTPREQNEWACTIVEXOBJECT“MICROSOFTXMLHTTP“CATCHEFUNCTIONGETDETAILELEMENTDATATABLEBODYDOCUMENTGETELEMENTBYID“DATABODY“DATADIVDOCUMENTGETELEMENTBYID“POPUP“CURELEMENTELEMENTBKELEMENTELEMENTCREATEXMLHTTPREQUESTVARURL“QUERYCOURSEDOID“ESCAPEELEMENTIDXMLHTTPREQOPEN“GET“,URL,TRUEXMLHTTPREQONREADYSTATECHANGERESPONSEPROCXMLHTTPREQSENDNULLFUNCTIONRESPONSEPROCIFXMLHTTPREQREADYSTATE1FLAG1SETDATA“U6B63U5728U52A0U8F7DU8FDEU63A5U5BF9U8C61“IFXMLHTTPREQREADYSTATE4IFXMLHTTPREQSTATUS200FLAG0SETDATAXMLHTTPREQRESPONSEXMLELSEWINDOWALERT“U60A8U8BF7U6C42U7684U9875U9762U6709U9519U8BEF“FUNCTIONSETDATADATAIFFLAG0CLEARDATASETOFFSETSCREATEROWDATAELSECLEARDATASETOFFSETSSETTIPSDATAFUNCTIONCREATEROWDATAVARROW,CELL,BOLD,TXTNODEROWDOCUMENTCREATEELEMENT“TR“CELLDOCUMENTCREATEELEMENT“TD“BOLDDOCUMENTCREATEELEMENT“B“CELLSETATTRIBUTE“ALIGN“,“RIGHT“TXTNODEDOCUMENTCREATETEXTNODE“课程名称“BOLDAPPENDCHILDTXTNODECELLAPPENDCHILDBOLDROWAPPENDCHILDCELLCELLDOCUMENTCREATEELEMENT“TD“TXTNODEDOCUMENTCREATETEXTNODEDATAGETELEMENTSBYTAGNAME“NAME“0FIRSTCHILDDATACELLAPPENDCHILDTXTNODEROWAPPENDCHILDCELLDATATABLEBODYAPPENDCHILDROWROWDOCUMENTCREATEELEMENT“TR“CELLDOCUMENTCREATEELEMENT“TD“BOLDDOCUMENTCREATEELEMENT“B“CELLSETATTRIBUTE“ALIGN“,“RIGHT“TXTNODEDOCUMENTCREATETEXTNODE“任课教师“BOLDAPPENDCHILDTXTNODECELLAPPENDCHILDBOLDROWAPPENDCHILDCELLCELLDOCUMENTCREATEELEMENT“TD“TXTNODEDOCUMENTCREATETEXTNODEDATAGETELEMENTSBYTAGNAME“TEACHER“0FIRSTCHILDDATACELLAPPENDCHILDTXTNODEROWAPPENDCHILDCELLDATATABLEBODYAPPENDCHILDROWROWDOCUMENTCREATEELEMENT“TR“CELLDOCUMENTCREATEELEMENT“TD“BOLDDOCUMENTCREATEELEMENT“B“CELLSETATTRIBUTE“ALIGN“,“RIGHT“TXTNODEDOCUMENTCREATETEXTNODE“学分“BOLDAPPENDCHILDTXTNODECELLAPPENDCHILDBOLDROWAPPENDCHILDCELLCELLDOCUMENTCREATEELEMENT“TD“TXTNODEDOCUMENTCREATETEXTNODEDATAGETELEMENTSBYTAGNAME“CREDIT“0FIRSTCHILDDATACELLAPPENDCHILDTXTNODEROWAPPENDCHILDCELLDATATABLEBODYAPPENDCHILDROWROWDOCUMENTCREATEELEMENT“TR“CELLDOCUMENTCREATEELEMENT“TD“BOLDDOCUMENTCREATEELEMENT“B“CELLSETATTRIBUTE“ALIGN“,“RIGHT“TXTNODEDOCUMENTCREATETEXTNODE“学时“BOLDAPPENDCHILDTXTNODECELLAPPENDCHILDBOLDROWAPPENDCHILDCELLCELLDOCUMENTCREATEELEMENT“TD“TXTNODEDOCUMENTCREATETEXTNODEDATAGETELEMENTSBYTAGNAME“PERIOD“0FIRSTCHILDDATACELLAPPENDCHILDTXTNODEROWAPPENDCHILDCELLDATATABLEBODYAPPENDCHILDROWROWDOCUMENTCREATEELEMENT“TR“CELLDOCUMENTCREATEELEMENT“TD“BOLDDOCUMENTCREATEELEMENT“B“CELLSETATTRIBUTE“ALIGN“,“RIGHT“TXTNODEDOCUMENTCREATETEXTNODE“上课地点“BOLDAPPENDCHILDTXTNODECELLAPPENDCHILDBOLDROWAPPENDCHILDCELLCELLDOCUMENTCREATEELEMENT“TD“TXTNODEDOCUMENTCREATETEXTNODEDATAGETELEMENTSBYTAGNAME“POSITION“0FIRSTCHILDDATACELLAPPENDCHILDTXTNODEROWAPPENDCHILDCELLDATATABLEBODYAPPENDCHILDROWROWDOCUMENTCREATEELEMENT“TR“CELLDOCUMENTCREATEELEMENT“TD“BOLDDOCUMENTCREATEELEMENT“B“CELLSETATTRIBUTE“WIDTH“,“85“CELLSETATTRIBUTE“ALIGN“,“RIGHT“CELLSETATTRIBUTE“VALIGN“,“TOP“TXTNODEDOCUMENTCREATETEXTNODE“课程描述“BOLDAPPENDCHILDTXTNODECELLAPPENDCHILDBOLDROWAPPENDCHILDCELLCELLDOCUMENTCREATEELEMENT“TD“CELLSETATTRIBUTE“WIDTH“,“150“TXTNODEDOCUMENTCREATETEXTNODEDATAGETELEMENTSBYTAGNAME“DESCRIPTION“0FIRSTCHILDDATACELLAPPENDCHILDTXTNODEROWAPPENDCHILDCELLDATATABLEBODYAPPENDCHILDROWFUNCTIONSETTIPSDATAVARROW,CELL,TXTNODEROWDOCUMENTCREATEELEMENT“TR“CELLDOCUMENTCREATEELEMENT“TD“TXTNODEDOCUMENTCREATETEXTNODEDATACELLAPPENDCHILDTXTNODEROWAPPENDCHILDCELLDATATABLEBODYAPPENDCHILDROWFUNCTIONSETOFFSETSDATADIVSTYLEBORDER“BLACK1PXSOLID“VARTOP0VARLEFT0CURELEMENTBKELEMENTWHILECURELEMENTTOPCURELEMENT“OFFSETTOP“LEFTCURELEMENT“OFFSETLEFT“CURELEMENTCURELEMENTOFFSETPARENTLEFT120TOP25DATADIVSTYLELEFTLEFT“PX“DATADIVSTYLETOPTOP“PX“FUNCTIONCLEARDATADATATABLEBODYDOCUMENTGETELEMENTBYID“DATABODY“DATADIVDOCUMENTGETELEMENTBYID“POPUP“VARINDDATATABLEBODYCHILDNODESLENGTHFORVARIIND1I0IDATATABLEBODYREMOVECHILDDATATABLEBODYCHILDNODESIDATADIVSTYLEBORDER“NONE“弹出提示的位置都是依照当前鼠标位置动态计算出,课程介绍的信息都是从后台数据库中实时取出并在浏览器中显示。与课程表相关的XSL配置定义文件的代码示例如下学生课表姓名性别出生日期专业班级电子邮件提示鼠标悬停在课程上课查看详细信息星期一星期二星期三星期四星期五星期六星期日第一节第二节第三节第四节第五节第六节第七节4、学生信息管理页面的实时编辑和删除(1)学生信息页面(2)修改信息点击“修改信息”按钮,在当前学生的下方会弹出修改表格,当中是原始学生信息。(3)修改前的数据库的记录对学生信息做出一定修改点击“修改”按钮后,表格中相应学生的信息已经变化。数据库的信息也相应发生变化此外,在此页面中删除学生时,表格会自动删除相应项,而整个页面不会刷新。5、对在线人数和服务器内存使用的实时监控,动态生成走势图这是服务器监控的页面,分别对在线人数和服务器内存行进实时监控,两个监控面板都是实时刷新的,刷新间隔为1S。此页面应用JAVASCRIPT技术实现了动态拖拽技术,两个面板可以随意拖动。技术实现说明1监控面板的动态拖拽技术采用了一个开源框架中的有关定位的JAVASCRIPT脚本2图片生成技术采用著名的JAVA开源项目JFREECHART提供的工具包3内存统计的功能是自己用VC开发的一个DLL文件,内部通过调用WINDOWSAPI返回内存的各类信息,系统在运行时加载此动态链接库,并调用相应方法而实现动态拖拽的JAVASCRIPT程序代码示例如下VARDRAGOBJNULL,INITFUNCTIONO,OROOT,MINX,MAXX,MINY,MAXY,BSWAPHORZREF,BSWAPVERTREF,FXMAPPER,FYMAPPEROONMOUSEDOWNDRAGSTARTOHMODEBSWAPHORZREFFALSETRUEOVMODEBSWAPVERTREFFALSETRUEOROOTOROOTIFOHMODEIFOVMODEIFOHMODEIFOVMODEOMINXTYPEOFMINXUNDEFINEDMINXNULLOMINYTYPEOFMINYUNDEFINEDMINYNULLOMAXXTYPEOFMAXXUNDEFINEDMAXXNULLOMAXYTYPEOFMAXYUNDEFINEDMAXYNULLOXMAPPERFXMAPPERFXMAPPERNULLOYMAPPERFYMAPPERFYMAPPERNULLOROOTONDRAGSTARTNEWFUNCTIONOROOTONDRAGENDNEWFUNCTIONOROOTONDRAGNEWFUNCTION,STARTFUNCTIONEVARODRAGOBJTHISEDRAGFIXEEVARYPARSEINTOVMODEOROOTSTYLETOPOROOTSTYLEBOTTOMVARXPARSEINTOHMODEOROOTSTYLELEFTOROOTSTYLERIGHTOROOTONDRAGSTARTX,YOLASTMOUSEXECLIENTXOLASTMOUSEYECLIENTYIFOHMODEIFOMINXNULLOMINMOUSEXECLIENTXXOMINXIFOMAXXNULLOMAXMOUSEXOMINMOUSEXOMAXXOMINXELSEIFOMINXNULLOMAXMOUSEXOMINXECLIENTXXIFOMAXXNULLOMINMOUSEXOMAXXECLIENTXXIFOVMODEIFOMINYNULLOMINMOUSEYECLIENTYYOMINYIFOMAXYNULLOMAXMOUSEYOMINMOUSEYOMAXYOMINYELSEIFOMINYNULLOMAXMOUSEYOMINYECLIENTYYIFOMAXYNULLOMINMOUSEYOMAXYECLIENTYYDOCUMENTONMOUSEMOVEDRAGDRAGDOCUMENTONMOUSEUPDRAGENDRETURNFALSE,DRAGFUNCTIONEEDRAGFIXEEVARODRAGOBJVAREYECLIENTYVAREXECLIENTXVARYPARSEINTOVMODEOROOTSTYLETOPOROOTSTYLEBOTTOMVARXPARSEINTOHMODEOROOTSTYLELEFTOROOTSTYLERIGHTVARNX,NYIFOMINXNULLEXOHMODEMATHMAXEX,OMINMOUSEXMATHMINEX,OMAXMOUSEXIFOMAXXNULLEXOHMODEMATHMINEX,OMAXMOUSEXMATHMAXEX,OMINMOUSEXIFOMINYNULLEYOVMODEMATHMAXEY,OMINMOUSEYMATHMINEY,OMAXMOUSEYIFOMAXYNULLEYOVMODEMATHMINEY,OMAXMOUSEYMATHMAXEY,OMINMOUSEYNXXEXOLASTMOUSEXOHMODE11NYYEYOLASTMOUSEYOVMODE11IFOXMAPPERNXOXMAPPERYELSEIFOYMAPPERNYOYMAPPERXDRAGOBJROOTSTYLEOHMODE“LEFT“RIGHT“NX“PX“DRAGOBJROOTSTYLEOVMODE“TOP“BOTTOM“NY“PX“DRAGOBJLASTMOUSEXEXDRAGOBJLASTMOUSEYEYDRAGOBJROOTONDRAGNX,NYRETURNFALSE,ENDFUNCTIONDOCUMENTONMOUSEMOVENULLDOCUMENTONMOUSEUPNULLDRAGOBJROOTONDRAGENDPARSEINTDRAGOBJROOTSTYLEDRAGOBJHMODE“LEFT“RIGHT“,PARSEINTDRAGOBJROOTSTYLEDRAGOBJVMODE“TOP“BOTTOM“DRAGOBJNULL,FIXEFUNCTIONEIFTYPEOFEUNDEFINEDEWINDOWEVENTIFTYPEOFELAYERXUNDEFINEDELAYERXEOFFSETXIFTYPEOFELAYERYUNDEFINEDELAYERYEOFFSETYRETURNE6、利用过滤器组件技术实现系统的身份验证如果用户并没有登陆或者注销以后直接输入地址妄图绕过登陆入口直接访问页面会被拦截提示出错,要求其登陆并跳转到登陆界面。对应的J2EE过滤器组件程序类的代码示例如下IMPORTJAVAIOIMPORTJAVAXSERVLETIMPORTJAVAXSERVLETHTTPPUBLICCLASSUSERSAFEFILTERIMPLEMENTSFILTERPROTECTEDFILTERCONFIGFILTERCONFIGFINALPRIVATESTRINGCONTENT_TYPE_HTML“TEXT/HTMLCHARSETGB2312“PRINTWRITERTOCLIENTTEXTOUTSTREAMPRIVATESTRINGTARGETENCODING“GB2312“PUBLICVOIDINITFILTERCONFIGCONFIGTHROWSSERVLETEXCEPTIONTHISFILTERCONFIGCONFIGPUBLICUSERSAFEFILTERPUBLICVOIDDOFILTERSERVLETREQUESTREQUEST,SERVLETRESPONSERESPONSE,FILTERCHAINCHAINTHROWSIOEXCEPTION,SERVLETEXCEPTIONHTTPSESSIONSESSIONHTTPSERVLETREQUESTREQUESTGETSESSIONHTTPSERVLETREQUESTHTTPREQUESTHTTPSERVLETREQUESTREQUESTHTTPSERVLETRESPONSEHTTPRESPONSEHTTPSERVLETRESPONSERESPONSE/对客户端的请求进行统一的编码HTTPREQUESTSETCHARACTERENCODINGTARGETENCODINGRESPONSESETCONTENTTYPECONTENT_TYPE_HTMLTOCLIENTTEXTOUTSTREAMHTTPRESPONSEGETWRITERTRYRESPONSESETCONTENTTYPE“TEXT/HTMLCHARSETGB2312“STRINGUSERNAMESTRINGSESSIONGETATTRIBUTE“USERNAME“IFUSERNAMENULLTOCLIENTTEXTOUTSTREAMPRINT“TOCLIENTTEXTOUTSTREAMPRINT“ALERT“您未登录,因此不具有权限“STRINGTARGETURL“/WEBMIS/INDEXJSP“TOCLIENTTEXTOUTSTREAMPRINT“WINDOWLOCATIONHREF“TARGETURL“TOCLIENTTEXTOUTSTREAMPRINT“TOCLIENTTEXTOUTSTREAMFLUSHELSECHAINDOFILTERREQUEST,RESPONSECATCHIOEXCEPTIONEEPRINTSTACKTRACEPUBLICVOIDDESTROYTHISFILTERCONFIGNULL118在项目中应用核心设计模式1、应用工厂模式图表工厂类因为工厂模式就相当于创建实例对象的NEW,虽然这样做,可能多做一些工作,但会给系统带来更大的可扩展性和尽量少的修改量。让创建实例所需要的大量初始化工作从类的构造函数中分离出去。使用工厂类得到XYLINECHART类型的图表类2、应用抽象工厂模式实现将系统中的各个不同数据库连接的实现方式分离要用抽象工厂模式实现将系统在应用中所可能存在的各个不同数据库系统的应用环境与系统的数据库连接功能实现相互分离,这样就能适应更多的软件环境,提高系统的移植性。(1)COURSEMANAGEDAOINTERFACE接口的代码示例PUBLICINTERFACECOURSEMANAGEDAOINTERFACE/查询课程PUBLICARRAYLISTSELECTCOURSEINFODATACOURSESEARCHINFOMODELONECOURSEINFO;/添加课程PUBLICCOURSESEARCHINFODAOADDCOURSEINFODATASTRINGUSERNAME,STRINGCOURSEID;/用户查看课表PUBLICCOURSESEARCHINFODAOUSERVIEWSCHEDULESTRINGUSERNAME;/用户删除课程PUBLICCOURSESEARCHINFODAOUSERDELETECOURSESTRINGCOURSEID,STRINGUSERNAME;/管理员添加课程PUBLICCOURSESEARCHINFODAOADMINADDCOURSECOURSESEARCHINFODAOCOURSESEARCHINFODAO;/管理员删除课程PUBLICCOURSESEARCHINFODAOADMINDELETECOURSECOURSESEARCHINFODAOCOURSESEARCHINFODAO;而系统中的ABSTRACTDATAOPERATE、ORACLEDATAOPERATE、SQLSERVERDATAOPERATE、MYSQLDATAOPERATE等接口都是对COURSEMANAGEDAOINTERFACE接口的具体实现类。(2)COURSEMANAGEDAOINTERFACEFACTORY工厂类PUBLICCLASSCOURSEMANAGEDAOINTERFACEFACTORYPUBLICSTATICFINALINTORACLE0/定义三个表示数据库类型的常量PUBLICSTATICFINALINTMYSQL1PUBLICSTATICFINALINTSQLSERVER2PRIVATESTATICCOURSEMANAGEDAOINTERFACEDBPRIVATESTATICINTDATATYPEMYSQLPUBLICSTATICCOURSEMANAGEDAOINTERFACEGETINSTANCEIFDBNULLIFDATATYPEORACLE/根据DATETYPE返回相应的实现类RETURNNEWORACELDATAOPERATEIFDATATYPEMYSQLRETURNNEWMYSQLDATAOPERATEIFDATATYPESQLSERVERRETURNNEWSQLSERVERDATAOPERATERETURNDB3、应用桥接模式4、应用观察者模式通过此模式,系统自动记录学生的选课行为并写到日志文件中(1)添加观察者(2)设置改变点,通知所有观察者(3)生成的日志文件5、应用单例(SINGLETON)模式应用在在线用户计数,单例(SINGLETON)模式主要作用是保证在JAVA应用程序中,一个类CLASS只有一个实例存在。而在线计数这个类就只需要有一个对象实例。因此,对在线计数这个类就非常适合应用单例模式实现。PUBLICCLASSONLINECOUNTERPRIVATESTATICLONGONLINE0PUBLICSTATICLONGGETONLINERETURNONLINEPUBLICSTATICVOIDRAISEONLINEPUBLICSTATICVOIDREDUCEONLINEPRIVATESTATICONLINECOUNTERINSTANCENULLPUBLICSTATICSYNCHRONIZEDONLINECOUNTERGETINSTANCEIFINSTANCENULLINSTANCENEWONLINECOUNTERRETURNINSTANCE119项目核心程序类代码1、项目中的数据库访问操作的DAO组件的程序代码IMPORTJAVASQLIMPORTJAVAUTILARRAYLISTIMPORTJAVAUTILOBSERVABLEIMPORTJAVAXNAMINGCONTEXTIMPORTJAVAXNAMINGINITIALCONTEXTIMPORTJAVAXNAMINGNAMINGEXCEPTIONIMPORTJAVAXSQLDATASOURCEPUBLICCLASSMYSQLDAOEXTENDSOBSERVABLEIMPLEMENTSMYSQLDAOINTERFACESTATICPUBLICFINALINTDBMODE0STATICPUBLICFINALINTWDMODE1PRIVATECONNECTIONMYSQLCONNECTIONNULLPRIVATEPREPAREDSTATEMENTPRESTMTNULLPRIVATELOGBEANLOGBEANNULLPUBLICMYSQLDAOLOGBEANNEWLOGBEANTHISADDOBSERVERLOGBEANTRYCONTEXTCONTEXTNEWINITIALCONTEXTIFCONTEXTNULLTHROWNEWNAMINGEXCEPTION“NOCONTEXT“ELSEDATASOURCEDSDATASOURCECONTEXTLOOKUP“JAVACOMP/ENV/JDBC/MYSQL/CONNECTION“MYSQLCONNECTIONDSGETCONNECTIONIFMYSQLCONNECTIONNULLSYSTEMOUTPRINTLN“CONNECTINGSUCCEEDED“CATCHSQLEXCEPTIONEEPRINTSTACKTRACECATCHEXCEPTIONEEPRINTSTACKTRACEPUBLICVOIDCLOSECONNECTIONTRYPRESTMTCLOSEMYSQLCONNECTIONCLOSECATCHSQLEXCEPTIONEEPRINTSTACKTRACEPUBLICBOOLEANDELETEADMINISTRATORSTRINGADMINIDIFMYSQLCONNECTIONNULLRETURNFALSETRYPRESTMTMYSQLCONNECTIONPREPARESTATEMENT“DELETEFROMADMINISTRATORWHEREID“PRESTMTSETSTRING1,ADMINIDPRESTMTEXECUTEUPDATERETURNTRUECATCHSQLEXCEPTIONEEPRINTSTACKTRACERETURNFALSEPUBLICBOOLEANDELETECOURSESTRINGCOURSEIDIFMYSQLCONNECTIONNULLRETURNFALSETRYPRESTMTMYSQLCONNECTIONPREPARESTATEMENT“DELETEFROMCOURSEWHEREID“PRESTMTSETSTRING1,COURSEIDPRESTMTEXECUTEUPDATERETURNTRUECATCHSQLEXCEPTIONEEPRINTSTACKTRACERETURNFALSEPUBLICBOOLEANDELETESTUDENTSTRINGSTUDENTIDIFMYSQLCONNECTIONNULLRETURNFALSETRYPRESTMTMYSQLCONNECTIONPREPARESTATEMENT“DELETEFROMSTUDENTWHEREID“PRESTMTSETSTRING1,STUDENTIDPRESTMTEXECUTEUPDATERETURNTRUECATCHSQLEXCEPTIONEEPRINTSTACKTRACERETURNFALSEPUBLICBOOLEANDOLOGINSTRINGUSERID,STRINGUSERPASSWORD,STRINGUSERIDENTIFICATIONIFMYSQLCONNECTIONNULLRETURNFALSETRYIFUSERIDENTIFICATIONEQUALS“STUDENT“PRESTMTMYSQLCONNECTIONPREPARESTATEMENT“SELECTFROMSTUDENTWHEREIDANDPASSWORD“PRESTMTSETSTRING1,USERIDPRESTMTSETSTRING2,USERPASSWORDELSEIFUSERIDENTIFICATIONEQUALS“ADMINISTRATOR“PRESTMTMYSQLCONNECTIONPREPARESTATEMENT“SELECTFROMADMINISTRATORWHEREIDANDPASSWORD“PRESTMTSETSTRING1,USERIDPRESTMTSETSTRING2,USERPASSWORDELSERETURNFALSERESULTSETRSPRESTMTEXECUTEQUERYIFRSNEXTRETURNTRUEELSERETURNFALSECATCHSQLEXCEPTIONEEPRINTSTACKTRACERETURNFALSEPUBLICADMINISTRATORBEANGETADMINISTRATORSTRINGADMINIDIFMYSQLCONNECTIONNULLRETURNNULLTRYPRESTMTMYSQLCONNECTIONPREPARESTATEMENT“SELECTFROMADMINISTRATORWHEREID“PRESTMTSETSTRING1,ADMINIDRESULTSETRSPRESTMTEXECUTEQUERYIFRSNEXTADMINISTRATORBEANADMINBEANNEWADMINISTRATORBEANRSGETSTRING1,RSGETSTRING2,RSGETSTRING3,RSGETDATE4,RSGETSTRING5,RSGETSTRING6,RSGETSTRING7RETURNADMINBEANCATCHSQLEXCEPTIONEEPRINTSTACKTRACERETURNNULLPUBLICCOURSEBEANGETCOURSESTRINGCOURSEID,INTMODEIFMYSQLCONNECTIONNULLRETURNNULLTRYPRESTMTMYSQLCONNECTIONPREPARESTATEMENT“SELECTFROMCOURSEWHEREID“PRESTMTSETSTRING1,COURSEIDRESULTSETRSPRESTMTEXECUTEQUERYIFRSNEXTIFMODEMYSQLDAODBMODECOURSEBEANCOURSEBEANNEWCOURSEBEANRSGETSTRING1,RSGETSTRING2,RSGETSTRING3,RSGETSTRING4,RSGETSTRING5,RSGETSTRING6,RSGETINT12,RSGETSTRING7,RSGETSTRING8,RSGETSTRING9,RSGETSTRING10,RSGETSTRING11RETURNCOURSEBEANELSEIFMODEMYSQLDAOWDMODECOURSEBEANCOURSEBEANNEWCOURSEBEANCOURSEBEANSETIDRSGETSTRING1COURSEBEANSETNAMERSGETSTRING2COURSEBEANSETTEACHERRSGETSTRING3COURSEBEANSETPERIODRSGETSTRING4COURSEBEANSETPOSITIONRSGETSTRING5COURSEBEANSETDESCRIPTIONRSGETSTRING6COURSEBEANSETTIMECOURSEBEANGENERATETIMERSGETSTRING7,RSGETSTRING8,RSGETSTRING9,RSGETSTRING10,RSGETSTRING11COURSEBEANSETCREDITRSGETINT12RETURNCOURSEBEANCATCHSQLEXCEPTIONEEPRINTSTACKTRACERETURNNULLPUBLICCOURSELISTGETCOURSEBYCONDITIONSTRINGID,STRINGNAME,STRINGTEACHER,STRINGPERIOD,STRINGPOSITION,STRINGDESCRIPTION,STRINGTIME1,STRINGTIME2,STRINGTIME3,STRINGTIME4,STRINGTIME5,INTCREDITIFMYSQLC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论