最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

毕业综合实践报告模板

来源:动视网 责编:小OO 时间:2025-09-25 16:17:09
文档

毕业综合实践报告模板

毕业综合实践报告姓名:学号:系部:专业:软件技术班级:软件1班指导教师:任小艳完成日期2011年6月5日JAVABS开发模式在销售管理软件上的运用摘要本文分析了Browser/Client结构的特点,同时列举了把B/S结构应用到销售管理软件上的的优点。JSP作为流行的动态网站开发工具,很适合开发导航系统,可以完成数据更新的动态操作。文中介绍了JSP的工作流程,运用JSP开发WEB应用程序的关键技术和访问数据库的方法。介绍了整个系统的设计规划,系统结构、数据库设计时元数据的应用、系统功能的分析以
推荐度:
导读毕业综合实践报告姓名:学号:系部:专业:软件技术班级:软件1班指导教师:任小艳完成日期2011年6月5日JAVABS开发模式在销售管理软件上的运用摘要本文分析了Browser/Client结构的特点,同时列举了把B/S结构应用到销售管理软件上的的优点。JSP作为流行的动态网站开发工具,很适合开发导航系统,可以完成数据更新的动态操作。文中介绍了JSP的工作流程,运用JSP开发WEB应用程序的关键技术和访问数据库的方法。介绍了整个系统的设计规划,系统结构、数据库设计时元数据的应用、系统功能的分析以
毕业综合实践报告

        

       姓  名:                

              学  号:                

系    部:              

专    业: 软件技术      

班    级: 软件1班     

              指导教师: 任小艳           

完成日期  2011年6月5日

JAVA BS开发模式在销售管理软件上的运用

摘要

本文分析了Browser/Client结构的特点,同时列举了把B/S结构应用到销售管理软件上的的优点。JSP作为流行的动态网站开发工具,很适合开发导航系统,可以完成数据更新的动态操作。文中介绍了JSP的工作流程,运用JSP开发WEB应用程序的关键技术和访问数据库的方法。介绍了整个系统的设计规划,系统结构、数据库设计时元数据的应用、系统功能的分析以及系统各功能模块的详细设计和部分代码。探讨了用B/S模式有数据库作后台支持的原理和具体实践,以及其相关的技术在整个J2EE系统中的发展历程,开发时所碰到的问题,具体运用的优劣两方面的内容。

关键词: Browser/Client  J2EE框架  JSP

引言

实习岗位概况:我所实习的公司是位于浦东张江高科技园区的商策科技(上海)有限公司(S Strategies technology Co.,Ltd.),这家公司从事销售管理软件(SFA)和客户关系管理软件的开发和销售,提供专业销售管理培训、咨询等服务。我在公司实习的岗位是Java软件工程师,主要从事公司软件开发任务。

课题简介:本报告探讨了用JAVA开发B/S模式有数据库作后台支持的销售管理软件的原理和具体实践。本案例基于MVC模式,JSP 作为表示层(V),Servlet作为控制器(C),Ejb+Hibernate作为模型层(M),所以就是以JSP+Servlet+Ejb+Hibernate 三层模式来实现。

任务:在公司中我所从事的主要任务是在公司项目经理的带领下,根据公司软件的需求,完成相应项目的编程。

正文

本文的项目是基于B/S的开发,使用了JSP+Servlet+Ejb+Hibernate开发模式,Hibernate进行数据库映射,EJB执行数据库操作,Servlet作为逻辑控制层,JSP作为最后给用户的显示层,中间还穿插运用到了普通的JAVABEAN等技术。

一、基于B/S结构的数据库访问模式

     B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。随着Windows 98/Windows 2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序将是巨大的进步。

B/S结构是真正的三层结构,它以访问WEB数据库为中心,HTTP为传输协议,客户端通过浏览器(Browser)访问WEB服务器和与其相连的后台数据库,我们称之为B/S(Browser/Server)模式。其三级结构组成如下图所示:

客户端

客户端

后台数据库

WEB服务器

图中从左到右,分为三个层次:

第一层是客户端即浏览器,主要完成客户和后台的交互及最终查询结果的输出功能。在客户端向指定的Web服务器提出服务器请求,Web服务器用HTTP协议把所需文件资料传给用户,客户端接受并显示在WWW浏览器上;

第二层Web服务器是功能层,完成客户的应用功能,即Web服务器接受客户请求,并与后台数据库连接,进行申请处理,然后将处理结果返回Web服务器,再传至客户端;

第三层数据库服务器是数据层。数据库服务器应客户请求地进行各种处理。

与传统的C/S模式相比,B/S结构把处理功能全部移植到了服务器端,用户的请求通过浏览器发出,无论是使用和数据库维护上都比传统模式更加经济方便。而且使维护任务层次化:管理员负责服务器硬件日常管理和维护,系统维护人员负责后台数据库数据更新维护。

由以上的比较分析可知,三层结构也可以理解为增加WEB服务器的C/S模式。

二、实施技术框架结构

1.数据查询数据查询

当用户查询数据时首先通过页面发出action然后调用ejb方法通过Hibernate进行数据库查询,如图一所示:

图一

2.数据更新

当用户进行数据更新时首先通过页面发出action然后调用ejb方法通过Hibernate进行数据库更新,如图二所示:

图二

三、Hibernate介绍

⏹Hibernate 介绍

Hibernate 初始化

1. 在Hibernate初次启动的时候,会从Hibernate.cfg.xml读出所有mapping关联表信息,一次性读入内存,以供以后使用

2. 调用Configuration 类的buildSessionFaction 方法

sessionFaction = config.buildSessionFactory();

sessionFactory 代表一个数据源,若只有一个数据源,则只需要创建该对象的一个实例,该对象不和Configuration 关联,可以再修改Configuration 对象包含的配置信息,不会对SessionFactory 有任何的影响

Hibernate 的Session 接口

Hibernate 初始化后,可以通过SessionFactory 实例的openSession()方法获得Session 实例,然后通过它执行访问数据库的操作。

save() : 把Java 对象保存到数据库中

update() : 更新数据库中的Java对象

delete(): 把Java对象从数据库中删除

load(): 从数据库加载Java 对象

find(): 从数据库查询Java对象

saveorupdate():hibernate自己判断为save还是update Java对象

Session 对象是一个轻量级对象,通常情况下将每一个Session实例和一个数据库事务绑定;先根据项目实际情况,订如下规则:

对于对单表的更新操作,不要用事务,只用session.flush();

对于复杂的业务逻辑,即有多次更新,则用事务

四、EJB技术重点介绍

EJB的命名

Remote接口: 业务功能描述+Session

Home 接口:  业务功能描述+SessionHome

            Bean 类 :  业务功能描述+SessionBean

EJB Home接口

//申明JNDI上下文

javax.naming.Context context = new javax.naming.InitialContext();                           

//通过JNDI 查询EJB Home 接口

UserAccountSessionHome userAccountSessionHome = 

(UserAccountSessionHome) context.lookup("UserAccountSession");

// 调用create() 方法,返回EJB Remote 接口

UserAccountSession userAccountSession = userAccountSessionHome.create();

EJB Remote接口 和 EJB 实现类

必需注意:EJB Remote接口里面的方法必需要在EJB 实现类中有同名的实现方法!

EJB Remote接口继承EJBObject,只提供方法接口,供其它程序调用,封装EJB实现方法,前端用户不需要知道该方法是怎么实现的。

EJB 实现类是一个封装实现(必需实现SessionBean )类,封装所有的业务逻辑,前端程序不能直接调用该实现类。

无状态Session Bean 在内存中只有一份实例,可以被所有用户共享使用。

EJB 配置描述

 EJB 的标准配置描述:ejb-jar.xml  

在该配置描述中,描述了EJB 的JNDI Name 、Home 接口、Remote 接口、EJB实现类,以及EJB 的事务隔离级别和EJB 的类型

EJB业务方法

为了提高项目的可维护性,在写EJB业务方法时,尽量做到方法与业务一对一的关系

五、Action控制器/ JSP 技术重点介绍

图三

控制器在MVC中担当非常重要的角色,它负责整个项目各种请求的调度和处理,也是衔接表示层和模型层的桥梁,根据本案例的特点,制定符合实际的Servlet控制器:

在本案例根据功能的需要划分成的个子模块,每个模块都需自己的控制器(Servlet),负责本模块请求的调度和处理;在这些控制器中有可能会一些相同的方法,因此我们设计了一个基类(BaseServlet),该类继承了HttpServlet系统类,另外的都继承BaseServlet类,在基类(BaseServlet)中做一些公共的方法供它的子类调用

在子类中的各个方法中尽量自己处理异常,不要抛出异常

在一个Servlet中,只需声明一个全局变量就是EJB接口,其它的应该全部声明为局部变量

在Servlet中有个初始化方法init(),该方法在整个Servlet的生命周期内只执行一次,我们可以用它来初始化EJB接口,如:

   Context ctx = new InitialContext();    

     Object ref = ctx.lookup("SystemSetupSession");                   

SystemSetupSessionHome creditSessionHome = (SystemSetupSessionHome) PortableRemoteObject.narrow(ref, SystemSetupSessionHome.class);

        //systemsetupSession 定义为全局,可以共享

    systemsetupSession =creditSessionHome.create();

        在整个WEB的运行中,容器中只存在一个Servlet实例

在Servlet中有个销毁方法 destroy(),主要在容器卸载WEB应用时卸载系统所占的资源,在Servlet的生命周期中也只会调用一次,目前还没有用到,现备用

所有的需要取页面的值(request,getparameter(“”))都在业务方法里面进行,这样可以保证页面数据的私有性

在Servlet中有两个方法用于处理从页面发来的请求,分别为:doGet()和doPost()方法:

DoGet()方法:主要用来处理页面的GET请求,有两种情况:一﹑通过from 的action 转发过来(method=get 和 省缺method不写)的情况;二﹑就是普通的超连接()的情况

DoPost()方法:主要用来处理页面的POST请求,通过from的action 转发过来的情况(method=post)情况

在本案例中两个方法的处理方法一样的

所有页面的请求都在Servlet中处理,处理的结果都放在request中传回页面,如:

//通过EJB接口取客户数据

List customerList = customerSession.getCustomerByCompcode();

//把得到的客户列表存到request里面

Request.setAttribute(“customerList”, customerList);

//在JSP页面上取数据

List list = (List)request.getAttribute(customerList);

Servlet控制器的访问路径可以根据需要在(web.xml)中自由定义:

假如:客户模块的控制器(CustomerServlet),在web.xml中配置如下

CustomerServlet

/ CustomerServlet

url-pattern为相对web应用的绝对路径开始

url-pattern为用户方法该控制器的url路径

在JSP页面上可以直接访问该路径

所有的请求都转发到控制器中,在doPost()方法中做统一处理,以action的值来区分不同的业务操作,再去执行对应的业务方法

关于请求转发的问题:

由于所有的数据用request来作为传输介质,但是要保证在同一个请求中数据

才有效,所以我们只能做到请求转发,可能也有如下两种情况:

需要返回值的情况,只能用请求转发:

   RequestDispatcher req = request.getRequestDispatcher("/list.jsp");

            req.forward(request,response);

   req.forward(request,response);

   只有这样在可以保证在同一个请求里面,才可以在list.jsp页面上取数据

  /******特殊情况下用**********/

   如果在一个控制器中要调用别的控制器的业务方法的话,在回来

   RequestDispatcher req = request.getRequestDispatcher("/list.jsp");

            req.forward(request,response);

   req.include(request,response);

 /*****************************/

不需要返回值的情况,如delete,update,add 等,可以直接转到某一个jsp:

response.sendRedirect(“list.jsp”);

不过这个方式很少,大多不用

一般是在调用list方法,再转发到list.jsp页面 

Servlet中的方法尽量做到功能单一化

在Servlet中的doPost方法中,如果没有找到对应的Action,则跳转到错误页面

用Servlet做的控制器的一些优点:

根据Servlet的生命周期,在整个的web应用中,Servlet在内存中只会存在一个实例,即所有用户共享该实例,全局变量也是共享的,只有局部变量才能保持私有化;所以尽量少用全局变量,才能尽可能的保证线程安全

  在doPost()方法中根据action来判断请求的类别,再去执行相对应的业务方法,这样可以做能使代码简洁﹑易懂和可维护性高

  在Servlet做了一些逻辑处理,才会让JSP页面上做到简洁。

五、基于 MVC Framework

  在 jsp 、 javabean 之间能有个东西自动完成页面请求数据的封装、根据请求调用相应的 javabean 、同时根据 javabean 的处理结果返回至相应的 View ,有了这样的思想后,发现 smalltalk 中的 MVC 思想很适合这种场景,于是便在 Java B/S 开发中引入了 MVC 思想,在这里也简单的介绍下 MVC 思想, MVC 强调 View 和 Model 的分离, View 所面对的是 Controller ,由 Controller 负责与 Model 进行交互, View 只负责显示页面以及显示逻辑的处理,显示逻辑指的是诸如第一行要显示蓝色、第二行要显示红色这样的显示方面的处理, Controller 负责接受页面请求,并将其请求数据进行封装,同时根据请求调用相应的 Model 进行逻辑处理,在 Model 处理后返回结果数据到 Controller , Controller 将根据此数据调用相应的 View ,并将此数据传递给 View ,由 View 负责将数据进行融合并最终展现。 MVC 带来的优点很明显的体现出来了,基于一个这样的 MVC Framework 的话开发人员可以按照一种固定的模式进行开发,规范了整个开发过程,提高了质量以及系统结构的清晰性,并由于保证了 View/Model 的分离,使得一个 Model 可以对于多种显示形式的 View ,需要的仅仅是去改变 View 和 Controller 。

按照 MVC 思想,最容易想到的实现方案莫过于 jsp+servlet+javabean ,在这里面 jsp 对应着 View , servlet 对应着 Controller , javabean 对应着 Model ,因为采用 servlet 可使用 servlet container 已经封装好的页面数据请求对象 HttpServletRequest ,这样就省去了自己封装页面请求数据的工作,作为 Controller 同时还需要承担根据请求调用对应的 javabean ,最简单的做法无非就是在 Servlet 中直接根据某种逻辑 ( 诸如反射或接口 ) 调用相应的 bean 进行执行,之后将 HttpServletRequest 、 HttpServletResponse 作为参数传入 javabean 进行处理, javabean 从 HttpServletRequest 中获取请求数据,将返回的结果数据放入 HttpServletResponse ,整个过程结束后继续由 Controller 接手进行处理,这个时候作为 Controller 的 servlet 将根据处理的结果返回相应的页面,在这个模型使用时人们慢慢的发现了一个问题,那就是随着 jsp 、 javabean 的变化造成了 controller 的不断修改,需要修改其中调用相应 javabean 以及转发相应页面的部分,为了解决这个问题,首先想到的是应该分离根据请求调用相应 javabean 的步骤,这个时候采用了设计模式中的 front controller+application controller 的方法, front controller 负责接受页面请求并进行封装,同时将此数据对象传递至 application controller ,由 application controller 来负责调用相应的 bean ,这样的设计其实都是遵循着一个设计原则,就是职责单一,通常实现 application controller 的模式是 Command 模式,在这种情况下 MVC Framework 的结构体系就演变成了 view+controller(front+application)+model 。

六、Jsp+Jdbc

  在 B/S 开发中最简单的一种开发模式是页面 + 逻辑处理,映射到技术上反应出来的有 Jsp+Jdbc ,在基于这类的实现中在 View 层也就是 jsp 页面上负责数据的显示、逻辑处理,结合 jdbc 完成数据的持久化,在小型的项目中,人们确实发现这种方式是最为方便的,但在复杂的项目以及需求不断变化的项目中,人们慢慢的发现这种方式造成了不少的问题,首先是调试的问题,想想在一个 jsp 页面中进行排错是多么的困难,其次是修改的问题,为了满足用户需求的一个小小的变化,都需要去改不少的页面,而且很多时候由于写的时间长了,自己都需要回忆很久才能想起是怎么回事,更不用说如果人员流动了会怎么样,同时还带来开发效率的问题,由于需要缺少足够的调试的支持,需要较为熟练的开发人员才能快速的完成,对于一般的人员来说需要一定的适应和学习过程,当然伴随而来的还有诸如修改界面的时候一不小心少 copy 了点代码什么造成的错,最大的问题可能还是重用的问题,通常会造成 N 多同样的代码在页面上 copy 来 copy 去的,总结下来在这种模式下有几个比较重大的问题就是:

  1、 调试问题。

  2、 维护问题,显示和逻辑处理在一起导致了修改显示的时候较为困难,至于修改代码则因为之前的调试问题导致了困难,同时由于逻辑均在页面上后期接手人员需要一段时间去理解。

  3、 代码重用性问题。

  但同样它还是存在优点的,那就是可以很快的上手,但由于调试和维护性问题确实太大了,所以在现在也是基本不再采用这种方式了。

七、Jsp+JavaBean  

JSP+JavaBean 这样的技术体系,在这个体系中由 jsp 页面负责显示以及接收页面请求,并调用相应的 JavaBean 来完成逻辑处理,在获取其返回的处理数据后转到相应的页面进行显示。在这样的技术体系中,由于逻辑是由 JavaBean 来完成的,可以对其进行调试了,代码的重用性一定程度上也得到了提高。刚开始的时候用这样的技术体系确实发现比以前用 jsp+jdbc 爽了很多,但随着用多了,慢慢又发现了问题,那就是在页面中需要编写对于页面请求数据的获取,还得根据请求去调用相应的 javabean ,并根据 javabean 的处理结果转入相应的页面,这同样造成了修改的麻烦,毕竟是去页面上修改这些逻辑,总结下来在这种模式下有比较重大的问题就是:

  1、 代码重用性以及维护性问题。但这里的代码重用性问题和 jsp+jdbc 的就不同,在逻辑处理部分现在已经可以重用了,但现在在各个页面就不得不重复的写获取页面请求的参数、相应的调用 Model 、根据 Model 的处理结果转发页面,这样的话就导致了在改的时候需要到处去找,造成了维护的复杂。

  2、 系统结构不清晰。毕竟仍然是在页面控制整个响应页面事件的处理流程,这个时候就造成了很多页面中出现完全相同的 jsp 代码,而且控制代码在页面,仍然是不便操作,例如对于 JavaBean 的调用等,而且由于获取 javabean 的数据需要转发的缘故,其实通常就是在最终的显示页面上加上上面的控制事件处理流程的代码,并没有真正的做到显示和处理的分离。

  同样,它的优点在于分离了显示和业务逻辑处理,增强了可调试以及维护性,而且也是很容易上手的,对于小型项目来说仍然是可选的方案之一。

结论

一个优秀B/S系统架构能够使用户快速,准确,方便的去使用,得到事半功倍的效率。JSP+Servlet+Ejb+Hibernat这个的架构开发模式运用在销售管理软件中是十分合适的。

通过公司项目的开发,让我对学校所学到的知识有了个巩固和更深一个层次的认识与了解。在公司的学习期间,让我学到很多专业技能和为人处世的技巧,作为一个实习生在公司中应做到虚心好学,任劳任怨,虽然每日辛苦的加班把我折磨得疲惫不堪,但是我知道这是每一个程序员都必定要经历的历程,没有这段辛苦的历程是不能成为一个真正有技能的程序员的。 

致谢

经过四个多月在商策科技有限公司中的实习,我学到了很多的知识,使自己在JAVA编程方面有了长足的进步,在这里我首先感谢公司的前辈对于我的帮助,同时也要感谢三年大学学习过程中各位老师的辛勤教导,才使我在编程方面有了一定的根基,才能快速将所学的知识运用到工作上去。希望在将来的日子中,我能在编程方面有长足的进步,成为一个优秀的软件员。

参考资料

[1]上海商策有限公司内部文件

[2] Bruce Eckel 《Think in JAVA》 机械工业出版社 出版日期:2002年12月6日

[3] 孙鑫 《Java Web开发详解》 电子工业出版社出版日期:2006年4月1日

文档

毕业综合实践报告模板

毕业综合实践报告姓名:学号:系部:专业:软件技术班级:软件1班指导教师:任小艳完成日期2011年6月5日JAVABS开发模式在销售管理软件上的运用摘要本文分析了Browser/Client结构的特点,同时列举了把B/S结构应用到销售管理软件上的的优点。JSP作为流行的动态网站开发工具,很适合开发导航系统,可以完成数据更新的动态操作。文中介绍了JSP的工作流程,运用JSP开发WEB应用程序的关键技术和访问数据库的方法。介绍了整个系统的设计规划,系统结构、数据库设计时元数据的应用、系统功能的分析以
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top