资源预览内容
第1页 / 共91页
第2页 / 共91页
第3页 / 共91页
第4页 / 共91页
第5页 / 共91页
第6页 / 共91页
第7页 / 共91页
第8页 / 共91页
第9页 / 共91页
第10页 / 共91页
亲,该文档总共91页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第4讲 Struts2的基本用法-2,掌握Struts2的配置文件 掌握Struts2中Action的配置及使用 会使用Struts2的国际化 掌握Struts2的标签库,课程目标,目 录,1 Struts2的常规配置 2 实现Action接口 3 配置Action 4 配置处理结果 5 配置Struts2的异常处理 6 Convention插件与“约定”支持 7 使用Struts2的国际化 8 使用Struts2的标签库 9 本讲小结,3,Struts2的常量配置,使用struts. properties文件来管理常量 该文件包含了系列的key-value对 注意struts. properties文件的路径 通常放在web应用的WEB-INF/classes下 常用的常量介绍 Struts.i18n.encoding Struts.ui.theme 其他常量,Struts2的常量配置,Struts2配置常量总共有三种方式: 通过struts. properties文件 通过struts. xml文件 通过Web应用的web.xml文件 Struts2框架按照如下搜索顺序加载常量 struts-default.xml struts-plugin.xml struts.xml struts. properties web.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,目 录,1 Struts2的常规配置 2 实现Action接口 3 配置Action 4 配置处理结果 5 配置Struts2的异常处理 6 Convention插件与“约定”支持 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 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接口的实现,扩展ActionSupport类 ValidationAware接口 validate方法 execute方法 othervalidate和execute的执行顺序 validate先于execute执行,Action接口的实现,使用本地的资源文件 TextProvider接口 *.properties文件,与类在同一目录下 文件名与类名一致 使用getText()方法查询本地化信息文件LocalProvider接口 通过调用AcitonContext.getContext ().getLocale()方法,Action访问Servlet API,Struts2的Action没有与任何的Servlet API耦合,从而能更轻松地测试该ActionStruts2提供了一个ActionContext类,来访问Servlet API实际操作演示,Action直接访问Servlet API,为了在Action中直接访问Servlet API,Struts2提供了如下接口: ServletContextAware ServletRequestAware ServletResponseAware 尽量避免在Action中直接访问Servlet API,以防止和底层代码耦合,破坏代码设计的独立性,使用ServletActionContext访问ServletAPI,ServletActionContext工具类中的静态方法: 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属性是必须的实例演示,使用Action的动态方法调用,DMI:Dynamic Method Invocation 形式:action=“ActionName!MethodName” 需要设置strtus.enable.DynamicMethodInvocation = true实例演示,指定Method属性及使用通配符,使用action的method属性,可以让一个Action执行多个逻辑处理过程 实例演示,配置默认Action, 当用户请求找不到对应的Action时,系统默认的Action可以处理用户请求实例演示,配置Action的默认处理类,实例演示,目 录,1 Struts2的常规配置 2 实现Action接口 3 配置Action 4 配置处理结果 5 配置Struts2的异常处理 6 Convention插件与“约定”支持 7 使用Struts2的国际化 8 使用Struts2的标签库 9 本讲小结,26,理解处理结果,Action处理完用户请求后,将返回一个普通字符串,这个普通字符串就是一个逻辑视图名 Struts2通过配置逻辑视图名和物理视图资源的映射关系,来把适当的页面呈现给用户 使用标签进行配置 默认name属性的值为”success”,Struts2支持的Result类型,定义在struts-default.xml文件中 默认的是result类型是dispatcher Struts2内建的result类型 chain类型 dispatcher类型 freemarker类型 plainText类型 redirect类型 redirectAction类型 其他类型,plainText结果类型,用于显示实际视图资源的源代码 必须指定charSet参数,redirect 结果类型,调用sendRedirect(String) 方法来转到指定的位置,产生一个新的请求; 这样做的结果会使刚刚执行的action(包括action实例,action中的错误消息等)丢失, 不再可用。,redirectAction 结果类型,系统将重新生成一个新请求,只是该请求的URL不是一个具体的视图资源,而是另一个Action。因此前一个Action的处理结果、请求参数、请求属性都会丢失实际操作演示,Chain Result,这个result调用另外的一个action。 actionName (默认) - 被调用的action的名字 namespace - 被调用的action的名称空间。如果名称空间为空,这默认为当前名称空间。 method - 用于指定目标action的另一个方法被调用. 如果空,默认为execute方法。,全局结果,全局结果对所有的Action都有效,目 录,1 Struts2的常规配置 2 实现Action接口 3 配置Action 4 配置处理结果 5 配置Struts2的异常处理 6 Convention插件与“约定”支持 7 使用Struts2的国际化 8 使用Struts2的标签库 9 本讲小结,34,Strtus2的异常处理机制,Struts框架接收到Action抛出的异常之后,将根据struts.xml文件配置的异常映射,转入指定的视图资源需要在struts.xml文件中配置异常处理,声明式异常捕获,在struts.xml文件中配置,其属性有: exception result 异常映射的分类 局部异常映射 全局异常映射 实际操作演示,输出异常信息,在异常处理页面,可以输出对应的异常信息: 输出异常对象本身:输出异常堆栈信息: ,目 录,1 Struts2的常规配置 2 实现Action接口 3 配置Action 4 配置处理结果 5 配置Struts2的异常处理 6 Convention插件与“约定”支持 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。,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号