公司动态
当前位置:首页 > 公司动态 > 员工风采 > 工作学习心得

          我于2018年5月14日招聘到威海众城科技股份有限公司实习。首先技术主管就某些具体工作进行了简短的介绍,同时对每人的工作项目进行了布置。目前我负责的项目使用的框架是jsf框架,现今项目已经完成。在项目开发过程中,经过技术主管的亲临指导以及同事的热心帮助,促使我对jsf框架有了新的理解和认识。在我不断的学习和实践中,总结了一些jsf框架的使用技巧,增强了实践经验,现将我近期学习工作的心得体会汇报如下。

        一、项目工作心得

        使用jsf框架首先要导入使用的jar包,在/WEB-INF/lib 目录下,总共需要以下的文件:jsf-impl.jar 、jsf-api.jar 、commons-digester.jar 、commoncollections.jarcommons-beanutils.jar 、jstl.jar 、standard.jar 、(primefaces.jar)。

导入jar包后,尤为重要的是在开发过程中使用JavaBean来达到程序逻辑与视图分离的目的,因为它在业务逻辑Bean及UI组件之间搭起桥梁,在Backing Bean中会呼叫业务逻辑Bean处理使用者的请求,或者是将业务处理结果放置其中,等待UI组件取出当中的值并显示结果给使用者。

        使用时需注意:一个Bean最基本要定义Bean的名称(在页面中使用name.bean的属性获取属性值)、类与存活范围!

        1.设定Bean的存活范围,可以设定为request、session 与application等。设定为request时,Bean的存活时间为请求阶段;设定为session则在使用者应用程序交互开始,直到关闭浏览器或显式的结束会话为止;(对于存在session范围的数据可使用:FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("xxx")获取)设定为application的话,则Bean会一直存活,直到应用程序关闭为止;还可以将存活范围设定为none,当设定为none时会在需要的时候生成一个新的Bean,例如在一个method中想要生成一个临时的Bean,就可以将之设定为none。

        2.在jsf页面上要取得Bean的属性,是使用 jsf表示语言 (Expression Language),要注意到的是,jsf表示语言是写成 #{expression},而 jsp表示语言 是写成  ${expression},因为表示层可能是使用JSP,所以必须特别区分,另外要注意的是,jsf的标签上的属性设定时,只接受jsf表示语言。

jsf页面中使用#{bean名字.方法名}调用后台方法得到数据并返回字符串跳转页面(此时返回字符串应与页面名称对应)。默认返回的字符串是用来进行forward的命令的,但是可以使用return “xxx.xhtml?faces-redirect=true”来将视图的请求由forward变成redirect命令。当然返回的字符串也可以是预先定义好的导航标准。

        在jsf中进行导航的标准是在faces-config.xml中进行配置,也可以直接使用action=“xxx"来进行导航。

        当jsf页面需传参数到后台bean时,方式可以为以下几种:

        1.通过方法表达式(Method expression)的方式来传参数,像这样#{bean.method(param)}。

        2.用f:param标签传参数,backing bean通过request parameter获取传过来的参数。

        3.用f:attribute标签,后台通过actionListener获取。

        注:actionListener与action的区别:

        <1>action 通常是将所在的form表单进行了提交,而并不是将所有的关于后台的数据都进行提交;actionListener 一般自动将表单的值进行提交。

        <2>actionListener 用来处理当前页面的变化,一般不会用于对页面跳转的控制,既然是listener就必须会监听什么东西,那么监听的就是一个事件ActionEvent,是一个单一的组件;action用来处理函数之后对页面进行控制比如说forward或者是redirect

        <3>actionListener会有一个ActionEvent参数,这个对象它绑定了UIComponenet在后台可以直接访问这个UIComponenet的attr的当前的属性。

        4.通过f:setPropertyActionListener标签传参数,它会直接把参数值设置到backing bean对应的属性。

在jsf中,table的功能被封装了起来,并且功能得到了增强,也就是dataTable。当要显示的数据为list时可使用dataTable。dataTable作为功能的一种演示,已经足够。但是运用到实际中各种的需求,dataTable还是有很多的不足。如:表格的翻页功能。如果这个表格的数据很长的话,使用翻页是合理的。但是dataTable的封装使得要实现翻页变得很困难。这次项目中深得体会,后台代码有好多不懂得地方......个人认为如果与hibernate框架集成会方便的多。它提供setFirstResult(),setMaxResults()方法可以很方便的解决分页问题!

        另外在前台使用js进行表单验证时需注意:

        jsf 运用js 获取某表单中的元件,因为在form表单中的元件的Id 会解析为formId:元件Id 如 : <h:form id="form1">

        <h:inputText id="id1" value="xxx"/>

        <h:outputText id="id2" value="xxx"/>

        </h:form >

         那么 js要获到 id1的值就得 用 document.getElementById("form1:id1").value;或document.form1["form1:id1"].value;

         使用之初,我是与struts2类比学习的还算比较轻松。struts2是一个基于mvc的框架,jsf则是一种基于事件驱动的框架。jsf与struts2都有很多标签,可以表示HTML组件、可以表示逻辑、都可以使用标准的jstl标签、el表达式,当然两者都可以使用自定义的扩展标签完成比较复杂的组件控件。两者都是基于Request-Response的Http原理,将Web流程化了:请求入口>逻辑控制层>响应视图。两个框架都实现了将表单、请求url参数、ajax请求参数通过各自的机制注入到了自己的控制层(struts2是Action、jsf是托管Bean)。这样省去了很多从内置request对象传递过来、转换的中间过程。无论是jsf还是struts2都可以和spring进行集成,使用spring注入的各种Bean,为Web控制层服务。这两个框架都是用一个类当做web流程控制器。一般是接收视图层的参数后调用业务层的服务,根据业务层的服务结果返回不同的视图。struts2的类只需要继承一个特殊的类ActionSupport,而jsf的控制器就是一个任意POJO的类(jsf叫做托管Bean)。与struts2相比, jsf是sun的JavaEE标准,它既是 Java Web 应用程序的用户界面标准又是严格遵循模型-视图-控制器 (MVC) 设计模式的框架。用户界面代码(视图)与应用程序数据和逻辑(模型)的清晰分离使jsf应用程序更易于管理。为了准备提供页面对应用程序数据访问的 jsf 上下文和防止对页面未授权或不正确的访问,所有与应用程序的用户交互均由一个前端FacesServlet(控制器)来处理。重要的是它最大的优势就是可以在托管Bean中可以为其注入EJB组件!

         总之:经过这次项目的锻炼以及技术主管的指导,我不仅学会了使用jsf框架而且对之前使用的框架有了更深层次的理解。各个框架都有自己的优势及缺点要灵活运用才可以提高自己的技术水平。最后谈一下我对jsf框架的理解:JavaServer Faces(jsf)是一种用于构建Java Web 应用程序的标准框架。它完成了用户界面到业务逻辑的直接映射,另外它的请求处理生命周期是多阶段划分的(6个)。它引入的基于组件和事件驱动的开发模式,使得开发者可以自定义组件,方便了程序员进行web应用程序的开发。

 

  • 培训心得

      通过技术主管的培训指导,我学习了很多关于飞机方面的专业信息,例如:ESN、AD、SB、EO、EGT、APU等等专业名词。虽然之前对飞机的相关知识了解较少,但是听了技术主管的讲解之后渐渐对它充满浓厚的兴趣。另外,技术主管着重对我公司的业务领域进行了系统的介绍。例如:飞机基础数据的管理、飞机发动机配件管理、监控飞机发动机的健康状况、给客户制定最优的维修计划等。着重讲解的是监控飞机发动机以及维修计划的制定的相关业务。经过学习,我了解了它们都是通过一个重要因素——发动机的工作参数,来判断是否预警以及该怎样制定维修计划更加合理。在技术主管讲解的过程我发现我有很多的公司业务要加强学习,补充短板,我相信经过我的不断学习和实践定能完成相关的工作!

        由于我到公司的时间较短,对项目的相关业务还处于了解和学习阶段,对项目的开发工作研究的不够透彻,需要更多的补充完善。在今后的工作之中我会更加努力学习专业知识,尊重领导,团结同事,促使自己更快成长。我相信在各位领导的支持和悉心指导及同事的热心帮助下,我会充分发挥自己的业务技能,在各项工作中锤炼自己,为公司的发展做出更大的贡献!

版权归威海众成信息科技股份公司所有,转载请注明出处

 

点击下载