网站首页 > 实习报告> 文章内容

生产实习报告

※发布时间:2018-2-7 18:49:05   ※发布作者:habao   ※出自何处: 

  目录1. 实习的目的意义 ........................................................ 1 2. 实习单位计算机应用简介 ............................................... 1 2.1 公司教育中心简介.............................................. 1 3. 实习的内容........................................................... 2 3.1 职业素养培训..................................................... 2 3.2 经典 MVC 设计模式................................................. 2 3.3 Struts 框架介绍.................................................. 3 3.4 Hibernate 框架介绍............................................... 5 3.5 Spring 框架 ..................................................... 8 4. 实习感受............................................................ 10I 1. 实习的目的意义生产实习,有别于理论实习,是教育教学体系中的一个不可缺少的重要组成 部分和不可替代的重要环节,是学生将理论知识同生产实践相结合的有效途径, 为我们以后的工作打下一个的基础, 生产实习是学生大学本科教学实践的主 要环节,对学生的实践能力的培养具有十分重要的意义,其目的与意义有以下几 点: (1)将所学的一些专业课知识与生产实习实践相结合,让我们在实践中更 好的消化课堂上所学的知识以及发现自己的不足。 (2)通过生产实习,使我们学习和了解软件工程的思想以及 Java 语言及其 框架等知识,培养我们团队合作与进取,管理,以及还有反思与总结、同理 心与双赢的思想等等 (3)分成小组实习,培养我们的分工合作,团结互助,团队配合以及调查 研究,搜集整理资料,分析问题和解决问题的能力。 (4)通过生产实习,拓宽我们的知识面,增加感性认识,把所学知识条理 化系统化,学到从书本学不到的专业知识,并获得本专业国内、外科技发展现状 的最新信息,激发我们向实践学习和探索的积极性,为今后的学习和将从事的技 术工作打下的基础。2. 实习单位计算机应用简介2.1 公司教育中心简介 公司教育中心,是一家专注于软件开发、研发咨询、人力资源管理、高 端 IT 实训的高新技术企业。公司在电信、金融、电子商务等方面有着丰富的专 业开发、管理和技术经验。全面致力于开展以面向外企、电信、金融等行业为主 的中高级 IT 定制化职业培训及人才外包业务。公司资质为高新技术、企业软件 企业。公司着重解决软件企业用人难的问题,在高校毕业生及企业之间搭建一个 供需桥梁。公司依托拥有丰富开发及培训经验的师资团队,培养企业紧缺的中高 端开发人才,已成功向各大软件企业输送了数千名人才,也确保了软件外包业务 的高效性和扩展性。公司主营业务有: (1)IT 咨询服务:集行业知识、工程实践、一流技术于一身。围绕客户战 略和业务需求,提供业务流程分析与优化咨询、IT 应用战略咨询、信息系统规1 划与设计咨询等服务。 (2)高端 IT 培训,人才培训项目:高级 JAVA 软件开发实训/企业定制化培 训。嵌入式软件开发实训/高级 web 开发实训。 (3)IT 产品增值服务:围绕平台级软件产品、主机系统、网络、存储等信 息系统产品,提供产品咨询、销售、定制开发、系统、性能优化等增值服务。 (4)IT 基础设施服务:支持业务连续性,并大幅度降低运营成本,面向大 型企事业单位以及商务、社区提供基础设施规划设计、建设、运维、项目管理等 服务。3. 实习的内容在 X 公司的生产实习过程中不仅有专业素质的实习培训,而且职业素质方 面也有了很多的了解。 3.1 职业素养培训 (1)职场人的外在修饰 a. personallity(素质) b. Auality of the life(生活质量) c. Living attitude(生活态度) (2)职业礼仪 a. 对待老板:适应不同的领导的风格 b. 面对同事:要经常站在别人的角度上考虑问题 c. 在办公室里:不抱怨 (3)工作态度 a. 责任心 b. 时间观念 c. 团队意识: d. 竞争意识: 3.2 经典 MVC 设计模式 MVC(Model-View-Controller)模式的核心 思想是将程序代码分成相对、而又能协同工作的三个组成部分: 模型(Model) :也称业务逻辑,是真正完成任务的程序代码,比如商品价2 格的计算,学生平均成绩的计算等 视图(View) :实际就是用户的使用界面,用户和系统之间的交互通过视图 完成 控制器(Controller) :控制业务流程,控制着模型和视图之间的交互过程, 实现 View 和 Model 的协同工作 在 SSH 框架中,struts 用来解决 MVC 中显示、请求控制部分,spring 主要 负责访问数据库 DAO 类的事务控制以及它被人称誉的 IOC 思想在业务类中的恰 当运用,hibernate 主要是充当数据访问层组件。由于 spring 对 hibernate 的良好 支持,在 DAO 类主要由 spring 来完成,hibernate 更多关注的应是 O/R 影射文件 上的配置,如级联关系,延迟加载等如何设置才能使效率更高。 3.3 Struts 框架 Web 应用程序开发人员通过 Struts Struts Framework 是一种基于 Java 的技术。 Framework 即可充分利用面向对象设计、代码重用及“编写一次、到处运行”的 优点。Struts 提供了一种创建 Web 应用程序的框架,其中对应用程序的显示、表 示和数据的后端代码进行了抽象。 Struts 采用 JSP 作为 MVC 的视图。每一视图都是采用了定制标签库的 JSP 页面,这些定制标签库则由 Struts Framework 提供。全部表单元素都是用定制标 签编码的,所以这些页面能够很方便地与控制器交互。每一个表单都通过映射 JSP 到 Servlet 的请求这一方式指向控制器的特定入口点。 控制器就是 Java Servlet,由 Struts Framework 提供,负责视图和模型之间的 交互。控制器的每个入口点都由名为 struts-config.xml 的配置文件设置。该文件 把来自视图的请求映射为特定的 Java 类以进行相应的处理,控制器还指定下一 个视图的。 JavaBean 就是模型的代表。对进入控制器的每个入口点来说,Bean 的作用 是存储从视图获取的信息,同时被称为“动作类” ,一种 Java 类则被指定为对表 单输入采取行动。动作类(ActionClass)实现了业务逻辑。 在 Struts2 中一个请求的周期: (1)用户发送请求 : 用户为访问资源向服务器发送请求. (2)FilterDispatcher 决定适当的 action : FilterDispatcher 接受请求然后决定3 调用适当的 action (3)调用 : 配置来应用常用的功能如工作流,验证,文件上传 等,都是自动应用于请求的. (4)action 的执行 : 然后 action 将被执行来调用诸如存储数据、检索数据 之类的数据库相关操作. (5)呈递输出 : 结果呈递到输出 (6) 返回请求 : 请求通过按反的顺序返回,返回的请求可以允许 我们执行一些清理或额外的处理 (7) 向用户展示结果 : 控制权最终回归到输出结果至用户浏览器的 Servlet 容器 Struts2 中请求流程的高度概括如图 3.1 所示。图 3.1 Struts2 中请求流程的高度概括Struts2 结构 : Struts2 框架拥有良好的简洁性与易扩展的前端控制器,基于很多像 Java Filters, Java Beans, ResourceBundles, XML 等标准技术. 对 于 模 型 层 来 说 ,Struts2 可 以 使 用 任 何 数 据 访 问 技 术 , 像 JDBC, EJB, Hibernate 等,对于视图层来说,Struts2 可以与 JSP, JTL, JSF, Jakarta Velocity Engine, Templates, PDF, XSLT 等整合. struts2 结构如图 3.2 所示。4 图 3.2 struts2 结构图过滤器栈包括 : Action ContextCleanUp filter : Action ContextCleanUp filter 是可选的,当与其他的技术如 SiteMash 插件整合 的时候会很有帮助. FilterDispatcher : 接着 FilterDispatcher 被调用,然后依次调用 ActionMapper 来决定是不是要引 用一个 action.如果一个 action 需要被引用, FilterDispatcher 将托付 ActionProxy 来 管理 ActionProxy : Action 代理能从初始化自 struts.xml 的配置文件管理器那得到帮助,接着 ActionProxy 创建一个实现了命令模式的 ActionInvocation,ActionInvocation 在处 理的过程中调用(如果配置了)然后调用 Action ActionInvocation 寻找恰当 的结果,然后结果呈递到 JSP 或者模板上. 之后再按反的顺序执行了一遍,最终响应通过配置在 web.xml 中 的过滤器返回.如果配置了 ActionContextCleanUp filter, FilterDispatcher 不会清理 线 程 局 部 ActionContext. 如 果 ActionContextCleanUp filter 没 有 被 配 置 , FilterDispatcher 会清理所有当前的线 Hibernate 框架5 在进行软件设计时需要考虑的问题。 (1)如果表现层发生变化,是否要修改数据库访问代码。 (2)如果业务逻辑发生变化,是否要修改数据库访问代码。 (3)如果底层数据库发生变化,是否要修改与数据库操作无关的那部分代 码。 持久层设计的主要目标是: (1)数据库的变化不会引起大范围的代码修改; (2) 高层应用程序与数据库的耦合度要降低; 高层应用程序移植性会提高) ( HIbernate 是一个数据持久层框架,是一种实现的对象和关系之间映射(O/R Mapping)的工具, 它对 JDBC 进行了轻量级的对象封装,是程序员可以是用对 象编程思想来操作数据库,它不仅提供了从 java 类 到数据表的映射,也提供了 使用了 Hibernate 数据查询和恢复机制, 相对于使用 JDBC 和 SQL 来操作数据库, 能大大的提高实现效率。 ORM 的思想 面向对象领域关系领域 关系领域 类 对象 属性 表 行 字段瞬时状态:保存在内存的程序数据,程序退出后,数据就消失了,称为瞬时 状态 。 持久状态:保存在磁盘上的程序数据,程序退出后依然存在,称为程序数据 的持久状态 。 持久化:将程序数据在瞬时状态和持久状态之间转换的机制 。 Hibernate 结构图如图 3.3 所示。6 图 3.3Hibernate 结构图HIbernate 框架用配置文件的形式来定义 java 对象和数据库表之间的映射关 系,同时在更深的层面讲数据库表之间的关系解释为对象之间 java 对象之间的 继承以及包含等关系,通过 HQL 语句将复杂的关系算法用对象的方式描述。在 很大程度上简化了对象的数据查询,加快了开发的效率,在 hibernate 中有一个 简单的 API,用于对数据库说表示的对象执行查询,要创建或修改这些对象,只 需在在程序与他们进行交互。然后告诉 hibernate 保存即可。这样,大量封装持 久化操作的业务逻辑也不再需要编写繁琐的 JDBC 语句, 从而使数据持久层得到 极大的简化。 持久层框架带来的好处: 封装了对数据库操作的大部分代码,如数据库连接、事务、SQL 生成等更 加面向对象的设计 O-R Mapping 更好的性能更好的移植性(前提是在数据库中没有使用特有内容, PL/SQL 如 存储过程等)。 Hibernate 的核心接口: Configuration: 代表配置信息。 SessionFactory:创建 Session。 Session:负责保存、删除、更新和查询对象。7 Transaction:管理事务。 Query 和 Critria:执行数据库查询。 Configuration 该类负责管理 Hibernate 配置信息,如: (1)数据库 URL (2)数据库用户名和密码 (3)JDBC 驱动程序类(非 JNDI 方式) (4)数据库方言(dialect)用于对特定的数据库进行支持,如 Hibernate 数 据类型到特定数据库数据类型的映射。 SessionFactory 负责创建 session。 SessionFactory 的创建是通过 Configuration。 完成的一个数据库对应一个 SessionFactory。 如果在 SessionFactory 创建以后改变了 hibernate.cfg.xml 的内容,但是要注 意不会影响到已经创建好的 SessionFactory。 开发步骤: (1)创建 Hibernate 配置文件 (2)创建持久化类 (3)创建对象-关系映射文件 (4)通过 Hibernate API 编写数据库访问代码。 3.5 Spring 框架 Spring 的编程思想: (1)解耦,使代码松散耦合(对象之间的关系) (2)对接口编程,而不是对实现类编程 (3)装配思想 (4)通用功能实现 Spring 的核心概念 与 Spring 框架相关的概念有以下: 轻量级: 轻量级是针对重量级容器(EJB)来说的, Spring 的核心包不到 1M 大8 小,而使用 Spring 的核心包所需的资源也很小,所以可以在小型设备中使用。 非侵入性:所有的框架都是提供大量的功能供用户去使用,从而简化开发时 间和成本,但由于大量的使用了框架的 API,使应用程序和框架发生了大量的依 赖性,无法从框架中出来,更加无法使程序组件在其他程序中使用,这样的 框架叫做入侵式的框架,而 Spring 目标是一个非入侵式的服务框架。 容器: 容器就是一个帮助你把原来自行编写程序去管理对象关系的工作转移 给容器来做。Spring 提供了容器功能,容器可以管理对象的生命周期、对象与对 象之间的关系、你可以通过编写 XML 来设置对象关系和初始值,这样容器在启 动之后,所有的对象都直接可以使用,不用编写任何编码来产生对象。 IoC/DI: Spring 最核心的概念就是 IOC(反转控制),而他的另一个名字就是 DI(依赖 注入)。 IoC (Inversion of Control) 表述含义:依赖关系的转移,实际项目中,完成业务逻辑的一定是多个类, 但是通常情况下,每个对象都要自己负责得到它的合作(依赖)对象,这样的做 法,就提高了对象(代码)之间的耦合度,不便于重用和。使用 IoC,对象 的依赖都是在对象创建的时候由负责协调各个对象的外部实体提供的; 这就是依 赖被注入到对象中。 Dependency Injection 的意义 保留抽象接口,让组建依赖于抽象接口,当组件要与其它实际的对象发生依 赖关系时,通过抽象接口来注入依赖的实际对象 使用 Spring, 你不必在程序中对象的依赖关系, 只要在 xml 中设定即可, Spring 容器会自己根据相关的配置去产生他们之间的关系, 所有的关系都是在容 器运行的时候注入的,而他们本身是没有关系的。打个比方:比如张三和李四, 之前是没有任何关系的两个对象,但当他俩进入班级这个容器中后,班级这个容 器就将他俩赋予了同学的关系。这样的做法就是用容器去赋予对象之间的关系, 而不是对象本身之间来创建关系。这样做的好处显然实现了松偶合。 AOP(Aspect Oriented Programming 面向切面/方面编程):Spring 最被人重视 的另一个方面就是对 AOP 的支持,AOP 是 Spring 支持的一个子容器。在一个服9 务流程中插入与业务逻辑无关的系统服务逻辑(如:Logging 登录、Security 安全 等),而把这些出来设计成一个对象,这样的对象称为 Aspect。打个比方: 做一次环球旅行,在旅行途中要经过若干国家的海关关口办理出入境手续,这样 的一个一个的关口就是整个旅行流程中的一个一个的 Aspect。 依赖注入的方式 (1)Intece Injection (Type 1 IoC) (2)Setter Injection (Type 2 IoC) (3)Constructor Injection (Type 3 IoC) 在用 SSH(Struts+Spring+Hibernate)实现的 MVC 模式中 Spring 是作为连接 Struts 和 Hibernate 的控制层。4. 实习感受一个月的生产实习短暂而有意义。在丰富多彩、趣味横生的生产实习中,我 学到了很多学校里学不到的东西――作为一个职场人的素质和那份固有的自信 与严格要求。 实践中我深刻领会了以下几点精髓: 团队合作与进取:在这为期两个月的生产实习过程中,每个学生都被组合在 一个团队中,众所周知,IT 行业的组织单位就是团队,团队合作在软件开发过 程中极其重要。我们从不会配合,到互相的宽容和团队资源的整合,再到行动一 致并产生了目标的高度统一和神圣的集体荣誉感, 这是一个漫长反复而又挫折冲 突不断地过程,但是这个过程也是不断总结和反思的过程,我们在协作中成长, 我们在成长中成熟。 管理:一个人的成功首先是管理的成功,管理包括时间和目标 的管理、压力和情绪管理、职业生涯的规划、一个人良好习惯的保持以及交 往等诸多方面的体现。通过一些科学的管理的方法和手段,我们可以轻易地 进行科学的管理过程,不断完善自己才能始终保持自己的竞争力。 遵守规则:遵守职场规则,体现在学会尊敬和服从上级;如果你的工作暂时 还不能达到上级的要求,一定要及时和上级进行沟通,要让他知道你的工作进度 以及努力方向;如果对于团队或组织依照一定程序所做出的决定,你要么服从, 如果认为不合理,可以通过合适的途径去反馈,并给上级留出一定时间;对于上10 级安排的临时性工作,一定要及时反馈;成就上级从而成就自己;把事做好的同 时把人做好。除此之外,还有反思与总结、同理心与双赢的思想等等。 我在 公司教育中心实习期间,在学校老师、企业领导的指导和帮助下, 顺利地完成了这个十分有意义的生产实习并且收获非常大。通过本次实习,我学 会了很多实用性非常强的知识:MVC 设计模式, Struts, Spring ,Hibernate 三个目前在软件开发行业主流的框架, 并能将我所掌握的运用到实际开发工作中 去。自己能亲身参与到一个实际软件的开发过程中,体会软件工程的思想,这是 对所学知识的最好的巩固和运用。 通过这次实习,对我所学的 Java 的知识又进一步的巩固并加以应用。在设 计的过程中我遇到了很多问题,每当这种情况发生的时,我会去请教老师或同一 小组内的同学,他们给了我很大的帮助,这也让我感受到团队合作的重要性。总 之,这次生产实习让我受益匪浅,加强了我的动手实践能力,它让我站在全局角 度设计、抽象软件总体结构,也让我在模块的设计上逐步求精,由抽象而具体。 这次生产实习为我今后的工作指明了方向,以后我也会更加严格要求自己, 使自己的专业知识过硬,成为一名出色的软件开发人员。11