版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java基础知识之JavaWeb开发基础培训一、Web开发技术二、JSF框架三、SEAM框架四、EpointJWeb框架一、Web开发技术Web架构用超文本技术(HTML)实现信息与信息的连接;用统一资源定位技术(URI)实现全球信息的精确定位;用新的应用层协议(HTTP)实现分布式的信息共享。静态动态客户端技术HTML、JavaApplets、JavaScript、ActiveX、CSS、DHTML、XHTML服务端技术CGI(CommonGatewayInterface)C、C++、PascalPerl、PythonPHP、ASP、Servlet(JSP)+JavaBean二、JSF框架JSF简介JSF入门JSF标签JSF开发环境JSF简介什么是JSFJSF的特性JSF与其它框架的比较JSF实现JSF示例什么是JSFJavaServerFaces(JSF):符合JavaEE5标准的JavaWeb应用框架。目标:简化开发。JSF提供:标准的编程接口丰富可扩展的组件库一个核心的JSP标记库用来处理事件、执行验证以及其他非UI相关的操作(core)一个标准的HTML标记库来表示UI组件(html)事件驱动模型JSF通过IDE工具支持拖放式开发。JSF的由来和目标由来EJB2的失败非官方Web框架的兴起目标简化开发超越现有Web框架试图在不同的角度上提供网页设计人员、应用程序设计人员、组件开发人员解决方案,让不同技术的人员可以彼此合作又不互相干扰JSF体系结构JSF的主要优势之一就是它既是JavaWeb用户界面标准又是严格遵循模型-视图-控制器(MVC)设计模式的框架。用户界面代码(视图)与应用程序数据和逻辑(模型)的清晰分离使JSF应用程序更易于管理。为了准备提供页面对应用程序数据访问的JSF上下文和防止对页面未授权或不正确的访问,所有与应用程序的用户交互均由一个前端“Faces”servlet(控制器)来处理。JSF的特性技术特性一流的UI组件和事件模型POJO依赖注入(又称控制反转)客户端独立性
使用或者不使用工具可扩展的导航(类似于Struts导航,注:Page导航)强大的扩展能力(如Shale)
完全的集成(如集成Spring、JPA)本地化和易理解性JSF的特性市场和商业特性广泛的采用,包括SUN,Oracle,IBM,BEA,Apache,EDS作为JavaEE5.0的组成部分大型第三方组件市场(iLog,BusinessObjects,Oracle,Sun,IBM)业内领先的工具支持(SunJavaStudioCreator,NetBeans,OracleJDeveloper,IBMWSAD,BEAWorkshop,ExadelStudio)与其它框架的比较(来自TSS)技术特性商业使用JSF4.83.9WebWork4.23.1Shale4.951.3Tapestry4.752.8Wicket--0.7Struts4.24.6JSF的优势UI组件(UI-component)事件驱动模式用户界面到业务逻辑的直接映射程序员和网页设计人员的分工请求处理生命周期的多阶段划分全面的用户自定义支持Web开发的官方标准之一大量的IDE工具支持
JSF实现JSF是标准实现SunJSFRIApacheMyFaces组件库TomahawkADFFaces(fromOracle)TobagoJSF示例<%@tagliburi="/jsf/core"prefix="f"%><%@tagliburi="/jsf/html"prefix="h"%><%@pagecontentType="text/html;charset=GB2312"%><html><head> <title>第一个JSF程序</title></head><body><f:view><h:form><h3>请输入您的名称</h3>
名称:<h:inputTextvalue="#{}"/><p> <h:commandButtonvalue=“提交"action="login"/> </h:form></f:view></body></html>JSF入门第一个JSF程序JSFExpressionLanguage国际化(I18N)ManagedBeans数据转换与验证事件处理第一个JSF程序JSF开发环境EclipseWTPJSF插件JSF实现(MyFaces)TomcatManaged-BeanJSP页面PagesNavigationJSFExpressionLanguage搭配JSF标签来使用,是用来存取数据对象的一个简易语言。以#开始,将变量或运算式放置在{与}之间。#{userB}EL的变量名也可以程序执行过程中所声明的名称,或是JSFEL预定义的隐含对象。#{}对于Map类型对象,可以使用‘.’
运算符指定key值来取出对应的value,也可以使用[与]来指定。#{param['name']}#{someBean.someMap[]}如果变量是List类型或阵列的话,则可以在[]中指定索引。#{someBean.someList[0]}JSFExpressionLanguage也可以指定字面常数,对于true、false、字符串、数字,JSFEL会尝试进行转换。<h:outputTextvalue="#{true}"/><h:outputTextvalue=“#{‘Thisisatest’}”/>在声明变量名称时,要留意不可与JSF的保留字或关键字同名。truefalsenulldivmodandornoteqneltgtlegeinstanceofempty在EL中可以直接进行一些算术运算、逻辑运算与关系运算。算术运算符:加法(+),减法(-),乘法(*),除法(/ordiv)与余除(%ormod)三元运算:(expression?result1:result2)逻辑运算:and(或&&)、or(或!!)、not(或!)关系运算:小于Less-than(<orlt)、大于Greater-than(>orgt)、小于或等于Less-than-or-equal(<=orle)、大于或等于Greater-than-or-equal(>=orge)、等于Equal(==oreq)、不等于NotEqual(!=orne)EL运算符的执行优先顺序与Java运算符对应国际化信息JSF的国际化(Internationalization,简写I18N)信息处理是基于Java对国际化的支持,可以在一个信息资源文件中统一管理信息资源,资源文件的名称是.properties,而内容是名称与值的配对。资源文件名称由basename加上语言与地区来组成:
perties basename_perties basename_zh_CN.properties信息资源文件必须是ISO-8859-1编码,所以对于非西方语系的处理,必须先将之转换为JavaUnicodeEscape格式:
nameText=名称nameText=\u540d\u79f0
使用<f:loadBundle>标签来指定载入信息资源:
<f:loadBundlebasename="messages"var="msgs"/> <h:outputTextvalue="#{Text}"/>国际化信息<f:view>可以设定locale属性,直接指定所要使用的语系:
<f:viewlocale="zh_CN"> <f:loadBundlebasename="messages"var="msgs"/>也可以在faces-config.xml中设定语系:
<faces-config> <application> <local-config> <default-locale>zh_CN</default-locale> <supported-locale>en</supported-locale> </local-config></application></faces-config>
甚至可以让使用者选择自己的语系:
<f:viewlocale="#{user.locale}"> <f:loadBundlebasename="messages"var="msgs"/>
<h:selectOneRadiovalue="#{user.locale}"> <f:selectItemitemValue="zh_CN"itemLabel="#{msgs.zh_CNText}"/><f:selectItemitemValue="en"itemLabel="#{msgs.enText}"/></h:selectOneRadio>
ManagedBeansJSF使用Bean来达到逻辑层与表现层分离的目的,Bean的管理集中在配置文件中,只要修改配置文件,就可以修改Bean之间的相依关系。BackingBean,GlueBean:在真正的业务逻辑Bean及UI组件之间搭起桥梁,在BackingBean中会呼叫业务逻辑Bean处理使用者的请求,或者是将业务处理结果放置其中,等待UI组件取出当中的值并显示结果给使用者。ManagedBeans在faces-config.xml中集中管理作用域:application:一直存活session:会话过程request:请求阶段none:需要时,临时Beans的配置与设定JSF预定义会读取faces-config.xml中关于Bean的定义可在web.xml中利用javax.faces.CONFIG_FILES参数指定自定义文件:
<web-app> <context-param><param-name>javax.faces.CONFIG_FILES</param-name> <param-value>/WEB-INF/beans.xml</param-value> </context-param>... </web-app>
定义文件可以有多个,中间以“,”
区隔:
/WEB-INF/navigation.xml,/WEB-INF/beans.xml
Beans的配置与设定Bean的基本定义:名称 <managed-bean-name>类 <managed-bean-class> 存活范围 <managed-bean-scope>可选设置属性的初始值 <managed-property><managed-property> <property-name>user</property-name> <value>#{user}</value></managed-property>Beans上的List
<managed-property><property-name>someProperty</property-name><list-entries><value-class>java.lang.Integer</value-class><value>1</value><value>2</value><value>3</value></list-entries></managed-property>
Beans上的Map<managed-property><property-name>someProperty</property-name><map-entries><value-class>java.lang.Integer</value-class><map-entry><key>someKey1</key><value>100</value></map-entry><map-entry><key>someKey2</key><value>200</value></map-entry></map-entries></managed-property>访问ManagedBeans如果要在其它类中取得Bean对象,则可以先取得javax.faces.context.FacesContext,它代表了JSF目前的执行环境对象,接着尝试取得javax.faces.el.ValueBinding对象,从中取得指定的Bean对象:
FacesContextcontext=FacesContext.getCurrentInstance(); ValueBindingbinding=context.getApplication(). createValueBinding("#{user}"); UserBeanuser=(UserBean)binding.getValue(context);取得Bean的某个属性:
FacesContextcontext=FacesContext.getCurrentInstance(); ValueBindingbinding=context.getApplication(). createValueBinding("#{}"); Stringname=(String)binding.getValue(context);
Jsf的页面跳转简单跳转跳转的配置:<navigation-rule> <!–
发出跳转请求的页面--> <from-view-id>/test_inter.jsp</from-view-id> <navigation-case> <from-outcome>out</from-outcome><!–
跳转成功的页面--> <to-view-id>/test_out.jsp</to-view-id> </navigation-case></navigation-rule>Jsf页面的实现:<h:commandButtonid=“sumbit“action=“out”value=”跳转"/>
Jsf的页面跳转复杂跳转,通过方法实现跳转的配置:<navigation-rule> <from-view-id>/test_inter.jsp</from-view-id> <navigation-case> <from-outcome>sucess</from-outcome> <to-view-id>/success.jsp</to-view-id> </navigation-case> <navigation-case> <from-outcome>error</from-outcome> <to-view-id>/error.jsp</to-view-id> </navigation-case></navigation-rule>Jsf的页面跳转复杂跳转,通过方法实现Jsf页面的实现:<h:commandButtonid=“sumbit“
actionListener="#{bean.action“value=”跳转"/>方法实现:publicStringaction(){//复杂逻辑Stringresult=“error”; try{ result=“success”; }catch(Exceptionex){ result=“error”; } returnresult;}数据转换与验证转换器(Converter)协助模型与视图之间的数据转换验证器(Validator)协助进行语意检验(SemanticValidation)标准转换器HTTP字符串Java对象对于基本数据类型(primitivetype)或是其Wrapper类,JSF会使用javax.faces.Boolean、javax.faces.Byte……等自动进行转换对于BigDecimal、BigInteger,则会使用javax.faces.BigDecimal、javax.faces.BigInteger自动进行转换对于DateTime、Number,可以使用<f:convertDateTime>、<f:convertNumber>标签进行转换,它们各自提供有一些简单的属性,可以让我们在转换时指定一些转换的格式细节:
<h:outputTextvalue="#{user.date}"><f:convertDateTimepattern="yyyy/MM/dd"/></h:outputText>
自定义转换器实现javax.faces.convert.Converter接口,这个接口有两个要实现的方法:publicObjectgetAsObject(FacesContextcontext,UIComponentcomponent,Stringstr);publicStringgetAsString(FacesContextcontext,UIComponentcomponent,Objectobj);在faces-config.xml中注册:<converter> <converter-id>cn.wiztek.converter.User</converter-id> <converter-class>cn.wiztek.converter.UserConverter </converter-class></converter>在JSF页面中通过converter-id使用转换器:
<h:outputTextvalue="#{guest.user}"converter="cn.wiztek.converter.User"/>标准验证器语法检验(SynaticValidation)检查使用者输入的数据是否合乎我们所要求的格式,最基本的就是检查使用者是否填入了栏目值,或是栏目值的长度、大小值等等是否符合要求。三种标准验证器:<f:validateDoubleRange><f:validateLongRange><f:validateLength>
自定义验证器实现javax.faces.validator.Validator接口中的validate()方法,如果验证错误,则丢出一个ValidatorException,它接受一个FacesMessage对象,这个对象接受三个参数,分别表示信息的严重程度(INFO、WARN、ERROR、FATAL)、信息概述与详细信息内容,这些信息将可以使用<h:messages>或<h:message>标签显示在页面上。在faces-config.xml中注册验证器的标识(ValidaterID)。通过<f:validator>标签并设定validatorId属性来使用自定义验证器。自定义验证器配置文件加上验证器:<validator><validator-id>com.jinyang.validator.password</validator-id><validator-class>com.jinyang.validator.PasswordValidator</validator-class></validator>
Jsf页面使用验证器<h:inputSecretid=“password”value=""required="true"><f:validatorvalidatorId="com.jinyang.validator.password"/></h:inputSecret><h:messagefor=“password”></h:message>自定义验证器验证器代码:packagecom.jinyang.validator;importjavax.faces.application.FacesMessage;importponent.UIComponent;importjavax.faces.context.FacesContext;importjavax.faces.validator.Validator;importjavax.faces.validator.ValidatorException;public
classPasswordValidatorimplementsValidator{public
voidvalidate(FacesContextcontext,UIComponentcomponent,Objectobj)throwsValidatorException{//obj=验证器组件关联的jsf输入组件的值Stringpassword=(String)obj;if(password.length()<6){FacesMessagemessage=newFacesMessage(FacesMessage.SEVERITY_ERROR,"字符长度小于6","字符长度不得小于6");throw
newValidatorException(message);}if(!password.matches(".+[0-9]+")){FacesMessagemessage=newFacesMessage(FacesMessage.SEVERITY_ERROR,"密码必须包括字符与数字","密码必须是字符加数字所组成");throw
newValidatorException(message);}}}错误信息处理预定义的错误信息可以使用<h:messages>或<h:message>标签显示出来通过提供一个信息资源文件可以修改预定义的错误信息MyFaces提供了支持中文的错误信息文件Messages_zh_CN.properties也可以在程序中使用FacesMessage来提供信息自定义转换/验证标签使用<f:attribute>标签来设定属性:<f:attributename="pattern"value=".+[0-9]+"/>
在自定义验证器中用下面语句获取属性:Stringpattern=(String)component.getAttributes().get("pattern");也可以开发自己的一组验证标签,并提供相关属性设定:<co:passwordValidatorpattern=".+[0-9]+"/>
事件处理动作事件(ActionEvent)即时事件(ImmediateEvent)值变事件(ValueChangeEvent)阶段事件(PhaseEvent)动作事件(ActionEvent)通过action属性绑定一个事件方法:<h:commandButtonvalue="提交"action="#{user.verify}"/>
通过actionListener属性绑定一个事件方法,action绑定返回结果的方法:<h:commandButtonvalue="提交"actionListener="#{user.verify}"action="#{user.outcome}"/>用<f:actionListener>标签向组件注册事件监听器(实现javax.faces.event.ActionListener接口),action绑定返回结果的方法:<h:commandButtonvalue="提交"action="#{user.outcome}"><f:actionListenertype="onlyfun.caterpillar.LogHandler"/><f:actionListenertype="onlyfun.caterpillar.VerifyHandler"/></h:commandButton>
即时事件(ImmediateEvent)
即时事件是指JSF视图组件在取得请求中该取得的值之后,即立即处理指定的事件,而不再进行后续的转换器处理、验证器处理、更新模型值等流程。
<h:commandButtonvalue="#{msgs.Text}" immediate="true" actionListener="#{user.changeLocale}"/>
值变事件(ValueChangeEvent)使用者改变了JSF输入组件的值后提交表单,就会发生值变事件,丢出一个javax.faces.event.ValueChangeEvent对象直接设定JSF输入组件的valueChangeListener属性:
<h:selectOneMenuvalue="#{user.locale}" onchange="this.form.submit();" valueChangeListener="#{user.changeLocale}"> <f:selectItemitemValue="zh_CN"itemLabel="Chinese"/> <f:selectItemitemValue="en"itemLabel="English"/></h:selectOneMenu>
实现javax.faces.event.ValueChangeListener接口,并定义其processValueChange()方法;然后在JSF页面上使用<f:valueChangeListener>标签,并设定其type属性:
<h:selectOneMenuvalue="#{user.locale}" onchange="this.form.submit();"> <f:valueChangeListenettype=“cn.wiztek.SomeListener"/><f:selectItemitemValue="zh_CN"itemLabel="Chinese"/><f:selectItemitemValue="en"itemLabel="English"/></h:selectOneMenu>阶段事件(PhaseEvent)重建视图(RestoreView) 依客户端传来的session数据或服务器端上的session数据,重建JSF视图组件。套用请求值(ApplyRequestValues)
JSF视图组件各自获得请求中的属于自己的值,包括旧的值与新的值。执行验证(ProcessValidations) 转换为对象并进行验证。更新模型值(UpdateModelValues) 更新Bean或相关的模型值。唤起应用程序(InvokeApplication) 执行应用程序相关逻辑。绘制响应页面(RenderResponse) 对先前的请求处理完之后,产生页面以反应客户端执行结果。阶段事件(PhaseEvent)在每个阶段的前后会引发javax.faces.event.PhaseEvent实现javax.faces.event.PhaseListener,并向javax.faces.lifecycle.Lifecycle登记这个Listener,便可捕获事件getPhaseId()、beforePhase()与afterPhase()PhaseId:PhaseId.RESTORE_VIEWPhaseId.APPLY_REQUEST_VALUESPhaseId.PROCESS_VALIDATIONSPhaseId.UPDATE_MODEL_VALUESPhaseId.INVOKE_APPLICATIONPhaseId.RENDER_RESPONSEPhaseId.ANY_PHASEJSF标签标准标签输出类标签输入类标签命令类标签选择类标签其他标签表格处理JSF标准标签输出(Outputs)其名称以output作为开头,作用为输出指定的信息或绑定值。输入(Inputs)其名称以input作为开头,其作用为提供使用者输入框。命令(Commands)其名称以command作为开头,其作用为提供命令或链接按钮。选择(Selections)其名称以select作为开头,其作用为提供使用者选项的选取。其它包括了form、message、messages、graphicImage等等未分类的标签。标准HTML标签的属性属性名称适用说明id所有组件可指定id名称,以让其它标签或组件参考binding所有组件绑定至UIComponentrendered所有组件是否显示组件styleClass所有组件设定Cascadingstylesheet(CSS)value输入、输出、命令组件设定值或绑定至指定的值valueChangeListener输入组件设定值变事件处理者converter输入、输出组件设定转换器validator输入组件设定验证器required输入组件是否验证必填输入框immediate输入、命令组件是否为即时事件输出类标签outputLabel产生<label>HTML标签,使用for属性指定组件的clientID,例如:
<h:inputTextid="user"value="#{}"/> <h:outputLabelfor="user"value="#{}"/>outputLink产生<a>HTML标签,搭配<f:param>可帮链结加上参数,所有的参数都会变成name=value的类型附加在链接后,value所指定的内容也可以是JSFEL绑定。例如:
<h:outputLinkvalue=“../index.jsp”> <h:outputTextvalue=“LinktoIndex”/> <f:paramname=“name”value=“MyName”/> </h:outputLink>
outputFormat
产生指定的文字信息,可以搭配<f:param>来设定信息的参数以格式化文字信息,例如:
<h:outputFormatvalue="{0},Yournameis{1}."> <f:paramvalue="Hello"/> <f:paramvalue="Guest"/> </h:outputFormat>outputText简单的显示指定的值或绑定的信息,例如:
<h:outputTextvalue="#{}"/>
输入类标签inputText显示单行输入框,即输出<input>HTML标签,其type属性设定为text,例如:
<h:inputTextvalue="#{}"/>
inputTextarea
显示多行输入文字区域,即输出<textarea>HTML标签,例如:
<h:inputTextareavalue="#{mand}"/>
inputSecret显示密码输入框,即输出<input>HTML标签,其type属性设定为password,例如:
<h:inputSecretvalue="#{user.password}"/>
inputHidden隐藏输入框,即输出<input>HTML标签,其type属性设定为hidden,隐藏输入框的值用于保留一些信息于客户端,以在下一次发送表单时一并提交,例如:
<h:inputHiddenvalue="#{user.hiddenInfo}"/>命令类标签commandButton
显示一个命令按钮,即输出<input>HTML标签,其type属性可以设定为button、submit或reset,预设是submit,按下按钮会触发javax.faces.event.ActionEvent,例如:
<h:commandButtonvalue="提交“
action="#{user.verify}"/>commandLink
产生超链接,会输出<a>HTML标签,而href属性会有‘#’,而onclick属性会含有一段JavaScript程序,这个JavaScript的目的是按下链接后自动提交表单,具体来说其作用就像按钮,但外观却是超链接,例如:
<h:commandLinkvalue="#{mandText}" action="#{user.verify}"/>
选择类标签选取框<h:selectBooleanCheckbox>单选单选按钮<h:selectOneRadio>单选列表<h:selectOneListbox>单选菜单<h:selectOneMenu>复选复选框<h:selectManyCheckbox>复选列表<h:selectManyListbox>复选菜单<h:selectManyMenu>选择类标签的选项<f:selectItem>itemLabelitemValue或者value绑定一个传回javax.faces.model.SelectItem的方法<f:selectItems>value绑定至一个提供传回SelectItem的列表(数组)的方法
SelectItem:value,labelvalue绑定至一个提供传回Map对象的方法
Map:label,value其他标签<h:messages>或<h:message><h:graphicImage>图片<h:panelGrid>排版本体间只能包括JSF组件,如果想要放入非JSF组件,例如简单的样版(template)文字,则要使用<f:verbatim>包括住。<h:panelGroup>包装组件表格处理<h:dataTable>配合<h:column>实现以表格的方式显示数据<f:facet>header与footer分别表示表头和表尾使用DataModel处理复杂的数据Jsf上下文对象获取Request变量获取:如何取得名称为“data“的传入参数值Mapparams=FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
Stringdata=(String)params.get("data");Jsf上下文对象获取session变量获取:如何取得名称为“UserInfo“的对象值UserInfoUser=(UserInfo)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(“UserInfo”);
System.out.println(User.UID);
System.out.println(User.UPwd);
Primefaces简介JavaServerFaces+AJAX=PrimefacesRichJSFComponentsprimefaces控件JSF控件的执行过程三、Seam(JSF与JPA的桥梁)Seam简介上下文组件模型对象关系映射远程访问对象注解EL表达式JBoss-tools自动生成项目骨架JBossSeam是一个JavaEE5框架。Seam通过把JSF与EJB3.0组件合并在一起,从而为开发基于Web的企业应用程序提供一个最新的模式。Seam可以让你把EJB组件直接绑定到JSF页面。Seam能够统一和集成现有的开源技术集成如Facelets、Hibernate、jBPM、Drools、Groovy、JavaPortlets、BPM、AJAX、iText和Lucene。
Seam简介上下文组件模型
Seam中的两个核心概念是context(上下文)思想和component(组件)思想。组件是具有状态的对象,通常是EJB,也可以是POJO对象,组件的实例会和上下文绑定,在此上下文中具有一个名字。上下文组件模型@Entity@Name("user")@Scope(SESSION)@Table(name="Customer")public
classUserimplementsSerializable{…}@Stateful@Scope(EVENT)@Name("changePassword")@Restrict("#{identity.loggedIn}")public
classChangePasswordActionimplementsChangePassword{@In@Out
privateUseruser;…}The“User”entitybeanisinthe“Session”scope.WheneveramethodontheChangePasswordbeaniscalled,the“User”objectfromthesessionscopewillbeinjectedpriortothecall.Aftereverymethodcall,anychangestotheUserobjectare“out-jected”backtotheSession.Note:becausenamesmatch,nomappingisnecessary.对象关系映射Java持久化架构HibernateJPASeam管理的事务
Seam为事务的开始,提交,回滚,同步提供了一个事务管理抽象Seam管理的持久化上下文在Seam管理的持久化上下文中使用JPA使用Seam管理的Hibernate会话Seam注解一用于定义组件的注解
@Name("componentName")为一个类定义一个Seam组件
@Scope(ScopeType.CONVERSATION)定义默认的组件上下文
@BypassInterceptors
取消在特定组件或者一个组件方法上的所有拦截器。
@Synchronized(timeout=1000)如果组件被多个客户端并发访问,Seam应该串行化请
求。如果一个请求在给定时间段内没有得到组件的锁,
将抛出一个例外。
@AutoCreate
声明组件将被自动建立,即使客户端不定义create=true用于双向注入的注解
@In(value=“contextVariableName”)在每次组件调用开始时,从上下文变量注入此组件属性
@Out(value="contextVariableName")在调用结束后注射出Seam组件属性到上下文变量关于组件生命周期方法的注解
@Create当组件实例被Seam初始化时,该方法应被调用Seam注解二用于在J2EE环境中使用SeamJavaBean组件的注解@Transactional方法调用应该发生在一个事务中,如果当调用方法时没有事务存在,一个事务将特地为该方法启动用于SeamRemoting的注解@WebRemote(exclude="path.to.exclude")明被注解的方法可以被客户端JavaScript脚本调用。用于Seam拦截器(interceptor)的注解@Interceptor(stateless=true)指定这个拦截器是无状态的,Seam可以优化复制用于异步(asynchronicity)的注解@AsynchronouspublicTimerscheduleAlerts(Alertalert,@ExpirationDatedate,@IntervalDurationlonginterval){...}用于JSF的注解@Converter允许一个Seam组件作为JSF转换器(JSFconverter)。@Validator允许一个Seam组件作为JSF验证器(JSFValidator)。用于和Servlet容器集成的注解Filter(around={"seamComponent","otherSeamComponent"})使一个用@Filter注解的Seam组件(它实现了javax.servlet.Filter接口)作为一个Servlet过滤器(Filter)使用。它将会被Seam的主Filter执行EL表达式一 JSF的表达式语言(EL)的形式跟jSP的表达式语言的形式类似:#{...}。EL的主要用途是使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 精准医疗中心人员聘用合同模板
- 婚纱摄影店电梯销售合同
- 冷藏租赁协议:化妆品冷藏专用
- 商业步行街摊位租赁协议
- 低碳环保项目施工合同
- 财务渠道拓展财务总监招聘协议
- 博物馆工程商品混凝土施工合同
- 玩具企业会计聘用合同
- 地下通道脚手架施工协议范本
- 服装出口业务员招聘合同模板
- 收购公司法律尽职调查合同(2篇)
- 绿色财政政策
- 第六单元多边形的面积 (单元测试)-2024-2025学年五年级上册数学人教版
- 《内外科疾病康复学》课程教学大纲
- 公路养护培训知识
- 国家安全教育高教-第六章坚持以经济安全为基础
- 锂电储能产品设计及案例详解-笔记
- 广东开放大学2024年秋《国家安全概论(S)(本专)》形成性考核作业参考答案
- 期末模拟考试卷01-2024-2025学年上学期高二思想政治课《哲学与人生》原题卷+答案卷
- 小儿静脉留置针操作与护理
- 期末试卷(试题)-2024-2025学年三年级上册数学苏教版
评论
0/150
提交评论