Struts2的基本用法.ppt

上传人:max****ui 文档编号:10976852 上传时间:2020-04-16 格式:PPT 页数:91 大小:1.26MB
返回 下载 相关 举报
Struts2的基本用法.ppt_第1页
第1页 / 共91页
Struts2的基本用法.ppt_第2页
第2页 / 共91页
Struts2的基本用法.ppt_第3页
第3页 / 共91页
点击查看更多>>
资源描述
第4讲Struts2的基本用法 2 掌握Struts2的配置文件掌握Struts2中Action的配置及使用会使用Struts2的国际化掌握Struts2的标签库 课程目标 目录 1Struts2的常规配置2实现Action接口3配置Action4配置处理结果5配置Struts2的异常处理6Convention插件与 约定 支持7使用Struts2的国际化8使用Struts2的标签库9本讲小结 3 Struts2的常量配置 使用struts properties文件来管理常量该文件包含了系列的key value对注意struts properties文件的路径通常放在web应用的WEB INF classes下常用的常量介绍Struts i18n encodingStruts ui theme其他常量 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定义 struts plugin xml struts插件使用的配置文件 比如当使用struts和spring结合时就需要在web xml中引用该配置文件 struts xml 定义应用自身使用的action映射及result定义 当然我们一般将应用的各个模块分配到不同的配置文件中 Struts xml配置的主要内容 Action配置Result配置拦截器配置包配置命名空间配置定义Bean使用通配符 通配符简介 可以匹配0个或多个字符 但不能匹配 可以匹配0个或多个字符 且可以匹配 character 用来转译 和 通配符简介 0 代表整个path代表的所有字符 不包括第一个 如path Subscription 中的 是add 那么 0 就是addSubscription 1 代表第一个通配符 包括 character 所表示的实际内容 如path Subscription 中的 是add 那么 1 就是add 2 代表第二个通配符 包括 character 所表示的实际内容 如path Subscription 中的第一个 是add而第二个 是test 那么 1 就是add 2 就是test 目录 1Struts2的常规配置2实现Action接口3配置Action4配置处理结果5配置Struts2的异常处理6Convention插件与 约定 支持7使用Struts2的国际化8使用Struts2的标签库9本讲小结 10 概述 Struts2不强制要求Action类继承任何Struts2的基类或接口 低侵入式设计 Struts2通常直接使用Action来封装HTTP请求参数 还可以封装HTTP处理结果 Action接口的定义 publicstaticfinaljava lang StringSUCCESS success publicstaticfinaljava lang StringNONE none publicstaticfinaljava lang StringERROR error publicstaticfinaljava lang StringINPUT input publicstaticfinaljava lang StringLOGIN login publicabstractjava lang Stringexecute throwsjava lang Exception ActionSupport类 ActionSupport类是Struts2默认的Action处理类 如果开发者的Action类继承该ActionSupport类 则会大大简化Action的开发Action继承ActionSupport类不是强制的 也可以不继承 Action接口的实现 扩展ActionSupport类ValidationAware接口validate方法execute方法othervalidate和execute的执行顺序validate先于execute执行 Action接口的实现 使用本地的资源文件TextProvider接口 properties文件 与类在同一目录下文件名与类名一致使用getText 方法查询本地化信息文件LocalProvider接口通过调用AcitonContext getContext getLocale 方法 Action访问ServletAPI Struts2的Action没有与任何的ServletAPI耦合 从而能更轻松地测试该ActionStruts2提供了一个ActionContext类 来访问ServletAPI实际操作演示 Action直接访问ServletAPI 为了在Action中直接访问ServletAPI Struts2提供了如下接口 ServletContextAwareServletRequestAwareServletResponseAware尽量避免在Action中直接访问ServletAPI 以防止和底层代码耦合 破坏代码设计的独立性 使用ServletActionContext访问ServletAPI ServletActionContext工具类中的静态方法 getPageContext getRequest getResponse getServletContext 目录 1Struts2的常规配置2实现Action接口3配置Action4配置处理结果5配置Struts2的异常处理6Convention插件与 约定 支持7使用Struts2的国际化8使用Struts2的标签库9本讲小结 19 包和命名空间 Struts2使用包来组织Action命名空间的作用主要处理同一个Web应用中包含同名Action的情况命名空间只有一个级别实例演示 Action的基本配置 Action的基本配置name属性是必须的实例演示 使用Action的动态方法调用 DMI DynamicMethodInvocation形式 action ActionName MethodName 需要设置strtus enable DynamicMethodInvocation true实例演示 指定Method属性及使用通配符 使用action的method属性 可以让一个Action执行多个逻辑处理过程实例演示 配置默认Action 当用户请求找不到对应的Action时 系统默认的Action可以处理用户请求实例演示 配置Action的默认处理类 实例演示 目录 1Struts2的常规配置2实现Action接口3配置Action4配置处理结果5配置Struts2的异常处理6Convention插件与 约定 支持7使用Struts2的国际化8使用Struts2的标签库9本讲小结 26 理解处理结果 Action处理完用户请求后 将返回一个普通字符串 这个普通字符串就是一个逻辑视图名Struts2通过配置逻辑视图名和物理视图资源的映射关系 来把适当的页面呈现给用户使用标签进行配置默认name属性的值为 success Struts2支持的Result类型 定义在struts default xml文件中默认的是result类型是dispatcherStruts2内建的result类型chain类型dispatcher类型freemarker类型plainText类型redirect类型redirectAction类型其他类型 plainText结果类型 用于显示实际视图资源的源代码必须指定charSet参数 redirect结果类型 调用sendRedirect String 方法来转到指定的位置 产生一个新的请求 这样做的结果会使刚刚执行的action 包括action实例 action中的错误消息等 丢失 不再可用 redirectAction结果类型 系统将重新生成一个新请求 只是该请求的URL不是一个具体的视图资源 而是另一个Action 因此前一个Action的处理结果 请求参数 请求属性都会丢失实际操作演示 ChainResult 这个result调用另外的一个action actionName 默认 被调用的action的名字namespace 被调用的action的名称空间 如果名称空间为空 这默认为当前名称空间 method 用于指定目标action的另一个方法被调用 如果空 默认为execute方法 全局结果 全局结果对所有的Action都有效 目录 1Struts2的常规配置2实现Action接口3配置Action4配置处理结果5配置Struts2的异常处理6Convention插件与 约定 支持7使用Struts2的国际化8使用Struts2的标签库9本讲小结 34 Strtus2的异常处理机制 Struts框架接收到Action抛出的异常之后 将根据struts xml文件配置的异常映射 转入指定的视图资源需要在struts xml文件中配置异常处理 声明式异常捕获 在struts xml文件中配置 其属性有 exceptionresult异常映射的分类局部异常映射全局异常映射实际操作演示 输出异常信息 在异常处理页面 可以输出对应的异常信息 输出异常对象本身 输出异常堆栈信息 目录 1Struts2的常规配置2实现Action接口3配置Action4配置处理结果5配置Struts2的异常处理6Convention插件与 约定 支持7使用Struts2的国际化8使用Struts2的标签库9本讲小结 38 概述 Struts2引入Convertion插件来支持零配置主要特点 约定优于配置 Action的搜索和映射约定 在应用启动的时候 Convention插件会自动搜索位于action actions struts struts2的包及其子包下的所有Java类 以搜索Action类 在应用启动的时候 Convention插件在上述包及其子包的路径下搜索满足如下条件的类来作为Action类 实现com opensymphony xwork2 Action的类类名以Action结尾的Java类 Action的搜索和映射约定 在映射Action的名称的时候 通常遵循如下规则 如果该Action类名以Action作为后缀 那么会将后缀的Action去掉 其他的不做处理 如果该Action类名采用驼峰式的写法 也就是每个单词首字母大写的写法 那么需要把所有字母变成小写 单词与单词之间以中画线隔开 比如有一个Action的名称为HelloWorldAction 那么对应的映射资源的名称为hello world 如果是单个词的Action名称 那么把它的所有字母变成小写 作为对应的映射资源的名称 比如Action类名为HelloAction 它是以Action作为后缀的 那么对应的映射资源的名称为先去掉Action后缀 得到Hello 又是单个词的名称 变成小小 那么最终对应的映射资源的名称为hello 按约定映射Result 默认情况下 convention总会到Web应用的WEB INF content路径下定位物理资源 故定位资源约定为 actionName resultCode suffix 当某个逻辑视图找不到对应的视图资源是 convention会自动试图使用actionName suffix作为物理视图资源 按约定映射Result Action键的约定 如果想一个Action处理结束后不是进入视图页面 而是进入另一个Action形成Action链 则只需要遵守下面三个约定 1 第一个Action返回的逻辑视图字符串没有对应的视图资源 2 第二个Action与第一个Action处于同一个包下 3 第二个Action映射的URL为 firstactionname resultcode 目录 1Struts2的常规配置2实现Action接口3配置Action4配置处理结果5配置Struts2的异常处理6Convention插件与 约定 支持7使用Struts2的国际化8使用Struts2的标签库9本讲小结 45 什么是国际化 国际化 Internationalization 是设计一个适用于多种语言和地区的应用程序的过程 适用于多种语言和地区的含义是当使用不同语言及处于不同的地区的用户在使用这个应用程序时 应用程序必须使用他们能看懂的语言和符合他们文化习惯来显示信息 国际化有时候被简称为i18n 因为有18个字母在国际化的英文单词的字母i和n之间 什么是本地化 本地化 Localization 是指通过增加本地描述的构件和文字翻译工作来使应用程序适应于不同的语言和地区的过程 本地化有时候被简称为l10n 因为有10个字母在本地化的英文单词的字母l和n之间 通常本地化最耗时的工作应该是文字翻译 本地化工作者们要根据地区的具体需求来为日期 数字和通货等数据建立新的格式 其他类型的数据 象声音 图象等 也需要根据具体需要来决定是否本地化 什么是Struts的国际化 Struts的国际化是建立在Java国际化的基础之上的 一样也是通过提供不同国家 语言环境的消息资源 然后通过ResourceBundle加载指定Locale对应的资源文件 再取得该资源文件中指定Key对应的消息 Struts框架对国际化进行了进一步的封装 在struts2中需要做国际化的地方 jsp页面的国际化action错误信息的国际化转换错误信息的国际化校验错误信息的国际化 Struts2访问国际化消息方式 1 JSP页面 2 Action类中 使用ActionSupport类的getText方法 3 表单元素的Label里 为表单元素指定一个key属性 Struts2加载资源文件的方式 1 加载全局资源文件 2 包范围资源文件为Struts2指定包范围资源文件的方法是 在包的根路径下建立多个文件名为package language country properties的文件 一旦建立了这个系列的国际化资源文件 应用中处于该包下的所有Action都可以访问该资源文件 需要注意的是上面的包范围资源文件的baseName就是package 不是Action所在的包名 Struts2加载资源文件的方式 3 Action范围资源文件在Action类文件所在的路径建立多个文件名为ActionName language country properties的文件 4 临时指定资源文件标签的name属性指定临时的国际化资源文件 Struts2加载资源文件的顺序 Action中加载资源文件 假设我们在某个ChildAction中调用了getText user title Struts2 0的将会执行以下的操作 1 优先加载系统中保存在ChildAction的类文件相同位置 且baseName为ChildAction的系列资源文件 2 如果在 1 中找不到指定key对应的消息 且ChildAction有父类ParentAction 则加载系统中保存在ParentAction的类文件相同位置 且baseName为ParentAction的系列资源文件 Struts2加载资源文件的顺序 3 如果在 2 中找不到指定key对应的消息 且ChildAction有实现接口IChildAction 则加载系统中保存在IChildAction的类文件相同位置 且baseName为IChildAction的系列资源文件 4 如果在 3 中找不到指定key对应的消息 且ChildAction有实现接口ModelDriven 即使用模型驱动模式 则对于getModel 方法返回的model对象 重新执行第 1 步操作 Struts2加载资源文件的顺序 5 如果在 4 中找不到指定key对应的消息 则查找当前包下baseName为package的系列资源文件 6 如果在 5 中找不到指定key对应的消息 则沿着当前包上溯 直到最顶层包来查找baseName为package的系列资源文件 7 如果在 6 中找不到指定key对应的消息 则查找struts custom i18n resources常量指定baseName的系列资源文件 8 如果经过上面的步骤一直找不到key对应的消息 将直接输出该key的字符串值 目录 1Struts2的常规配置2实现Action接口3配置Action4配置处理结果5配置Struts2的异常处理6Convention插件与 约定 支持7使用Struts2的国际化8使用Struts2的标签库9本讲小结 56 EL简介 EL语法示例 sessionScope user sex 示例 sessionScope user sex EL变量 EL简介 EL变量示例 EL简介 自动类型转换 param count 20 Stringstr count request getParameter count intcount Integer parseInt str count count count 20 EL表达式 以前 EL简介 EL隐含对象 11个 PageContextPageScopeRequestScopesessionScopeapplicationScopeParamparamValuesheader headerValuescookie initParam EL简介 EL保留字 Struts2的标签简介 Struts2提供的标签库功能非常强大 而且非常好用 使用标签来开发可以使得页面更加整洁容易维护 同样可以减少代码量以及开发时间 Struts2提供的标签非常之多 其大致分为两类 一类是非用户界面标签 也称为非UI标签 通用标签 控制标签 条件 循环等流程控制数据标签 数据存储和处理一类是用户界面标签 也称为UI标签 表单标签 主要用于生成HTML的表单非表单标签 如显示日期 树形菜单 通用标签之控制标签 逻辑控制标签主要用来完成流程控制 如分支和循环操作 也可以用来对集合进行合并 排序等操作 通用标签之控制标签 Struts2提供了三个标签用于进行分支流程控制 分别是if标签 elseif标签 else标签 其中if标签 elseif标签提供了一个test属性用来进行判断 if elseif else标签的使用和Java语言中的if elseif else流程控制语言使用上是基本类似的 实例演示 通用标签之逻辑控制标签 Struts2提供iterator标签用来对集合进行遍历 这里所说的集合包括List Set和数组以及Map 实例演示 判断成绩分类 通用标签之逻辑控制标签 Struts2中提供append标签用于将多个集合拼接组合成一个集合 merge标签同append标签类似 也是用来组合集合成一个新集合 generator可以将指定的字符串分隔成多个子字符串 并将这些子字符串放置到一个集合中 通用标签之逻辑控制标签 subset标签用来取得集合的子集sort标签用来通过指定的Comparator对集合中的元素进行排序 通用标签之数据访问标签 数据访问标签用来访问ValueStack中的数据 从而完成数据访问相关功能 例如通过action标签可以用来显示Action中的属性 通过bean标签允许直接在JSP页面中创建JavaBean实例等 每个Action类的对象实例会拥有一个ValueStack对象 当Struts2接收到一个 action的请求后 会先建立Action类的对象实例 并且将Action类的对象实例压入ValueStack对象中 setValue和findValue方法可以设置和获得Action对象的属性值 通用标签之数据访问标签 action标签用来在JSP页面中调用Action 通过指定设置其executeResult属性为true 能将处理结果对应的视图资源包含到JSP页面中 Struts2提供bean标签允许直接在JSP页面中创建JavaBean实例 可以使用param标签在该JavaBean实例传入属性值 也可以通过property标签输出该JavaBean实例的属性值 通用标签之数据访问标签 property标签set标签push标签 通用标签之数据访问标签 Struts2提供include标签用于将JSP页面 或者Servlet包含到该页面中 Struts2提供url标签用来生成一个URL地址 其他标签 UI标签简介 Struts2提供了丰富的UI标签 使用这些标签可以实现非常好的显示效果 同时Struts2的UI标签都是基于主题和模板的 通过使用不同的主题或模板就能显示不同的显示效果 模板 一个文件 能被特定标签输出主题 一系列的模板打包 UI标签之通用属性 所有的表单标签可以分为两种 form标签本身和单个表单元素的标签 所有表单标签处理类都继承了UIBean类 UIBean包含了一些通用属性 这些通用属性分成3种 模板相关属性 javascript相关属性 通用属性 UI标签之表单标签 form标签textfield标签textarea标签checkbox标签select标签 UI标签之非表单标签 输出一些表单以外的HTML元素包括 1 a 生成一个超链接2 actionerror 如果Action实例的getActionErrors 方法返回不为null 则该标签负责输出该方法返回的系列错误 3 actionmessage 如果Action实例的getActionMessages 方法返回不为null 则该标签负责输出该方法返回的系列消息 4 component 使用此标签可以生成一个自定义组件 5 div 此标签负责生成一个div片段6 fielderror 如果Action实例存在表单域的类型转换错误 校验错误 该标签则负责输出这些错误提示 7 tabbedPanel 生成HTML页面的Tab页 8 tree 生成一个树形结构 9 treenode 生成树形结构的节点 OGNL介绍 OGNL概述ObjectGraphNavigationLanguage一般用 访问对象OGNL中的集合listmap查找过滤 模板和主题 回忆 什么是模板和主题 Struts2的默认模板 FreeMarker模板Struts2的自带主题Simple主题xhtml主题css xhtml主题AJAX主题自定义主题 模板和主题 simple主题是最简单的主题 它是最底层的结构 主要用于构建附加的功能或者行为 例如在此主题基础上进行扩展 使用simple主题时 每个UI标签只生成一个简单的HTML元素 不会生成其他额外的内容 xhtml主题是Struts2的默认主题 它对simple主题进行扩展 在该主题的基础上增加了如下附加的特性 1 针对HTML标签 如textfield和select标签 使用标准的两列表格布局 2 每个HTML标签的Label 即可以出现在HTML元素的左边 也可以出现在上边 这取决于labelposition属性的设置 3 自动输出校验错误信息 4 输出JavaScript的客户端校验 什么是FreeMarker FreeMarker允许Javaservlet保持图形设计同应用程序逻辑的分离 这是通过在模板中密封HTML完成的 模板用servlet提供的数据动态地生成HTML 模板语言是强大的直观的 编译器速度快 输出接近静态HTML页面的速度 虽然FreeMarker具有一些编程的能力 但通常由Java程序准备要显示的数据 由FreeMarker生成页面 通过模板显示准备的数据 FreeMarker运行示意图 FreeMarker特性 1 通用目标2 强大的模板语言3 通用数据模型4 为Web准备5 智能的国际化和本地化6 强大的XML处理能力 81 使用FreeMarker FreeMarker的使用演示例子 Freemarker ftl FreeMarkerServlet java Web xml 运行效果 目录 1Struts2的体系结构2Struts2的配置文件3实现Action接口4Result类型与拦截器介绍5EL及标签简介6FreeMarker简介7Velocity简介8本讲小结 87 什么是Velocity 什么是Velocity 如何在Struts2中使用Velocity 在VM文件中使用标签 使用Velocity Velocity的使用演示例子 JasperReports概述 什么是JasperReports 有什么作用 在Struts2中如何使用JasperReports具体实例演示 目录 1Struts2的常规配置2实现Action接口3配置Action4配置处理结果5配置Struts2的异常处理6Convention插件与 约定 支持7使用Struts2的国际化8使用Struts2的标签库9本讲小结 91 本讲小结 讲述了Struts2的基本用法需要多练习才能掌握
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!