实习报告-2016-1-13_第1页
实习报告-2016-1-13_第2页
实习报告-2016-1-13_第3页
实习报告-2016-1-13_第4页
实习报告-2016-1-13_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、实习报告1 实习单位的基本情况及指导老师(1)实习单位介绍 扬州紫竹软件有限公司前身为成立于2005年的无锡紫竹软件有限公司,2008年成为首批入驻江苏信息服务产业基地的软件企业,同年在南京成立了研发中心江苏智城科技有限公司。 扬州紫竹软件有限公司及其研发机构拥有一直年轻、富有创新精神的管理和开发专业团队,具有丰富的软件开发和项目实施经验,多年来致力于研发自主知识产权的数据分析、数据加工、数据交换等应用软件,主要面向政府部门政务智能应用,涉及政府、财税、统计、教育、运营商等多个领域客户,为政府管理、辅助决策提供优异的解决方案。 2007年前公司相继为泰州市所辖四县靖江市、泰兴市、姜堰市、兴化市

2、建设财政收入分析系统,并建立乡镇虚拟金库及提供基层财政体制模型。2007年8月起扬州市开始建设社会综合治税数字化系统,包括“一个平台、三个模块”:“一个平台”是综合治税数据交换平台,“三个模块”包括:财政收入分析系统、综合治税管理系统、财税收入预测系统,我公司承建综合治税工程中财政收入及预测系统,并在扬州一市四区推广,获得用户一直好评。 2008年起公司研发机构致力于政府信息资源共享底层数据交换平台的研发,先后成功开发了财税库联网数据交换平台、综合治税数据交换平台,先后用于宝应、仪征、沭阳等县财税库联网分析系统,及吉林榆树市、辽宁建平县、河南郏县等综合治税工程建设中获得成功。2010年起公司将

3、政府信息资源共享平台与财政收入分析、综合治税应用、领导辅助决策等政府及各部门需求融合,成功开发囊括综合治税管理、财税综合分析管理、综合治税专项应用、数据交换平台等的综合治税一体化平台,具有业务专业性强、系统集成度高、项目投资少、建设周期短等显著优点,为中小城市综合治税工作提供了崭新思路及解决方案,并得到吉林榆树市、辽宁建平县、河南郏县、江苏扬州市、仪征市、高邮市等用户的高度认可。 作为扬州智慧城市建设的专业软件供应商,我公司正专注于综合治税、信息共享、网站集群、工程诚信、移动办公、统一用户等政务智能系列软件的产品化、产业化,为用户提供一流的产品及服务。(2) 实习指导老师介绍实习指导老师:徐荣

4、刚职务:项目经理技术职称:高级架构师专业特长:java开发,extjs,oracle数据库,html,css和各种前后台框架的搭建等等。2 实习内容及过程(1)实习内容1. Java基础知识 Java的基础知识对于一个Java软件工程师来说就好比是人的灵魂,现在的公司在招聘的时候很多都不在乎你会不会流行的技术,如(Struts、Hibernate、Spring、ibatis等)。他看重的是你的基础扎不扎实,对于网易、腾讯等大公司来说更是如此,我们在开发过程中运用了大量的Java基础知识,如类、对象、方法、成员变量、静态变量、封装、继承、多态、异常、接口、抽象类、IO流等等,所以一个系统对于Ja

5、va编程基础的依赖便不言而喻。 2.MySQL、Oracle数据库 MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发、发布并支持的。MySQL AB是由多名MySQL开发人创办的一家商业公司。它是一家第二代开放源码公司,结合了开放源码价值取向、方法和成功的商业模型。Oracle则是以稳定性著称,在访问量和数据大量交换的服务器中,Oracle占了大臂的江山,在开发中主要用到了数据库的查询语句、数据库的关系、事物等。 3. Servlet和JSP 一个Servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型

6、来访问的应用程序。虽然Servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。Java Servlet技术为这些应用程序定义了一个特定于HTTP的 Servlet类。javax.servlet和javax.servlet.http包为编写Servlet提供了接口和类。所有的Servlet都必须实现Servlet接口,该接口定义了生命周期方法。 JSP是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态技术标准。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标签,就构成了JSP网页Jav

7、a程序片段可以操纵数据库、重新定向网页以及发送E-mail等,实现建立动态网站所 需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,这样大大降低了对客户浏览器的要求,即使客户浏览器端不支持Java, 也可以访问JSP网页 。 Java Servlet是JSP技术的基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。现在许多Web服务器都支持Servlet,即使不直接支持Servlet的Web服务器,也可以通过附件的应用服务器和模块来支持Servlet,这得益于Java的跨平台特性。另外,由于Servlet内部以线程方式提供提供服务,

8、不必对于每个请求都启动一个进程,并且利用多线程机制可以同时为多个请求服务,因此Servlet的效率非常高 。4.三大框架 Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于Web

9、Work,Struts 2的变化很小。 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。 Spring 也表示是一个开源框架,是为了解决企业应用程序开发复杂性由Rod Johnson创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪

10、一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。5.Ext的学习(1)要学习及应用好Ext框架,需要理解Html DOM、Ext Element及Component三者的区别。Ext是基于Web的富客户端框架,其完全是基于标准W3C技术构建的,使用到的都是HTML、CSS、DIV等相关技术。Ext最杰出之处,是开发了一系列非常简单易用的控件及组件,我们只需要使用这些组件就能实现各种丰富

11、多彩的UI的开发。无论组件有多少配置属性、还是事件、方法等等,其最终都会转化为HTML在浏览器上显示出来,而每一个HTML页面都有一个层次分明的DOM树模型,浏览器中的所有内容都有相应的DOM对象,动态改变页面的内容,正是通过使用脚本语言来操作DOM对象实现。仅仅有DOM是不够的,比如要把页面中的某一个节点移到其它位置,要给某一个节点添加阴影效果,要隐藏或显示某一个节点等,我们都需要通过几句 javascript才能完成。因此,Ext在DOM的基础上,创建了Ext Element,可以使用Element来包装任何DOM,Element对象中添加了一系列快捷、简便的实用方法。对于终端用户来说,仅

12、仅有Element是不够的,比如用户要显示一个表格、要显示一棵树、要显示一个弹出窗口等。因此,除了Element以外,Ext 还建立了一系列的客户端界面组件Component,我们在编程时,只要使用这些组件Component即可实现相关数据展示及交互等,而 Component是较高层次的抽象,每一个组件在渲染render的时候,都会依次通过Element、DOM来生成最终的页面效果。在使用Ext开发的应用程序中,组件Component是最高层次的抽象,是直接给用户使用的,Ext Element是Ext的底层API,主要是由Ext或自定义组件调用的,而DOM是W3C标准定义的原始API,Ext的

13、Element通过操作DOM 来实现页面的效果显示。在Ext中,组件渲染以后可以通过访问组件的el属性来得到组件对应的Element,通过访问Element的DOM属性可以得到其下面的DOM对象。另外,我们可以通过Ext类的快捷方法getCmp、get、getDom等方法来得组件Component、Ext元素Element及DOM节点。比如:var view=new Ext.Viewport();/创建了一个组件Componentview.el.setOpacity(.5);/调用Element的setOpacity方法view.el.dom.innerHTML="Hello Ext

14、"/通过Element的dom属性操作DOM对象再看下面的代码:var win=new Ext.Window(id:"win1",title:"我的窗口",width:200,height:200);win.show();var c=Ext.getCmp("win1");/得到组件winvar e=Ext.get("win1");/根据id得到组件win相应的Elementvar dom=Ext.getDom("win1");/得到id为win1的DOM节点(2)熟悉组件体系Ext2.

15、0对整个框架进行了重构,最为杰出的是推出了一个以Component类为基础的组件体系,在Component类基础上,使用面向对象的方法,设计了一系列的组件及控件。因此,要能游刃有余地使用Ext,熟悉Ext组件体系是最基本的。在ExtJS实用开发指南中,有如下面一幅组件图:通过组件结构图我们可以一目了然的看出整个Ext组件继承及组成体系,当使用一个组件时,了解他的继承体系,这样可以便于我们掌握组件的各种特性。(3)掌握核心控件控件其实也是组件,比如用于显示树信息的TreePanel、用于显示表格的GridPanel及EditorGridPanel,还有代表应用程序窗口的Ext.Window等都属

16、于Ext控件。在使用Ext的时候,一定要掌握一些核心控件,特别是处于基类的控件。比如上面提到的几个控件,他们都是继承于面板Panel,所以我们要重点掌握面板这个核心控件的特性。比如面板由以下几个部分组成:一个顶部工具栏(tbar)、一个底部工具栏(bbar)、面板头部(header)、面板尾部(bottom)、面板主区域(body)几个部分组成。面板类中还内置了面板展开、关闭等功能,并提供一系列可重用的工具按钮使得我们可以轻松实现自定义的行为,面板可以放入其它任何容器中,面板本身是一个容器,他里面又可以包含各种其它组件。只要掌握了Panel的应用,那么学习TreePanel、Window等就会

17、变得简单得多。同样的道理,对于Ext的表单字段来说,不管是ComboBox,NumberField、还是DateField,他们其它都是 Ext.form.Field类的子类,在他上面定义了表单字段的各种基本操作及特性。在学习使用表单字段组件时,一定要重点研究Field这个类,掌握他的主要方法、事件等,就能有助于更好的学习使用其它的字段。(4)学习及研究示例由于javascript语言非常灵活,不像静态强类型语言(比如Java)那样有固定的代码设计模式,而往往是不同的人就有不同的编程风格。在实际应用开发中,只有见多识广,才能在自己的在脑中建立一个开发库。学习别人的示例对于我们开发帮助会非常大,

18、示例包括基本组件的应用、综合应用等多个方面。在此,简单推荐几个。Ext官方示例,在ext项目下载包的examples目录中,包括各个控件的基本应用演示,同时还有一些比较复杂的组合示例,有简有繁,非常适合初学者认真研究。Vifir推出的示例,Vifir推出的一些示例主要包括两类,一种是开源的示例应用,另外一种是针对VIP用户的实用示例。开源的示例主要是指 wlr单用户blog系统,这个一个集合了前后台技术的ext综合示例,而针对VIP用户的实用示例则是可以作为开发骨架或扩展组件的示例。其它示例,在ext社区中还有很多比较优秀的ext应用示例,有些只是一个应用演示,虽然没有提供源码下载,但我们可以

19、直接下载引用的js文件来得到这些示例的ext应用代码,同样能取起到非常好的学习效果。(5)多运用Ext看起来是非常简单的东西,稍有点编程知识的人,按照ExtJS实用开发指南中的入门指南,半小时就能学会使用Ext。然而,当准备使用Ext开发一个项目时,却不知道从何处入手,或者是在使用Ext的时候,出了一点小问题自己不知道该如何解决。编程是一门实践性的科学,仅仅靠看书、看别人写的代码是远远不够的,因此,必须多做实践才行,只有通过不断的练习,大量的使用,才能对Ext的组件特性、事件、事件处理机制以及与服务器端交互接口等深入的掌握,只有多做运用,深入了解ext的组件的工作原理及机制,才能编写出高级的E

20、xt的应用。(6)熟读Ext项目的源代码如果要想深入应用Ext,那么阅读Ext项目的源代码这是必不可少的环节,Ext的代码质量非常高,通过阅读他的代码我们可以更加深刻的了解 javascript面向对象编程,Ext代码中包含了很多高级的js技巧以及设计模式。在使用Ext的过程中,我们经常根据项目的需要对Ext组件进行扩展,设计自己的组件或控件,而如何实现一个自定义的Ext组件,我们可以从Ext的各个组件源代码中找到答案。Ext的源代码在Ext项目的source目录。读Ext源码,并不一定非要从某一个地方开始,而组件核心代码Component.js、容器组件代码 Container.js、面板P

21、anel.js等这些是必看的; core目录中的Element.js、Ext.js等也是必看的。当需要从一个控件进行扩展的时候,最好能简单看一看这个控件的源代码。(7)理解,熟悉,掌握JsonExt本身的华丽外表就很吸引眼球了,但这仅仅是其外在的美,还有最核心的内在美,即:Json(JavaScript Object Notation)。Json是一种数据交互格式,一个不能实现数据交互功能的项目是没有任何意义的,大多的Ajax框架的数据交互都基于Json,如:jQuery、ExtJs等。因此理解Json掌握Json并熟练运用是很重要的。以目前主流的开发语言为例,.NET已经把Json封装到类中

22、,无需配置,直接与数据库交互,轻松的封装直接使用;Java就麻烦些,必须去下一个Json包,然后再做一些配置,才可以使用;PHP5.2.0及以后的版本已经封装了Json,支持直接解析。PHP5.2.0以前的版本和Java差不多,也必须下载一个Json插件(和类相似),但是不用配置,直接封装使用。在实际的项目中,各自的取舍配置,都基于项目和需求,并不是每个项目(针对WEB)都一定要用到。但是,如果想在项目中用到此类的Ajax框架,Json的掌握又是必须的。(2) 实习过程独立开发完成文件管理系统,在项目经理的要求下用一个星期完成这个简单的系统开发,在开发前期当然是分析需求,然后搭建框架,再进行编

23、码,最后调试。1. 分析需求文件管理这个系统就是要实现对文件以及文件夹的管理,实现增删改查。其中增分为两个,一个是是创建文件夹,另一个是实现多文件的上传。而删除要求,当对文件夹执行删除时必须确保这个文件夹为空,否则不许删除。改,只是简单改文件或文件夹的名称。查则是对文件或者文件夹名称进行模糊查询。要求:前台必须用Extjs编写,后台用struts2实现,不需要使用数据库。2. 搭建框架因为不需要数据库,所以后台框架的搭建就简单了很多,只需要将struts2配置好久可以了。3. 进行编码编码分为前台页面编码,后台功能编码,而页面编码决定一个项目做出来后与客户交互的页面,客户看上去的感觉和客户使用

24、感受,这点非常重要,因为项目作出来成为产品是给客户使用的,所以客户的满意才是这个项目是否成功的关键。而后台功能编码则是对需求中的要求以代码的形式去实现,要做到简洁,稳定,高效率。4. 最后调试在项目功能和前台大致完成的前提下,对整个项目进行测试,调整。修改因为大意而产生的一些bug,对功能进行测试,看是否达到需求。而界面的调整是非常重要的,因为界面的美观,简洁,易用,会直接影响到客户的使用,所以最后的调试多以前台页面调试为主。我在第一部分,需求分析上就卡住了,因为我做的这个项目是没有需求的,这是项目经理给我练手的一个课题,而且我以前也没有做正在的项目,所以不知道该怎么下手,后来经理找到我,问我

25、进度怎么样了,当他知道我还卡着没动,他拿出纸笔,简单地写出要实现的功能和一些要求,下面就让我围绕着这个要求进行设计和编码实现。虽然之前我学习了struts2框架,可是从没有真正的独自去搭建,所以在框架搭建这一块我又不会了,我查看了许多资料,也看了以前别的程序员搭建一些框架,知道了大概的方向,下面就是开始自己去实践了,首先是把要用的架包都导入myeclipse里面,然后开始配置相关的xml文件,这是一个必须细心对待的事情,因为可能只是一个标点符号错了都会导致整个框架的无法正常运行。第一遍都打好后,发布运行,报错不断,因为刚接触这个框架,对于这些报错完全看不懂,没办法,这个是经验的问题,好在我可以

26、请教别的程序员,在他们的帮助下,我完成了框架的搭建。在写代码的时候,我发现了很多的问题:1. 因为编码的不一样,导致前后台交互的时候出现了很多中文乱码的情况,而以前我都没有遇到过这写问题,我一开始也不知道如何去解决这些问题,我去网上查找了很多的资料,最后找到了解决问题的办法,其实就是加一个语句,把前后台的编码调成一致的。2. 而后,我又因为Extjs的多文件上传卡住了,问了同事,可是因为他们也是接触Extjs不久,他们也没有用过,我只能靠自己了,我在网上查看了许多的资料,发现多文件上传可以通过一个第三方的组件去完成,于是群殴就去下载了这个组件,因为每个人开发的项目不一样,所以这样的组件拿过来是

27、不能直接用的必须把里面的东西改成你自己想要的东西才能为你所用,我用了近一天的时间去看这个js,将里面的传到后台的对象改成我后台接受的名称对象。3. 上个问题就解决了,可是问题又来了,因为上传必须上传到固定的地址去,而在前台给的地址传到后台又一次乱码了,可是这次用以前的方法却解决不了,后来我去问了徐总,他告诉我,因为地址中包含了Extjs不能识别的“”字符,所以必须通过转译,把它不能识别的东西转译成他可以识别的。之后我自己去网上找到了转译的方法,并且解决这个问题。4. 而后就是如何递归地读取文件夹和文件,并且以树的形式显示到前台,在这个问题上面是我卡了最久的,因为里面还有许多的小问题。首先读取文件和文件夹,我在网上找了许多可以读取的例子,不过我知道不是每个例子都可以用的,我必须从其中找到我能用的,并且相对简单一点的,最后因为在实现树时要用到id和pid,所以我找到了符合的方法,可是要怎么样才能把递归读取出来的数据以jsonTree的形式给到前台呢?这个问题困扰了我一天,最后带着疑问,我找到了我的公司知道老师徐总,他告诉我,这个是用封装好的方法的,只需要把递归好的对象去调用这个方法,出来后再将数据转成json格式就可以了。后来我成

温馨提示

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

评论

0/150

提交评论