Struts2的基本用法.ppt

上传人:牧羊曲112 文档编号:6521442 上传时间:2023-11-08 格式:PPT 页数:91 大小:1.11MB
返回 下载 相关 举报
Struts2的基本用法.ppt_第1页
第1页 / 共91页
Struts2的基本用法.ppt_第2页
第2页 / 共91页
Struts2的基本用法.ppt_第3页
第3页 / 共91页
Struts2的基本用法.ppt_第4页
第4页 / 共91页
Struts2的基本用法.ppt_第5页
第5页 / 共91页
点击查看更多>>
资源描述

《Struts2的基本用法.ppt》由会员分享,可在线阅读,更多相关《Struts2的基本用法.ppt(91页珍藏版)》请在三一办公上搜索。

1、第4讲 Struts2的基本用法-2,掌握Struts2的配置文件掌握Struts2中Action的配置及使用会使用Struts2的国际化掌握Struts2的标签库,课程目标,目 录,1 Struts2的常规配置2 实现Action接口3 配置Action4 配置处理结果5 配置Struts2的异常处理6 Convention插件与“约定”支持7 使用Struts2的国际化8 使用Struts2的标签库9 本讲小结,3,Struts2的常量配置,使用struts.properties文件来管理常量该文件包含了系列的key-value对注意struts.properties文件的路径通常放在we

2、b应用的WEB-INF/classes下常用的常量介绍S其他常量,Struts2的常量配置,Struts2配置常量总共有三种方式:通过struts.properties文件通过struts.xml文件通过Web应用的web.xml文件Struts2框架按照如下搜索顺序加载常量struts-default.xmlstruts-plugin.xmlstruts.xmlstruts.propertiesweb.xml,Struts2的配置文件介绍,struts.properties:定义框架自身的全局变量。struts-default.xml:定义框架自身使用的action映射及result定义。s

3、truts-plugin.xml:struts插件使用的配置文件,比如当使用struts和spring结合时就需要在web.xml中引用该配置文件。struts.xml:定义应用自身使用的action映射及result定义;当然我们一般将应用的各个模块分配到不同的配置文件中。,Struts.xml配置的主要内容,Action配置Result配置拦截器配置包配置命名空间配置定义Bean使用通配符,通配符简介,*:可以匹配0个或多个字符,但不能匹配”/”*:可以匹配0个或多个字符,且可以匹配/character:用来转译*和,通配符简介,0 代表整个path代表的所有字符不包括第一个/,如path

4、“/*Subscription”中的*是add,那么0就是addSubscription。1 代表第一个通配符(包括*,*,character)所表示的实际内容,如path“/*Subscription”中的*是add,那么1就是add。2 代表第二个通配符(包括*,*,character)所表示的实际内容,如path“/*Subscription*”中的第一个*是add而第二个*是test,那么1就是add,2就是test,目 录,1 Struts2的常规配置2 实现Action接口3 配置Action4 配置处理结果5 配置Struts2的异常处理6 Convention插件与“约定”支持

5、7 使用Struts2的国际化8 使用Struts2的标签库9 本讲小结,10,概述,Struts2不强制要求Action类继承任何Struts2的基类或接口(低侵入式设计)Struts2通常直接使用Action来封装HTTP请求参数,还可以封装HTTP处理结果,Action接口的定义,public static final java.lang.String SUCCESS=success;public static final java.lang.String NONE=none;public static final java.lang.String ERROR=error;public

6、static final java.lang.String INPUT=input;public static final java.lang.String LOGIN=login;public abstract java.lang.String execute()throws java.lang.Exception;,ActionSupport类,ActionSupport类是Struts2默认的Action处理类,如果开发者的Action类继承该ActionSupport类,则会大大简化Action的开发Action继承ActionSupport类不是强制的,也可以不继承,Action接口

7、的实现,扩展ActionSupport类ValidationAware接口validate方法execute方法othervalidate和execute的执行顺序validate先于execute执行,Action接口的实现,使用本地的资源文件TextProvider接口*.properties文件,与类在同一目录下文件名与类名一致使用getText()方法查询本地化信息文件LocalProvider接口通过调用AcitonContext.getContext().getLocale()方法,Action访问Servlet API,Struts2的Action没有与任何的Servlet AP

8、I耦合,从而能更轻松地测试该ActionStruts2提供了一个ActionContext类,来访问Servlet API实际操作演示,Action直接访问Servlet API,为了在Action中直接访问Servlet API,Struts2提供了如下接口:ServletContextAwareServletRequestAwareServletResponseAware尽量避免在Action中直接访问Servlet API,以防止和底层代码耦合,破坏代码设计的独立性,使用ServletActionContext访问ServletAPI,ServletActionContext工具类中的静

9、态方法:getPageContext();getRequest();getResponse():getServletContext():,目 录,1 Struts2的常规配置2 实现Action接口3 配置Action 4 配置处理结果5 配置Struts2的异常处理6 Convention插件与“约定”支持7 使用Struts2的国际化8 使用Struts2的标签库9 本讲小结,19,包和命名空间,Struts2使用包来组织Action命名空间的作用主要处理同一个Web应用中包含同名Action的情况命名空间只有一个级别实例演示,Action的基本配置,Action的基本配置name属性是必

10、须的实例演示,使用Action的动态方法调用,DMI:Dynamic Method Invocation形式:action=“ActionName!MethodName”需要设置strtus.enable.DynamicMethodInvocation=true实例演示,指定Method属性及使用通配符,使用action的method属性,可以让一个Action执行多个逻辑处理过程 实例演示,配置默认Action,当用户请求找不到对应的Action时,系统默认的Action可以处理用户请求实例演示,配置Action的默认处理类,实例演示,目 录,1 Struts2的常规配置2 实现Action

11、接口3 配置Action4 配置处理结果5 配置Struts2的异常处理6 Convention插件与“约定”支持7 使用Struts2的国际化8 使用Struts2的标签库9 本讲小结,26,理解处理结果,Action处理完用户请求后,将返回一个普通字符串,这个普通字符串就是一个逻辑视图名Struts2通过配置逻辑视图名和物理视图资源的映射关系,来把适当的页面呈现给用户使用标签进行配置默认name属性的值为”success”,Struts2支持的Result类型,定义在struts-default.xml文件中默认的是result类型是dispatcherStruts2内建的result类型

12、chain类型dispatcher类型freemarker类型plainText类型redirect类型redirectAction类型其他类型,plainText结果类型,用于显示实际视图资源的源代码必须指定charSet参数,redirect 结果类型,调用sendRedirect(String)方法来转到指定的位置,产生一个新的请求;这样做的结果会使刚刚执行的action(包括action实例,action中的错误消息等)丢失,不再可用。,redirectAction 结果类型,系统将重新生成一个新请求,只是该请求的URL不是一个具体的视图资源,而是另一个Action。因此前一个Acti

13、on的处理结果、请求参数、请求属性都会丢失实际操作演示,Chain Result,这个result调用另外的一个action。actionName(默认)-被调用的action的名字namespace-被调用的action的名称空间。如果名称空间为空,这默认为当前名称空间。method-用于指定目标action的另一个方法被调用.如果空,默认为execute方法。,全局结果,全局结果对所有的Action都有效,目 录,1 Struts2的常规配置2 实现Action接口3 配置Action4 配置处理结果5 配置Struts2的异常处理6 Convention插件与“约定”支持7 使用Stru

14、ts2的国际化8 使用Struts2的标签库9 本讲小结,34,Strtus2的异常处理机制,Struts框架接收到Action抛出的异常之后,将根据struts.xml文件配置的异常映射,转入指定的视图资源需要在struts.xml文件中配置异常处理,声明式异常捕获,在struts.xml文件中配置,其属性有:exceptionresult异常映射的分类局部异常映射全局异常映射实际操作演示,输出异常信息,在异常处理页面,可以输出对应的异常信息:输出异常对象本身:输出异常堆栈信息:,目 录,1 Struts2的常规配置2 实现Action接口3 配置Action4 配置处理结果5 配置Stru

15、ts2的异常处理6 Convention插件与“约定”支持7 使用Struts2的国际化8 使用Struts2的标签库9 本讲小结,38,概述,Struts2引入Convertion插件来支持零配置主要特点:约定优于配置,Action的搜索和映射约定,在应用启动的时候,Convention插件会自动搜索位于action、actions、struts、struts2的包及其子包下的所有Java类,以搜索Action类。在应用启动的时候,Convention插件在上述包及其子包的路径下搜索满足如下条件的类来作为Action类:实现的类类名以Action结尾的Java类,Action的搜索和映射约定

16、,在映射Action的名称的时候,通常遵循如下规则:如果该Action类名以Action作为后缀,那么会将后缀的Action去掉,其他的不做处理。如果该Action类名采用驼峰式的写法,也就是每个单词首字母大写的写法,那么需要把所有字母变成小写,单词与单词之间以中画线隔开。比如有一个Action的名称为HelloWorldAction,那么对应的映射资源的名称为hello-world。(如果是单个词的Action名称,那么把它的所有字母变成小写,作为对应的映射资源的名称。比如Action类名为HelloAction,它是以 Action作为后缀的,那么对应的映射资源的名称为先去掉Action后

17、缀,得到Hello,又是单个词的名称,变成小小,那么最终对应的映射资源的名 称为hello。,按约定映射Result,默认情况下,convention总会到Web应用的WEB-INFcontent路径下定位物理资源。故定位资源约定为:actionName+resultCode+suffix。当某个逻辑视图找不到对应的视图资源是,convention会自动试图使用actionName+suffix作为物理视图资源。,按约定映射Result,Action键的约定,如果想一个Action处理结束后不是进入视图页面,而是进入另一个Action形成Action链。则只需要遵守下面三个约定:1、第一个Ac

18、tion返回的逻辑视图字符串没有对应的视图资源。2、第二个Action与第一个Action处于同一个包下。3、第二个Action映射的URL为:firstactionname+resultcode,目 录,1 Struts2的常规配置2 实现Action接口3 配置Action4 配置处理结果5 配置Struts2的异常处理6 Convention插件与“约定”支持7 使用Struts2的国际化8 使用Struts2的标签库9 本讲小结,45,什么是国际化,国际化(Internationalization)是设计一个适用于多种语言和地区的应用程序的过程。适用于多种语言和地区的含义是当使用不同语

19、言及处于不同的地区的用户在使用这个应用程序时,应用程序必须使用他们能看懂的语言和符合他们文化习惯来显示信息。国际化有时候被简称为i18n,因为有18个字母在国际化的英文单词的字母i和n之间。,什么是本地化,本地化(Localization)是指通过增加本地描述的构件和文字翻译工作来使应用程序适应于不同的语言和地区的过程。本地化有时候被简称为l10n,因为有10个字母在本地化的英文单词的字母l和n之间。通常本地化最耗时的工作应该是文字翻译。本地化工作者们要根据地区的具体需求来为日期、数字和通货等数据建立新的格式。其他类型的数据,象声音,图象等,也需要根据具体需要来决定是否本地化。,什么是Stru

20、ts的国际化,Struts的国际化是建立在Java国际化的基础之上的,一样也是通过提供不同国家/语言环境的消息资源,然后通过ResourceBundle加载指定Locale对应的资源文件,再取得该资源文件中指定Key对应的消息。Struts框架对国际化进行了进一步的封装。,在struts2中需要做国际化的地方,jsp页面的国际化action错误信息的国际化转换错误信息的国际化校验错误信息的国际化,Struts2访问国际化消息方式,(1)JSP页面:(2)Action类中:使用ActionSupport类的getText方法。(3)表单元素的Label里:为表单元素指定一个key属性,Strut

21、s2加载资源文件的方式,(1)加载全局资源文件(2)包范围资源文件 为Struts2指定包范围资源文件的方法是,在包的根路径下建立多个文件名为package_language_country.properties的文件,一旦建立了这个系列的国际化资源文件,应用中处于该包下的所有Action都可以访问该资源文件。需要注意的是上面的包范围资源文件的baseName就是package,不是Action所在的包名。,Struts2加载资源文件的方式,(3)Action范围资源文件在Action类文件所在的路径建立多个文件名为ActionName_language_country.properties的

22、文件。(4)临时指定资源文件标签的name属性指定临时的国际化资源文件,Struts2加载资源文件的顺序,Action中加载资源文件,假设我们在某个ChildAction中调用了getText(user.title),Struts 2.0的将会执行以下的操作:(1)优先加载系统中保存在ChildAction的类文件相同位置,且baseName为ChildAction的系列资源文件。(2)如果在(1)中找不到指定key对应的消息,且ChildAction有父类ParentAction,则加载系统中保存在ParentAction的类文件相同位置,且baseName为ParentAction的系列资

23、源文件。,Struts2加载资源文件的顺序,(3)如果在(2)中找不到指定key对应的消息,且ChildAction有实现接口IChildAction,则加载系统中保存在IChildAction的类文件相同位置,且baseName为IChildAction的系列资源文件。(4)如果在(3)中找不到指定key对应的消息,且ChildAction有实现接口ModelDriven(即使用模型驱动模式),则对于getModel()方法返回的model对象,重新执行第(1)步操作。,Struts2加载资源文件的顺序,(5)如果在(4)中找不到指定key对应的消息,则查找当前包下baseName为pack

24、age的系列资源文件。(6)如果在(5)中找不到指定key对应的消息,则沿着当前包上溯,直到最顶层包来查找baseName为package的系列资源文件。(7)如果在(6)中找不到指定key对应的消息,则查找常量指定baseName的系列资源文件。(8)如果经过上面的步骤一直找不到key对应的消息,将直接输出该key的字符串值。,目 录,1 Struts2的常规配置2 实现Action接口3 配置Action4 配置处理结果5 配置Struts2的异常处理6 Convention插件与“约定”支持7 使用Struts2的国际化8 使用Struts2的标签库9 本讲小结,56,EL简介,EL语法

25、示例:$示例:$sessionScope.user“sex”EL变量,EL简介,EL变量示例,EL简介,自动类型转换$param.count+20String str_count=request.getParameter(count);int count=Integer.parseInt(str_count);count=count+20;,EL表达式,以前,EL简介,EL隐含对象(11个)PageContextPageScopeRequestScopesessionScopeapplicationScopeParamparamValuesheader/headerValuescookie/i

26、nitParam,EL简介,EL保留字,Struts2的标签简介,Struts 2提供的标签库功能非常强大,而且非常好用。使用标签来开发可以使得页面更加整洁容易维护,同样可以减少代码量以及开发时间。Struts 2提供的标签非常之多,其大致分为两类:一类是非用户界面标签,也称为非UI标签(通用标签)。控制标签:条件、循环等流程控制数据标签:数据存储和处理一类是用户界面标签,也称为UI标签。表单标签:主要用于生成HTML的表单非表单标签:如显示日期、树形菜单,通用标签之控制标签,逻辑控制标签主要用来完成流程控制,如分支和循环操作。也可以用来对集合进行合并、排序等操作。,通用标签之控制标签,Str

27、uts 2提供了三个标签用于进行分支流程控制,分别是if标签、else if标签、else标签。其中if标签、else if标签提供了一个test属性用来进行判断。if/elseif/else标签的使用和Java语言中的if-elseif-else流程控制语言使用上是基本类似的。实例演示,通用标签之逻辑控制标签,Struts 2提供iterator标签用来对集合进行遍历,这里所说的集合包括List、Set和数组以及Map。实例演示(判断成绩分类),通用标签之逻辑控制标签,Struts 2中提供append标签用于将多个集合拼接组合成一个集合。merge标签同append标签类似,也是用来组合集

28、合成一个新集合。generator可以将指定的字符串分隔成多个子字符串,并将这些子字符串放置到一个集合中。,通用标签之逻辑控制标签,subset标签用来取得集合的子集sort标签用来通过指定的Comparator对集合中的元素进行排序,通用标签之数据访问标签,数据访问标签用来访问ValueStack中的数据,从而完成数据访问相关功能。例如通过action标签可以用来显示Action中的属性,通过bean标签允许直接在JSP页面中创建JavaBean实例等。每个Action类的对象实例会拥有一个ValueStack对象。当Struts 2接收到一个.action的请求后,会先建立Action类的

29、对象实例,并且将Action类的对象实例压入ValueStack对象中。setValue和findValue方法可以设置和获得Action对象的属性值。,通用标签之数据访问标签,action标签用来在JSP页面中调用Action,通过指定设置其executeResult属性为true,能将处理结果对应的视图资源包含到JSP页面中。Struts 2提供bean标签允许直接在JSP页面中创建JavaBean实例,可以使用param标签在该JavaBean实例传入属性值,也可以通过property标签输出该JavaBean实例的属性值。,通用标签之数据访问标签,property标签set标签push

30、标签,通用标签之数据访问标签,Struts 2提供include标签用于将JSP页面,或者Servlet包含到该页面中。Struts 2提供url标签用来生成一个URL地址。其他标签,UI标签简介,Struts 2提供了丰富的UI标签,使用这些标签可以实现非常好的显示效果。同时Struts 2的UI标签都是基于主题和模板的,通过使用不同的主题或模板就能显示不同的显示效果。模板:一个文件,能被特定标签输出主题:一系列的模板打包。,UI标签之通用属性,所有的表单标签可以分为两种:form标签本身和单个表单元素的标签。所有表单标签处理类都继承了UIBean类,UIBean包含了一些通用属性,这些通用

31、属性分成3种:模板相关属性;javascript相关属性;通用属性。,UI标签之表单标签,form标签textfield标签textarea标签checkbox标签select标签.,UI标签之非表单标签,输出一些表单以外的HTML元素包括:1,a:生成一个超链接2,actionerror:如果Action实例的getActionErrors()方法返回不为null,则该标签负责输出该方法返回的系列错误。3,actionmessage:如果Action实例的getActionMessages()方法返回不为null,则该标签负责输出该方法返回的系列消息。4,component:使用此标签可以生

32、成一个自定义组件。5,div:此标签负责生成一个div片段6,fielderror:如果Action实例存在表单域的类型转换错误,校验错误,该标签则负责输出这些错误提示。7,tabbedPanel:生成HTML页面的Tab页。8,tree:生成一个树形结构。9,treenode:生成树形结构的节点。.,OGNL介绍,OGNL概述Object Graph Navigation Language一般用”#”访问对象OGNL中的集合listmap查找过滤,模板和主题,回忆:什么是模板和主题?Struts2的默认模板:FreeMarker模板Struts2的自带主题Simple主题xhtml主题css

33、_xhtml主题AJAX主题自定义主题,模板和主题,simple主题是最简单的主题,它是最底层的结构,主要用于构建附加的功能或者行为(例如在此主题基础上进行扩展),使用simple主题时,每个UI标签只生成一个简单的HTML元素,不会生成其他额外的内容。xhtml主题是Struts2的默认主题,它对simple主题进行扩展,在该主题的基础上增加了如下附加的特性:1,针对HTML标签(如textfield和select标签)使用标准的两列表格布局。2,每个HTML标签的Label,即可以出现在HTML元素的左边,也可以出现在上边,这取决于labelposition属性的设置。3,自动输出校验错误

34、信息。4,输出JavaScript的客户端校验。,什么是FreeMarker?,FreeMarker允许Java servlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。模板用servlet提供的数据动态地生成 HTML。模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据,FreeMarker运行示意图,FreeMarker特性,1、通用目标2、强大的模板语言3、通用数据模型4、为Web准备5、智能的国际化和本地

35、化6、强大的XML处理能力,81,使用FreeMarker,FreeMarker的使用演示例子,Freemarker.ftl,FreeMarkerServlet.java,Web.xml,运行效果,目 录,1 Struts2的体系结构2 Struts2的配置文件3 实现Action接口4 Result类型与拦截器介绍5 EL及标签简介6 FreeMarker简介7 Velocity简介8 本讲小结,87,什么是Velocity,什么是Velocity?如何在Struts2 中使用Velocity?在VM文件中使用标签,使用Velocity,Velocity的使用演示例子,JasperReports概述,什么是JasperReports?有什么作用?在Struts2中如何使用JasperReports具体实例演示,目 录,1 Struts2的常规配置2 实现Action接口3 配置Action4 配置处理结果5 配置Struts2的异常处理6 Convention插件与“约定”支持7 使用Struts2的国际化8 使用Struts2的标签库9 本讲小结,91,本讲小结,讲述了Struts2的基本用法需要多练习才能掌握,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号