




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘 要摘 要随着计算机及互联网的普及,网络选课系统作为高校信息化的一个重要组成部分,正逐渐改变着传统的人工教务管理选课模式,逐步提高着教务管理人员以及师生的工作效率。应用此系统,学生可以通过网络在任意地点、指定的时间进行选课。网络选课系统具有无可比拟的优势,如大量数据的存储与查询,信息的完全公开,而且通过计算机系统的设计可以做到公平公正,尽量减少错误。在此背景下,充分利用现有网络资源,建立网上选课系统势在必行。目前的选课系统的实现方式有很多种,既有C/S结构的,也有B/S结构的,总体来说,基于Web的B/S结构的选课系统是最适合当前高校教务管理需要的,因此是目前的发展主流。关键词:网络选课 、
2、B/S 、效率IABSTRACTABSTRACTWith the popularity of computers and the Internet,online Network Elective system as a important part of college information.it is gradually changing the traditional of artificial Educational Administration Elective.And also gradually increase the efficiency of teachers and st
3、udents.Students could choose courses anywhere anytime via internet by this system.The Network Elective system has an unparalleled advantage,for example,like large amounts of data storage and query,disclosure of information,and it can be fair,justice and minimize errors by computer design.In this con
4、text,it is necessary to establish a online register system by full use of exsiting network resources.There are many ways to realize a Network Elective system,not only C/S structure,also exsits B/S structure.Overall,the system based on B/S structure is the best suited to current needs.So it is the tr
5、end of development.Key words: Network , Elective , B/S , EfficiencyII目 录第1章 引言11.1 开发背景11.2 系统构架11.3 系统目标2第2章 主要技术介绍32.1 J2EE概述32.2 J2EE的优势32.3 MVC设计模式42.4 框架的选择52.4.1 Struts2简介 Struts2结构 Struts2处理流程62.4.2 Hibernate简介62.4.3 Spring简介6第3章 系统开发工具及容器83.1 开发工具83.2 数据库的选择83.2.1 MySQL 简介83.
6、3 JDK版本的选择93.4 容器93.4.1 Tomcat简介9第4章 网络选课系统总体设计104.1 需求分析104.1.2 系统流程104.1.3 用UML用例图描述124.2系统的分层设计13第5章 详细设计145.1 数据库145.1.1 数据库设计145.1.2 数据表145.1.3 数据表关系175.2 Web层的设计185.2.1 JSP简介185.2.2 ExtJS简介185.2.3 字符集编码问题195.3 EJB层的设计195.3.1 实体Bean的设计195.3.1 数据库映射与连接215.4 网络选课系统的实现225.4.1 用户登录225.4.2 权限管理275.4
7、.3 管理员功能295.4.4 学生功能375.4.5 教师功能41第6章 网络选课系统的性能优化方案436.1 基于软件的优化措施436.1.1 Tomcat服务器性能调优436.1.2 Java虚拟机性能调优446.1.3 操作系统性能调优456.1.4 数据库服务器性能调优456.2基于硬件的优化措施466.2.1服务器性能优化466.2.2 Web服务器集群技术47第7章 系统测试与维护487.1 系统测试487.2 系统实施中遇到的问题49第8章 结论50参考文献51致谢52附录53外文资料原文65译文67第1章 引言1.1 开发背景 随着计算机及互联网的普及,传统的教务人工管理已经
8、很难适应新环境。传统的选课方式是随堂报名,无法预见上课人数,浪费教学资源。以现代网络技术环境为依托,将传统选课模式转换为利用现代网络技术进行选课操作和管理的网上选课系统已经成为一项重要的改革。现有选课系统存在以下不足:(1) 系统运行不够稳定选课系统时常无法登陆,这显然是网络服务器的不稳定造成的。应在发布前进行充分的性能测试。(2) 操作复杂,不够人性化网上选课应满足操作简单方便,但现有系统忽略了操作的简单性,从而导致选课要经过多个步骤。系统界面不友好,不够人性化。(3) 系统性能差没有进行充分的优化,导致在选课高峰期的时候,大量学生同时选课时经常出现登陆和选课速度极慢,甚至出现服务器死机瘫痪
9、现象,导致某些学生不能选课1.2 系统构架本文重点研究基于J2EE的网络选课系统。采用了J2EE技术作为系统构架开发。本系统体现了较为先进的设计思想,主要有以下几点:(1) 系统采用较为流行的J2EE技术体系,具有良好的可伸缩性和跨平台性,为日后功能的扩展提供了良好的升级空间。(2) 采用MVC模式Struts2架构设计,将系统的表示层、逻辑层和web表示层分离,便于日后系统的开发与维护。(3) 应用连接池和线程池,使系统可同时容纳大量用户。1.3 系统目标本课题设计并实现了一个基于网络平台的选课系统,具体的实现目标是:(1) 教务管理模块教务管理员通过该模块,可以发布教学公告、发布选课信息、
10、发布课程信息、制定系统开放时间、发放学生及教师密码等。(2) 学生选课模块学生通过该模块,可以查询开课信息、查看公告、选课、退课、修改密码、修改个人信息等。第2章 主要技术介绍第2章 主要技术介绍2.1 J2EE概述J2EE(Java 2 Platform Enterprise Edition)是SUN公司定义的一个开发分布式企业级应用的规范。它提供了一个多层次的分布式应用模型和一系列开发技术规范,与传统的互联网应用程序模型相比有着不可比拟的优势。J2EE技术是一个开放的、基于标准的开发和部署的平台,用于构建N层、基于Web、以服务端计算为核心、模块化的企业应用。J2EE同时也是所有兼容J2E
11、E标准的应用服务器产品的统一标识。J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如"编写一次、随处运行"的特性,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用
12、性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。2.2 J2EE的优势J2EE为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制:1. 保留现存的IT资产: 由于企业必须适应新的商业需求,利用已有的企业信息系统方面的投资,而不是重新制定全盘方案就变得很重要。由于基于J2EE平台的产品几乎能够在任何操作系统和硬件配置上运行,现有的操作系统和硬件也能被保留使用。 3电子科
13、技大学成都学院本科毕业设计论文2. 高效的开发: J2EE允许公司把一些通用的、很繁琐的服务端任务交给中间件供应商去完成。这样开发人员可以集中精力在如何创建商业逻辑上,相应地缩短了开发时间。 3. 支持异构环境: J2EE能够开发部署在异构环境中的可移植程序。基于J2EE的应用程序不依赖任何特定操作系统、中间件、硬件。因此设计合理的基于J2EE的程序只需开发一次就可部署到各种平台。这在典型的异构企业计算环境中是十分关键的。4. 可伸缩性: 企业必须要选择一种服务器端平台,这种平台应能提供极佳的可伸缩性去满足那些在他们系统上进行商业运作的大批新客户。基于J2EE平台的应用程序可被部署到各种操作系
14、统上。5. 稳定的可用性: 一个服务器端平台必须能全天候运转以满足公司客户、合作伙伴的需要。2.3 MVC设计模式Model模型-View视图-Controller控制器是软件工程中的一种软件架构模式。它把软件系统分为三个基本部分:Model模型,View视图和Controller控制器。模型视图控制器模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。专业人员可以通过自身的专长分组:· 控制器Controller- 负责转发请求,对请求进行处理。 · 视图View - 界面设计人员进行图形界面设计。 · 模型M
15、odel - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。 图2-1 MVC设计模式4第2章 主要技术介绍2.4 框架的选择本系统选用的是当下最流行的SSH框架整合搭建,采用Struts2 2.0,Hibernate3.2,以及Spring 2.5。可以更好的完成和体现MVC模式,也可以更好的体现java的面向对象思想及接口编程习惯。2.4.1 Struts2简介Struts2 是一个web应用框架。它不是一个Struts的新的发布版本,而是一个全新的框架。Struts2 是第二代基于Model-View-Controller (MVC)
16、模型的web应用框架。 Struts2是java企业级web应用的可扩展性的框架。Struts2的体系结构与Struts1的体系结构的差别巨大。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。 Struts2结构Struts2的体系与Struts1体系的差别非常大,因为Struts2使用了WebWork的设计核心,而不是Struts1的设计核心。Struts2中大量使用拦截器来处理用户的请求,从而允许用户的业务逻辑控制器与Servl
17、et API分离。图2-2是Struts2的体系结构简图。图2-2 Struts2的体系结构简图5电子科技大学成都学院本科毕业设计论文 Struts2处理流程Struts2框架的大概处理流程如下:1. 浏览器发送一个请求。 2. 核心控制器FilterDispatcher根据请求决定调用合适的Action。 3. WebWork的拦截器链自动对请求应用通用功能,如验证等。 4. 回调Action的execute方法,该execute方法根据请求的参数来执行一定的操作。 5. Action的execute方法处理结果信息将被输出到浏览器中,支持多种形式的视图。2.4.2 Hiber
18、nate简介Hibernate是一种Java语言下的对象关系映射解决方案。 它是使用GNU宽通用公共许可证发行的自由、开源的软件。它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。Hibernate不仅负责从Java类到数据库表的映射(还包括从Java数据类型到SQL数据类型的映射),还提供了面向对象的数据查询检索机制,从而极大地缩短的手动处理SQL和JDBC上的开发时间。2.4.3 Spring简介Spring F
19、ramework 是一个开源的JavaJava EE全功能栈(full-stack)的应用程序框架。Spring Framework 提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。Spring包含的关键特性如下:1 非侵入式:所谓非侵入式是指Spring框架的API不会在业务逻辑上出现,也就是说我们的业务逻辑应该是纯净的,不能出现与业务逻辑无关的代码。首先针对应用而言,这样我们才能将业务逻辑从当前应用中剥离出来,从而在其他的6第2章 主要技术介绍应用中实现复用;其次针对框架而言,由于业务逻辑中没有Spring的API,所以业务逻辑也可以
20、从Spring框架快速的移植到其他框架。2 容器:Spring提供容器功能,容器可以管理对象的生命周期,对象与对象之间的依赖关系。可以写一个配置文件(通常是xml文件),在上面定义对象的名字,是否是单例,以及设置与其他对象的依赖关系。那么在容器启动之后,这些对象就被实例化好了,直接去用就好了,而且依赖关系也建立好了。3 IOC:控制反转,如果以前都是依赖于实现,那么现在反转为依赖于抽象,它的核心思想就是要面向接口编程。4 依赖注入:建立对象与对象之间依赖关系的实现,包括接口注入、构造注入、set注入,在Spring中只支持后两种5 AOP:面向方面编程,我们可以把日志、安全、事务管理等服务(或
21、功能)理解成一个“方面”,那么以前这些服务一直是直接写在业务逻辑的代码当中的,这有两点不好;首先业务逻辑不纯净,其次这些服务被很多业务逻辑反复使用,完全可以剥离出来做到复用。那么AOP就是这些问题的解决方案,我们可以把这些服务剥离出来形成一个“方面”,以期做到复用;然后将“方面”动态的插入到业务逻辑中让业务逻辑能够享受到此“方面”的服务7电子科技大学成都学院本科毕业设计论文第3章 系统开发工具及容器3.1 开发工具本系统使用的开发工具,后台java代码编写使用MyEclipse Europa workbench 6.5,前台页面编辑使用DreamWaver 8。3.1.1 MyEclipse简
22、介MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。3.1.2 DreamWaver简介Dreamwaver是美国MACROMEDIA公司(现为Adobe收购)开发的集网页制作和管理网站于一身的所见即所得网
23、页编辑器,它是第一套针对专业网页设计师特别发展的视觉化网页开发工具。3.2 数据库的选择本系统采用MySQL 5.1版本。3.2.1 MySQL 简介MySQL是一个开放源码的关系数据库管理系统,MySQL由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,被广泛地应用在中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用。 MySQL 是一个真正的多用户、多线程SQL数据库服务器。MySQL是现在流行的关系数据库中其中的一种,相比其它的数据库管理系统来说,MySQL具有小巧、功能齐全、查询迅捷等优点。MySQL 主要目标是快速、健壮和易用。关键
24、的是它是免费的。8第3章 系统开发工具及容器3.3 JDK版本的选择Java Development Kit (JDK) 是Sun公司针对Java开发员的软件开发工具包。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。本系统采用JDK 6 edition update 7版本。3.4 容器本系统页面采用JSP,所以对应的容器采用Apache Tomcat 6.0。既然JSP/Servlet,那么它当然是不能直接运行的,必须把它放到某种运行环境当中,它才能发挥它的作用。这个环境就是我们讲的"容器"。容器也是
25、 java 程序,它的主要功能除了为Servlet 提供运行环境,还有更重要的,就是提供网络传输协议与java 程序实体的相互转换。客户端向服务器发送数据,遵循的是HTTP 协议的数据格式,服务器向客户端发送数据也是遵循HTTP协议的。在客户端和服务器端,可能存在着不同的编程语言编写的程序,比如java,C+等等。各种语言都有自己用于处理HTTP协议数据的方法(类),为了使用java提供的各种HTTP处理相关的类,必须将HTTP协议下的数据做一定的转换,转换成一些java object,这样才能使用java的方法进行数据处理。同理,当这些处理完成,又需要将这些java object转换回HTT
26、P协议下的数据,反馈给客户端(JSP/Servlet当然存在与服务器端)。JSP/Servlet容器就扮演了完成这个双向转换的角色。3.4.1 Tomcat简介Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器。但是,不能将 Tomcat 和 Apa
27、che Web 服务器混淆,Apache Web Server 是一个用 C 语言实现的 HTTP web server;这两个 HTTP web server 不是捆绑在一起的。Apache Tomcat 包含了一个配置管理工具,也可以通过编辑 XML 格式的配置文件来进行配置。9电子科技大学成都学院本科毕业设计论文第4章 网络选课系统总体设计4.1 需求分析4.1.1 系统概要设计系统概要设计:(1)功能模块设计管理员模块:可以发布公告、发布选课信息、管理和分配学生和教师账号、审核选课情况、指定系统开放时间。选课模块:可以选课、退课。学生管理模块:可以查看已选课程、查看课程列表、查看公告,
28、修改个人信息等。教师管理模块:可以查看公告、查看自己相关课程、修改个人信息。登陆模块:可以判断账号的合法性和角色/权限。(2)数据库设计学生信息表:包含学号、姓名、性别、密码等基本信息。课程信息表:包含课程号、课程名等基本信息。教师信息表:包含教师编号、姓名等基本信息。管理员信息表:包含管理员编号等其他信息。公告表:包含公告的标题、内容等基本信息。权限表:包含3钟角色的权限。选课表:包含选择的课程号,课程名,任课教师等。关系表:包含课程与教师之间的多对多关系。4.1.2 系统流程本系统的流程用流程图表示如图4-1所示:10第4章 网络选课系统总体设计图4-1 系统流程图114.1.3 用UML
29、用例图描述用例图用来描述系统与参与者之间的相互作用,也可以说它是从用户角度出发对如何使用系统的描述。角色:角色代表了某一事件发生的参与者,他用一个小人表示。在通常的网络项目中,角色常被用来代表使用网站的用户(管理员、用户等),但角色的作用并不是限于此,它也可以用来代表与系统交互的其他实体。用例:用例代表系统可以实现的功能,通常一个用例代表一组功能,它实质上规定了系统实现功能的范围。在实现项目开发过程中,一个项目中往往涉及很多个用例,此时需要将其分解成若干个子系统实现,以便于理解。在UML中,用例用一个椭圆表示。用例图:当角色与用例发生某种关系时,就可以用一个图将它们关联起来,这就是用例图,角色
30、与用例之间使用一个带箭头的实线连接,箭头方向代表使用者与被使用者关系。本系统有三种身份的用户,一是管理员,二是学生,三是教师。用例图如图3-2所示: 图3-2 网络选课系统UML用例图4.2系统的分层设计本系统编码采用MVC分层结构设计。工程主要分为action包,Dao包和bean包。action包:主要是放置Struts2的Action java类,用来控制流程跳转、操纵model层、从model里面取数据呈现给表示层。Dao包:主要放置负责与数据库打交道的java类,所有类皆继承自一个HibernateDao。该层封装了数据的增、删、查、改操作。bean包:主要放置实体bean java
31、类,用来表示实体,并且映射至数据库对应的表,负责向view层提供数据。另外,所有JSP页面均放在工程WebRoot下。13电子科技大学成都学院本科毕业设计论文第5章 详细设计5.1 数据库5.1.1 数据库设计一个软件产品,数据库设计的好坏决定着软件的开发维护和运行容易程度。如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。整个系统的操作实际上就是操作数据库,所以,数据库的设计方式决定着系统的好坏。本系统采用MySQL 5.1版本,数据库建表满足第三范式。5.1.2 数据表本系统一共建立了如表5-1的8张表。表5-1表名称说明admin管理员信息表student学
32、生信息表teacher教师信息表course课程信息表notice公告表user权限表already选课表relation1课程-教师关系表数据表字段说明:14第5章 详细设计图5-1 admin表及字段说明图5-2 student表及字段说明图5-3 teacher表及字段说明图5-4 course表及字段说明15电子科技大学成都学院本科毕业设计论文图5-5 notice表及字段说明图5-6 user表及字段说明图5-7 already表及字段说明图5-8 relation1表及字段说明16第5章 详细设计5.1.3 数据表关系本系统数据库表关系如图5-9所示:图5-9 数据库表关系17电子
33、科技大学成都学院本科毕业设计论文5.2 Web层的设计这一层主要是作为用户访问系统的界面,提供Web网页服务器,同时与后台的EJB服务器连接,将客户端的请求信息传递到业务层,同时将后台反馈的信息传送到客户端。本系统的表示层采用第2章中介绍的体现MVC设计模式的Struts2框架实现Web层的设计。视图部分采用JSP,控制器部分交由Struts2的action直接和实体bean交互以操作数据。5.2.1 JSP简介JSP(全称JavaServer Pages)是由Sun Microsystems公司倡导和许多公司参与共同建立的一种使软件开发者可以响应客户端请求,而动态生成HTML、XML或其他格
34、式文档的Web网页的技术标准。JSP技术是以Java语言作为脚本语言的,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序。JSP使Java代码和特定的预定义动作可以嵌入到静态页面中。JSP句法增加了被称为JSP动作的XML标签,它们用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库提供了一种和平台无关的扩展服务器性能的方法。JSP被JSP编译器编译成Java Servlets。一个JSP编译器可以把JSP编译成JAVA代码写的servlet然后再由JAVA编译器来编译成机器码,也可以直接编译成二进制码。5.2.2
35、 ExtJS简介ExtJS是一个Ajax框架,是一个用javascript写的,主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用中。第5章 详细设计5.2.3 字符集编码问题由于国际上通用的字符编码为ISO 8859-1,而本系统却要大量设计中文字符,如果不加以处理,中文字符就会以乱码显示。所以在写程序的时候,要统一编码。在本系统中采用的是GB2312标准。这就涉及到JSP的页面PageEncoding属性设定,后台java字符串的处理,容器Tomcat的配置文件Server.XML URIEncod
36、ing 属性设定,以及MySQL的字符集设定等等。5.3 EJB层的设计EJB层的功能是由各种EJB组件完成的,具体实现了业务逻辑和实体数据,也就是MVC模型的model(模型)部分。在本系统中是由数据库服务器中的数据映象一实体Bean完成的。5.3.1 实体Bean的设计实体Bean是根据数据库之中的表来建立的,其中的相关属性/成员变量对应数据库表中的各种字段。以本工程的一个实体Bean Student为例,各种操作需要调用到Student实体Bean,Student实体Bean的代码如下:package com.lee.bean;import java.io.Serializable;im
37、port java.util.Date;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;SuppressWarnings("serial")EntityTable(name = "student")public class Student implements Serializable private static final long serialVersi
38、onUId = 1L;private Long id;private String name;private String password;52电子科技大学成都学院本科毕业设计论文private String sex;private Date birthday;private String suozaiyuanxi;public Student() public Student(Long id, String name, String password, String sex,Date birthday, String suozaiyuanxi) this.id = id;
39、 = name;this.password = password;this.sex = sex;this.birthday = birthday;this.suozaiyuanxi = suozaiyuanxi;IdColumn(name = "sid", unique = true, nullable = false)public Long getId() return id;public void setId(Long id) this.id = id;Column(name = "name")public String getName() retu
40、rn name;public void setName(String name) = name;.这是一个标准的JavaBean,Student类是一个公共类,属性为public,有默认的空的构造方法,成员变量属性为private的,提供了访问成员变量的public的get和set方法。由于该类经常被用到,所以设定一个串行化的值,使该类实现java.io. Serializable接口。代码中的SuppressWarnings(“serial”) 注释意为忽略第5章 详细设计串行化编译器警告。其他注释会放在下一节讲。5.3.1 数据库映射与连接传统的java数据库编程是用J
41、DBC直连数据库,直接操作数据与数据库打交道。这种编程方式有一定的局限性,比如课重用性不高,维护不方便,如果需求需要改变,那整个代码也要随之而改动。本系统使用的是Hibernate将对象持久化,让传统的关系型数据库与实体映射成为符合面向对象编程思想的数据处理方式。采用Hibernate,实体与数据库映射只需要配置相应的XML文件即可,跟代码完全分离。而采用Spring,可以将 Hibernate的事务交给Spring全权处理,方便了许多。现在以本系统采用的连接方式举例。以下是Spring的applicationContext.xml配置文件的内容。这里不采用传统的hibernate.cfg.x
42、ml,而是与Spring整合,配置见附录4。这里也需要JDBC驱动,本系统采用mysql-connector-java-5.1.5-bin.jar。dataSource为数据源,这里采用连接池,下面有对连接池的连接数等的配置。DriverClass指向JDBC驱动。jdbcUrl为数据库的URL,本系统采用MySQL, 本机地址为localhost,数据库名为System,所以URL就应为jdbc:mysql:/localhost/system。User和password为数据库的连接用户名密码。这样就完成了数据库的连接。其他和Hibernate有关的,sessionFactory和trans
43、action是用Spring的依赖注入功能,将Hibernate的事务交由Spring管理。需要注意的是,在sessionFactory需要注入Hibernate的数据源,数据库要选择方言,比如本系统用MySQL,dialect应为org.hibernate.dialect.MySQLDialect。不同的数据库要选择不同的dialect。其他可选项,如hibernate.show_sql,设为true时,在后台可以显示进行的SQL语句。下面开始介绍映射。本工程采用annotation注释来映射,而非传统的bean.hbm.xml文件配置,可以省去XML文件配置,减少工作量和错误的发生。如上述
44、Student实体Bean里面的annotation Entity,Table,Id,Column。Entity表明该类是ejb的实体bean。Table(name =student)就是指对应数据库中的student表,Table要放在类声明以前。Id表示主键生成策略为Auto Increment自动增长。Column(name=”sid” ,unique=”true” nullable=”false)表示对应的列为sid,唯一性,不可为空,Column需放在get()方法以前,这样就映射电子科技大学成都学院本科毕业设计论文了对应的成员变量。如果用传统的xx_bean.hbm.xml写下来对
45、应的就应该是这样:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-/Hibernate/Hibernate Mapping DTD 3.0/EN""<hibernate-mapping><class name="com.lee.bean.Student" table="student"><id name="id" co
46、lumn="sid"><generator class="native"/></id><property name="name" column="name"/></class></hibernate-mapping>5.4 网络选课系统的实现下面介绍本网络选课系统代码实现。5.4.1 用户登录用户登录界面如图5-10:图5-10 用户登录界面界面采用ExtJS的FormPanel,界面可以在网页上随意拖动位置,右上角的收缩按钮,点一下登陆框会整个收缩
47、。用户名框和密码框带验证,用户名不能第5章 详细设计为空且必须为10位,密码也不能为空且必须为6位到10位之间,否则在右处会有错误提示,如图5-11和图5-12图5-11 用户名和密码为空错误提示图5-12 用户名和密码不满足条件错误提示如果此时直接点击登录强行登录,会弹出一个错误提示的MessageBox,且不允许登录,如图5-13所示。图5-13 当验证未通过时弹出错误提示电子科技大学成都学院本科毕业设计论文如果验证通过,此时登录会出现一个“正在登陆”的进度条,然后进入相应的界面,如图5-14。图5-14 成功登陆的进度条以上的登陆页面命名为Ext_login.jsp,其中ExtJS的界面
48、及JS验证代码课见附录。登陆系统的流程图如下:下面进入后台的验证阶段。设计思想是放到后台数据库比对,如果查询结果为0,说明该用户不存在。针对登陆,我做了一个LoginAction,继承自Struts2 ActionSupport,执行放在execute()方面里面。代码可详见附录。Public void Validate()方法是后台输入校验。如果用户不通过首页页面,而是直接通过LoginAction.action方法在地址栏访问的话,在后台也要验证,否则将会造成错误。后台方法是放在allDao.validate()里面,里面有两个参数uid和password,对比从前台传过来的userid和
49、password。Struts2的成员变量对应页面元素的name第5章 详细设计属性。比如private String username,对应页面上<input type=”text” name=”username”>,从而捆绑了页面元素。继承了actionSupport默认的方法是String execute(),也可以自己写方法。实现SessionAware接口,可以把变量存储到session里面,日后方便权限管理,Struts2的session是用Map 实现,需要重写setSession()方法。Autowired注释,是Spring3.0的新特性,也不用写XML配置文件。
50、Autowired意为注入,相当于applicationContext配置文件里面加上<beans><bean id="student"class="com.lee.bean.Student"><property name="allDao" ref="allDao" /></bean><bean id="allDao"class="com.lee.dao.allDao"></bean><beans&
51、gt;allDao.validate()方法如下:/ 验证用户名密码public boolean validate(Long uid, String password) Query q4 = getSession().createQuery("from User user where user.uid=:Tid and user.password=:Tpassword").setLong("Tid", uid).setString("Tpassword", password);boolean flag = false;/ 省略else
52、 if (!q4.list().isEmpty() flag = true;elseflag = false;return flag; 通过和数据库的admin,student,teacher和user表比对,来判断是否存在该用户。代码createQuery("from Admin admin where admin.id=:Tid and 电子科技大学成都学院本科毕业设计论文admin.password=:Tpassword")为Hibernate的HQL语言,跟关系数据库的SQL语言一样。查询结束后,调用list()方法,查询结果就成了一个List,这是判断List是否
53、为空就可知是否存在该用户。在LoginAction里面,如果通过validate方法验证,就返回SUCCESS,否则返回LOGIN。 SUCCESS和LOGIN都是ActionSupport里面定义了的字符串”success”和 “login”,对应sturts.xml配置文件里面的result,下面是struts.xml里面LoginAction的部分。<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-/Apache Software Founda
54、tion/DTD Struts Configuration 2.0/EN" "/dtds/struts-2.0.dtd"><struts><package name="struts2" extends="struts-default"><action name="Login" class="com.lee.action.LoginAction"><result name="input
55、">/login.jsp</result><result name="login">/relogin.jsp</result><result name="success">/welcome.jsp</result></action></struts></xml>如果返回的是”success”,将会跳转到welcome.jsp页面。如果是”login”,将跳转到relogin.jsp页面。如果是输入类型,自动返回”input”。图5-15是不输入
56、数据,直接访问LoginAction.action的结果。 第5章 详细设计图5-15 直接访问LoginAction.action结果5.4.2 权限管理本选课系统存在多种角色的用户,所以存在权限问题。如果用户不登陆而直接访问某个页面,就可能造成越权操作。为了避免这个问题,我们要做权限管理。在上述LoginAction当中实现了SessionAware接口,这样就能把传过来的用户名存入Session里面了。权限的基本思路是当用户访问某个页面的时候,比对当前Session里面的值,如果符合要求就可以浏览该页,否则不能浏览。传统的Session设法是在JSP页面里面设Session,再通过<
57、;% If %>判断,使session不一样的用户看到的是不同的页面。本系统采用的是Struts2的拦截器Interceptor思想,即在Action签名搭建一个拦截器,在Action执行完之前,先到拦截器里面执行相应方法,最后再返回给Action。整个session的判断放到后台执行,避免与前台JSP页面耦合。本工程编写了一个角色拦截器RoleInterceptor.java,代码如下:import .public class RoleInterceptor extends AbstractInterceptor Overridepublic String intercept(ActionInvocation invocation) throws Exception .try session = invocation.getInvocationContext().getSession();role = (Integer) session.get("User"); catch (NullPointerException e) return Action
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中考历史总复习世界历史全册知识提纲(下)
- 减速机应用与维护培训
- 兽药电话营销产品培训体系构建
- 城市交通规划合同管理知识产权咨询重点基础知识点
- 车辆质押合同和借款协议
- 转让京东店铺合同协议
- 道路绿化树木合同协议
- 涂改离婚协议书
- 进口食品代理合同协议
- 车位物业服务合同协议
- 如何获得好评的培训
- 急诊服务流程与服务时限培训
- 2025-2030农业机械化行业市场发展分析及前景趋势与投资研究报告
- 2024年中国铁路武汉局集团有限公司招聘笔试真题
- 《经济政策分析》课件2
- 2025春 新人教版美术小学一年级下册自然的馈赠
- 自考《03203外科护理学》考试题库大全-下(多选题)
- 艺考生协议合同
- 公路工程质量试题及答案
- 产业链购销合同
- 出口美国合同范本
评论
0/150
提交评论