好文档 - 专业文书写作范文服务资料分享网站

基于jsp企业员工信息管理系统设计与实现毕业设计

天下 分享 时间: 加入收藏 我要投稿 点赞

个是action=deleteuser是固定不变的,另一个是该用户的id这是根据不同记录取出来的。在UsersAction类中根据action的值可以找到与其相对的方法,如下所示:

private ActionForward deleteUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws HibernateException {

Long id=new Long(request.getParameter(\ Users users=new Users(); users.setId(id); dao.deleteUsers(users);

return mapping.findForward(\ }

在这个方法里得到页面提交过来的用户ID,把这个id存在Users表中的实例中,传给dao的deleteUsers()方法,我们可以看到关于数据库方面的操作都被封装在Dao中。具体的删除操作的代码如下所示:

public void deleteUsers(Users users) throws HibernateException { Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction(); session.delete(users); tx.commit();

HibSessionFactory.closeSession(); }

删除用户时和添加用户一样都是先得到一个Hibernate的Session,后调用它的delete()方法就可以了,操作完成后千万记得要提交事务,即调用commit()方法,和关闭Session。

修改人员的信息时必须先把要修改的人员信息先查找出来,让用户可以直观的根据以前的信息修改。这样在点击修改时也要传给Action一个用户ID,用来查询出用户信息,如下所示:

根据页面的链接可以在Struts的配置文件里找到相应的配置信息,如下所示:

它调用了UsersAction类,返回到updateuser.jsp文件,在UsserAction中同前面一样也是根据action的参数来识别出调用selectUser()方法的,方法实现如下所示:

private ActionForward selectUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws HibernateException {

Long id=new Long(request.getParameter(\ Users u=dao.loadUsers(id.longValue()); request.setAttribute(\

26

return mapping.findForward(\ }

这个方法使在调用Dao的loadUsres()的方法后,得到一个Users的返回值,里面存着与此id相对应的人员信息,然后在把它存在request里。loadUsres()方法实现如下所示:

public Users loadUsers(long id) throws HibernateException { Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction();

Users u = (Users) session.load(Users.class, new Long(id)); tx.commit();

HibSessionFactory.closeSession();

return u;

}

Hibernate在使用这个load()方法时比较特别,需要传入实体类的class,和要查询的用户ID。得到的返回值需要做一下强制类型转换。

显示用户信息的页面在updateuser.jsp中,如图4.5所示。

图4.5 修改用户信息页面

首先要从request中取出人员信息,在转化成Users类型,然后显示在页面中。在显示是否是管理员的项时比较人特别。如下所示:

onClick=\

实际想要提交的表单的名字是isadmin,而在显示checkbox时用的name是isadminhelp。Isadmin

27

确使用hidden类型做为表单提交名字,这和checkbox的特性有关。在使用javascrip对checkbox的value控制时。当value的值如果像这样“value=\”被写死时,使用javascrip是对value的值改变后,在提交表单时是无效的。于是我们就用hidden做为表单提交项,而

name=\

type=\

<%=new

Byte(\value=\

onClick=\

只是在显示给用户的看的。在表单不接收isadminhelp的value,只接收isadmin的value。

4.2 技术难点

4.3.1 参数传递中的中文乱码问题

由于浏览器中的参数传递是按字节传送,因此英文和数字不会有任何的问题,而中文汉字则由两个字节组成。为了解决这个问题,使用了下面的两种方法: ①<%request.setCharacterEncoding(“gb2312”);%>

②request.getParameter(\

4.3.2 图片处理

在SQL Server2000的数据库中可以存放任何格式的图片,但是要将其转换为二进制的数据存入数据库,在调用时再将二进制数据转换为图片,这样虽然便于管理,但是在当前国内的网速来看,这样的方法是在是不可取。因此本系统的图片均是存放的相对路径,将图片放在系统根目录下的image文件夹中,按类分好,然后将其相对路径存入数据库的对应列中,这样可以大大提高网页浏览的速度。

4.3.3 HQL语言

本系统中,所有对数据库的操作都由Hibernate来完成,因此用到了大量的HQL语言。HQL是Hibernate设计的一套完整而实用高效的查询语言,它通过面向对象的语句结构实现了和SQL语言类似的功能。如果向表里插入一条数据的话,直接调用save()方法即可,但如果要使用查询功能的话,我按照一般的SQL语句的方法:from 表名 where 条件,却总是找不到预期的数据,后来看书中发现,from后跟的是表对应映射的类文件名,而非表名,比如招聘表为invite,它对应的类为Invite.java,所以在from后要根Invite而不是invite。

4.3.4 安全性

将项目发布到互联网上后,有些用户不是点击超链接打开网站的某个页面,而是在地址栏中直接写,而后进入,试图避开身份验证,处于对安全性的考虑,本项目在用户登陆后才能进入的页面中,加入了一行判断,如果用户非法进入,则看到的将是一片空白页。

28

5 系统测试

在完成了程序的编写工作后,接下来将进行软件的测试,这里说的软件,并不单单是指程序本身,还包括其他方面。测试和开发一样,也是一项技术性很强的工作,有着很多的技巧。软件测试是软件质量保证的主要活动之一,因此,测试的质量直接影响软件的质量。

依据前面所说的测试对象,我们把测试划分为几个方面来进行测试。

5.1 界面测试

界面测试是测试过程中比较简单直观的一种测试方法,只要细心地按界面要求核对就行了。可这快往往是程序开发人员容易忽视和遗漏的地方。也是常常出Bug的地方。下面是界面测试中经常出现的几种Bug:

1) 错别字,即界面中的标题或者文本内容中出现了错别字。这种Bug如果测试人员不细心,和难

找出来,可能会出现在提示信息或界面中。

2) 出现了一些根本读不懂的内容,一般多出现在程序的提示信息和一些较长的文本中。这种情况

基本上出现在拼起来显示的提示中,页面的简单陈述是通过变量拼组起来的,通过程序将字一个一个地输出出来。通常是因为程序中的控制错误或是程序开发人员对程序没有进行认真的自测,导致出现这种Bug。

3) 程序员自创的词语,虽然意思对,但不符合界面的标准及需求。这种情况基本上是由于开发人

员使用一些专业术语,并且混杂着自己的理解出现Bug,主要是由于开发过程中团队合作没又明确的分工,没有统一的规范用语。

4) 页面类似的内容中,明显有字体,字号不同的情况,使界面整体风格看上去不一致,这种情况

只出现在没有CSS定义的情况下,或是已经定义的CSS,开发人员在开发过程中没有调用。 5) 标题相近的程序及模块,把标题弄混。这种情况多是因为业务方面的定义名称很相似或很类似,

并且业务实体方面也很类似,开发人员在开发过程中忽略了开发名称和模块,只单独地实现其功能。

5.2 功能测试

顾名思义,功能测试主要是测试程序模块是否实现了设计中所有要求的功能。功能测试中需要注意的有:

1) 查询功能中,有按单一查询条件进行查询的,也有按多个查询条件组合查询的,这里要注意多

个查询条件之间的关系,还有一些常识性的问题,比如按月查询,闰年中二月的天数。 2) 录入功能中,需要注意的是前台设置的数值长度是否大于后台数值长度,以及前台与后台的数

据结构是否相符,很多时候录入功能无法实现是由于这些原因。还有就是必须录入的字段的设置是否有误。

3) 测试删除功能中需要注意的是单击”删除”按钮后,一般会出现提示信息,询问是否确定删除。

通常情况下,我们单击”确认”按钮查看信息是否被删除掉了,而忽略了单击“取消”按钮后程序的反应,这时有可能的是没有删除,还有一种可能是即便单击了“取消”按钮,也一样删除了数据。另外,在删除多条记录的时候,要注意连续选中的几条记录是否真正都被删除了,

29

即如果再按照这种查询方式查询,是否还能查询出来。有的时候需要在数据库中设一个标志位,而不是真正的物理删除。所以在下一次查询中,可能还会被查询出来,这主要是因为在查询条件中没有将标志位考虑在内。

4) 关于修改功能的测试,主要是看修改确认后是否数据真正已被修改了。这是最基本的功能,需

要注意的是看是否能把不应该修改的数据也修改成功了。

5.3 需求测试

针对需求测试,是测试中很重要的一个环节。因为需求是在软件设计,开发乃至软件测试中重要的依据。要针对需求测试,首先就要对项目的需求和业务有一定的了解。这些需求很多时候是在实现增、删、查、改这些基本功能之上,针对项目和相关业务所作的一些逻辑上的控制。这就要求程序员在设计和编码的时候要去充分理解考虑需求。

5.4 性能测试

性能测试在软件的质量保证中起着重要的作用。通常我们把性能指标全部归结到硬件,操作系统和开发环境上,而忽略了代码本身性能上的考虑。性能需求指标中,稳定性、并访支撑能力以及安全性都很重要。作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险和恶意攻击的可能性。

5.5 企业员工信息管理系统的测试

在完成编码的工作以后,根据以上的方法和步骤进行了如下的测试:

· 界面测试:在不开启Web服务器的情况下,反复点击网页上的超链接,测试其连接情况,直到所有的链接都达到预期的效果。

· 功能测试:对网站的几大功能模块逐一测试,尽最大可能发现起潜在的错误。 · 性能测试:将程序以局域网的形式发布,查看其是否满足多用户的要求。 · 需求测试:根据需求分析的内容,测试网站是否和当初的设计一样。

通过这几方面的测试,我及时修正了系统中存在的问题,很好的提高了系统的性能,达到了预期目标。

30

基于jsp企业员工信息管理系统设计与实现毕业设计

个是action=deleteuser是固定不变的,另一个是该用户的id这是根据不同记录取出来的。在UsersAction类中根据action的值可以找到与其相对的方法,如下所示:privateActionForwarddeleteUser(ActionMappingmapping,ActionFormform,HttpServletReq
推荐度:
点击下载文档文档为doc格式
7sbrd1gzm28wrp7230mk0mq5e7eayt017y9
领取福利

微信扫码领取福利

微信扫码分享