Java EE 课程设计.docx

上传人:b****6 文档编号:7260316 上传时间:2023-01-22 格式:DOCX 页数:29 大小:597.54KB
下载 相关 举报
Java EE 课程设计.docx_第1页
第1页 / 共29页
Java EE 课程设计.docx_第2页
第2页 / 共29页
Java EE 课程设计.docx_第3页
第3页 / 共29页
Java EE 课程设计.docx_第4页
第4页 / 共29页
Java EE 课程设计.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

Java EE 课程设计.docx

《Java EE 课程设计.docx》由会员分享,可在线阅读,更多相关《Java EE 课程设计.docx(29页珍藏版)》请在冰豆网上搜索。

Java EE 课程设计.docx

JavaEE课程设计

河南理工大学

计算机科学与技术学院

课程实训报告

2012—2013学年第二学期

 

课程名称javaEE

设计题目学生信息管理系统

学生姓名

学号

专业班级

2013年6月27日

目录

目录I

第1章基础知识1

1.1MySql数据库和Navicat1

1.2JSP和Servlet1

1.3Struts2框架2

1.4Hibernate框架2

第2章总体设计3

2.1需求分析3

2.2数据库设计4

2.3功能模块5

2.4框架的应用5

1Hibernate体系结构6

2.Hibernate核心接口7

第3章详细设计9

(仅对学生表进行详细分析,其他表类似)9

第4章功能实现13

4.3修改个人信息19

4.个人选课情况21

5.所有课程信息23

第5章总结24

第1章基础知识

1.1MySql数据库和Navicat

MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司。

目前MySQL被广泛地应用在Internet上的中小型网站中。

由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

Navicat是一套快速、可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。

它的设计符合数据库管理员、开发人员及中小企业的需要。

Navicat是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。

1.2JSP和Servlet

JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。

网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。

JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

JSP(JavaServerPages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。

JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。

1.3Struts2框架

Struts2是Struts的下一代产品,是在struts1和WebWork的技术基础上进行了合并的全新的Struts2框架。

其全新的Struts2的体系结构与Struts1的体系结构差别巨大。

Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。

1.4Hibernate框架

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,完成数据持久化的重任。

 

第2章总体设计

2.1需求分析

学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。

特别是近几年来,国家政策的调整,我国高等院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。

其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依*人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,目前我国各类高等院校中还有相当一部分学生档案管理还停留在纸介质的基础上,尤其是中、小学对学生档案的管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力和物力。

随着科学技术的不断提高,计算机科学与技术日渐成熟,计算机应用的普及已进入人类社会生活的各个领域,并发挥着越来越重要的作用。

这种传统的手工管理模式必然被以计算机为物质基础的信息管理方法所取代。

学生信息管理系统主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,另外还考虑到学生选课,针对这些要求设计了学生信息管理系统。

 

2.2数据库设计

学生信息表:

xsb

列名

描述

数据类型

可空

默认值

说明

XH

学号

Char(6)

×

主键

XM

姓名

Char(8)

×

XB

性别

bit

×

1:

男,0:

CSSJ

出生时间

datetime

ZY_ID

专业ID

int

×

ZXF

总学分

int

BZ

备注

Varchar(200)

ZP

照片

mediumblob

登录表:

dlb

列名

描述

数据类型

可空

默认值

说明

id

标识

int

×

自增1

主键,自增

xh

登录号

char(6)

×

外键,xsb中xh

kl

口令

char(20)

×

专业表:

zyb

列名

描述

数据类型

可空

默认值

说明

id

ID

int

×

自增1

主键

zym

专业名

char(12)

×

rs

人数

int

0

fdy

辅导员

char(8)

课程表:

kcb

列名

描述

数据类型

可空

默认值

说明

kch

课程号

Char(3)

主键

kcm

课程名

Char(12)

 

kxxq

开课学期

smallint

1-8

xs

学时

int

0

 

xf

学分

int

0

 

连接表:

xs_kcb

列名

描述

数据类型

可空

默认值

说明

xh

学号

char(6)

主键

kch

课程号

char(3)

主键

 

2.3功能模块

2.4框架的应用

(1)Struts2框架

1.Struts2的工作流程

Struts2框架中的配置文件struts.xml会起映射作用,它会根据“*”来决定调用用户定义的哪个Action类。

例如在项目Struts2.0中,请求为struts.action,前面“*”的部分是“struts”,所以在struts.xml中有个Action类的name为“struts”,这表示该请求与这个Action来匹配,就会调用该Action中class属性指定的Action类。

但是在Struts2中,用户定义的Action类并不是业务控制器,而是Action代理,其并没有和ServletAPI耦合。

所以Struts2框架提供了一系列的拦截器,它负责将HttpServletRequest请求中的请求参数解析出来,传入到用户定义的Action类中。

2.Struts2的校验框架

Struts2数据校验有两种方式,一是继承Action类ActionSupport类,重写validate()方法,在该方法中将校验信息通过addActionError()和addFieldError()添加fieldError中。

Struts在执行execute之前,会先执行validate方法。

对于Action中的其他方法,则需要添加validateXXX()方法,如Action中有一个add()方法和一个validateAdd()方法,系统会在执行add()之前先执行validateAdd()方法。

(通过反射调用的)这里要注意,如果Action中同时有validateXXX()方法和validate()方法,则他们都会被调用,并都会起到校验作用。

不论Action请求的是哪一个处理逻辑,validate()方法都会起到校验作用。

且validateXXX()方法会在validate()方法之前被调用。

不推荐使用这种校验方式,因为这样会使代码比较混乱。

二是使用校验框架,如配置XXXAction-validation.xml文件。

本项目只用到了第一种校验方式。

3.OGNL表达式

OGNL是Object-GraphNavigationLanguage的缩写,它是一种功能强大的表达式语言(ExpressionLanguage,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。

它使用相同的表达式去存取对象的属性。

OGNL可以让我们用非常简单的表达式访问对象层。

4.Struts的标签库

Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,Struts2的主题、模板都提供了很好的扩展性。

实现了更好的代码复用。

Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。

Struts2的标签库有一个巨大的改进之处,Struts2标签库的标签不依赖于任何表现层技术,也就是说Struts2提供了大部分标签,可以在各种表现技术中使用。

包括最常用的jsp页面。

分类

UI标签:

(UserInterface,用户界面)标签,主要用于生成HTML元素标签,UI标签又可分为表单标签非表单标签。

非UI标签:

主要用于数据访问,逻辑控制等的标签。

非UI标签可分为流程控制标签(包括用于实现分支、循环等流程控制的标签)和数据访问标签(主要包括用户输出ValueStack中的值,完成国际化等功能的)。

(2)Hibernate

1Hibernate体系结构

Hibernate作为模型层/数据访问层。

它通过配置文件(hibernate.cfg.xml或hibernate.properties)和映射文件(*.hbm.xml)把Java对象或持久化对象(PersistentObject,PO)映射到数据库中的数据表,然后通过操作PO,对数据库中的表进行各种操作,其中PO就是POJO(普通Java对象)加映射文件。

Hibernate的体系结构如图所示。

2Hibernate各种文件

2.Hibernate核心接口

1.Configuration接口

Configuration负责管理Hibernate的配置信息。

Hibernate运行时需要一些底层实现的基本信息。

这些信息包括:

数据库URL、数据库用户名、数据库用户密码、数据库JDBC驱动类、数据库dialect。

用于对特定数据库提供支持,其中包含了针对特定数据库特性的实现,如Hibernate数据库类型到特定数据库数据类型的映射等。

使用Hibernate必须首先提供这些基础信息以完成初始化工作,为后续操作做好准备。

这些属性在Hibernate配置文件hibernate.cfg.xml中加以设定,当调用:

Configurationconfig=newConfiguration().configure();

时,Hibernate会自动在目录下搜索hibernate.cfg.xml文件,并将其读取到内存中作为后续操作的基础配置。

2.SessionFactory接口

SessionFactory负责创建Session实例,可以通过Configuration实例构建SessionFactory。

Configurationconfig=newConfiguration().configure();

SessionFactorysessionFactory=config.buildSessionFactory();

3.Session接口

Session是Hibernate持久化操作的基础,提供了众多持久化方法,如save、update、delete等。

通过这些方法,透明地完成对象的增加、删除、修改、查找等操作。

同时,值得注意的是,HibernateSession的设计是非线程安全的,即一个Session实例同时只可由一个线程使用。

同一个Session实例的多线程并发调用将导致难以预知的错误。

Session实例由SessionFactory构建:

Configurationconfig=newConfiguration().configure();

SessionFactorysessionFactory=config.buldSessionFactory();

Sessionsession=sessionFactory.openSession();

4.Transaction接口

Transaction是Hibernate中进行事务操作的接口,Transaction接口是对实际事务实现的一个抽象,这些实现包括JDBC的事务、JTA中的UserTransaction,甚至可以是CORBA事务。

之所以这样设计是可以让开发者能够使用一个统一的操作界面,使得自己的项目可以在不同的环境和容器之间方便地移值。

事务对象通过Session创建。

例如以下语句:

Transactionts=session.beginTransaction();

5.Query接口

在Hibernate2.x中,find()方法用于执行HQL语句。

Hibernate3.x废除了find()方法,取而代之的是Query接口,它们都用于执行HQL语句。

Query和HQL是分不开的。

Queryquery=session.createQuery(“fromKcbwherekch=198”);

例如以下语句:

Queryquery=session.createQuery("fromKcbwherekch=?

");

就要在后面设置其值:

Query.setString(0,"要设置的值");

上面的方法是通过“?

”来设置参数,还可以用“:

”后跟变量的方法来设置参数,如上例可以改为:

Queryquery=session.createQuery("fromKcbwherekch=:

kchValue");

Query.setString("kchValue","要设置的课程号值");

其使用方法是相同的,例如:

Query.setParameter(0,"要设置的值");

Query还有一个list()方法,用于取得一个List集合的示例,此示例中包括可能是一个Object集合,也可能是Object数组集合。

例如:

Queryquery=session.createQuery("fromKcbwherekch=198");

Listlist=query.list();

3.HQL查询

基本查询是HQL中最简单的一种查询方式。

下面以课程信息为例说明其几种查询情况。

(1)查询所有课程信息

Sessionsession=HibernateSessionFactory.getSession();

Transactionts=session.beginTransaction();

Queryquery=session.createQuery("fromKcb");

Listlist=query.list();

mit();

HibernateSessionFactory.closeSession();

(2)查询某门课程信息

...

Sessionsession=HibernateSessionFactory.getSession();

Transactionts=session.beginTransaction();

//查询一门学时最长的课程

Queryquery=session.createQuery("fromKcborderbyxsdesc");

query.setMaxResults

(1);//设置最大检索数目为1

//装载单个对象

Kcbkc=(Kcb)query.uniqueResult();

mit();

HibernateSessionFactory.closeSession();

(3)查询满足条件的课程信息

...

Sessionsession=HibernateSessionFactory.getSession();

Transactionts=session.beginTransaction();

//查询课程号为001的课程信息

Queryquery=session.createQuery("fromKcbwherekch=001");

Listlist=query.list();

mit();

HibernateSessionFactory.closeSession();

第3章详细设计

(仅对学生表进行详细分析,其他表类似)

(1)建立数据库表及相应的POJO文件

数据库表在之前已经建立,利用java的反射机制可以生成相应的POJO对象和映射文件。

(存放在org.model包下如下图)

下面仅以学生表的POJO举例(其他POJO代码可以见项目)

packageorg.modle;

importjava.sql.Timestamp;

importjava.util.HashSet;

importjava.util.Set;

importcom.sun.org.apache.bcel.internal.generic.NEW;

publicclassXsbimplementsjava.io.Serializable{

//Fields

privateStringxh;

privateStringxm;

privateBooleanxb;

privateTimestampcssj;

privateIntegerzyId;

privateIntegerzxf;

privateStringbz;

privateByte[]zp;

privateZybzyb;

privateSetkcs=newHashSet();

//生成相应的getset方法

}

(2)关系表映射(Xsb.hbm.xml文件)

学生表的映射文件(其他映射文件代码可以见项目)

该配置文件大致分为3个部分:

(1)类、表映射配置

name属性指定POJO类为org.model.Kcb,table属性指定当前类对应数据库表KCB。

(2)id映射配置

Hibernate的主键生成策略分为三大类:

Hibernate对主键id赋值、应用程序自身对id赋值、由数据库对id赋值。

.......

(3)对类及映射文件进行注册

在hibernate.cfg.xml中加入注册代码,如下:

(四)Dao层组件接口

Hibernate中对数据库中学生表的查询操作接口

packageorg.dao;

importjava.util.List;

importorg.modle.*;

publicinterfaceXsDao{

publicXsbgetOneXs(Stringxh);//获取学生学号

publicvoidupdate(Xsbxs);

}

(五)DaoImp接口的实现

实现对学生信息的查询操作,核心代码如下:

Transactionts=session.beginTransaction();

Queryquery=session.createQuery("fromXsbwherexh=?

");

query.setParameter(0,xh);

query.setString(0,xh);

query.setMaxResults

(1);

Xsbxs=(Xsb)query.uniqueResult();

mit();//实现对表的查询操作以及事务的提交

学生表全部代码如下:

packageorg.dao.imp;

importjava.util.List;

importorg.dao.XsDao;

importorg.hibernate.Query;

importorg.hibernate.Session;

importorg.hibernate.Transaction;

importorg.modle.*;

publicclassXsDaoImpimplementsXsDao{

publicXsbgetOneXs(Stringxh){

try{

Sessionsession=org.util.HibernateSessionFactory.getSession();

Transactionts=session.beginTransaction();

Queryquery=se

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文学研究

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1