struts2的配置
一般不用定义bean.
常量的配置可以在struts.xml、struts.properties、web.xml文件中定义。
搜索顺序为从左至右,如果几个文件出现相同的常量配置,则后面的配置覆盖前面的配置。
包的配置:struts2中的核心组件以包为单位进行组织。父包必须定义在子包前。
命名空间配置:在同一个命名空间里不能有同名的Action,必须以包为单位来指定nameSpace,
若未指定则表示默认的命名空间"",指定命名空间后,Action的处理url为nameSpace/***.action,如果在指定的命名空间中找不到Action,则由默认的命名空间中的Action处理,如果也找不到则报错。
包含配置:struts2允许将一个配置文件分割为多个,通过<include.../>来指定。
拦截器配置:拦截器其实就是AOP的思想,允许在Action处理之前或之后插入自定义的代码。
可以由多个拦截器组成一个拦截器栈,拦截器栈对外表现为一个拦截器。拦截器或拦截器栈用<interceptor.../>来定义。
Struts2的Action
采有低侵入式的设计,不要求继承任何基类或接口。Action直接封装请求中的数据,要求具有与请求参数对应的属性及setter、getter。
struts2为了统一规范提供了Action接口以及ActionSupport实现类用于简化Action的开发。
Struts2提供ActionContext来让Action与容器保持联系。
完成类似于Struts1的DispatchAction的要求
可以采用以下两种方法
1、Struts2中出现了动态方法调用
步骤:
1)设置struts.enable.DynamicMethodInvocation常量为true开启动态方法调用
2)请求格式为Action名!方法名.action
或者用下面这种方式
2、将一个Action类配置为多个逻辑Action,用method指定方法名,这样请求时不会再去调用execute方法,而是用指定的方法名去处理请求。
<action name="action逻辑名" class="Action类名" method="方法名"/>
在配置<action.../>元素时,需要指定name,class和method属性,这3个属性支持通配符。
例如:
<action name="*.Action" class="lee.LoginRegistAction" method="{1}">
如果用户请求loginAction.action,则调用lee.LoginRegistAction类的login方法
<action name="*Action" class="lee.{1}Action">
如果用户请求LoginAction.action,则调用lee.LoginAction的execute方法
<action name="*_*" method="{2}" class="actions.{1}">
如果用户请求Book_save.action,则表示要调用actions.Book类的save方法
实现类似于struts1中的ForwardAction的功能。
<action name="*">
<result>/{1}.jsp</result>
</action>
表示所有的请求都由ActionSupport类的execute方法处理,该方法返回success资源名。该配置表示如果请求a.action则进入a.jsp页面
当用户请求的URL同时匹配多个<action.../>时,由<action.../>的声明次序来顺序匹配,所以应该将<action name="*".../>的配置放在最后。
当用户请求的URL找不到对应的<action.../>时,则使用默认的Action来处理。
<default-action-ref name="simpleViewAction">
...
<action name="simpleViewAction" class="lee.simpleViewAction">
<result.../>
...
</action>
返回处理结果
Action处理完用户请求后,将返回一个普通字符串它代表着一个逻辑视图名。
局部结果:<result.../>放在<action.../>中
全局结果:<result.../>放在<blobal-results.../>中
一个完整的配置
<result name="success" type="dispatcher">
<param name="location">/thank_you.jsp</param>
</result>
可以省略为<result>/thank_you.jsp</result>
如果配置<result.../>元素时没有指定location参数,系统将会把<result>...</result>之间的字符串当成实际视图资源,如果没有指定name属性,则name属性采用默认值:success,如果没有指定type属性,则采用struts2的默认结果类型。
Action处理完请求之后会返回一个字符串用于表示逻辑视图名,该名未与任何视图相关联,直到在<result.../>中配置,struts2支持的视图类型要求实现com.opensymphony.xwork.Result接口,struts2默认提供了一系列的结果类型,在struts-default.xml配置文件中有说明。
几个常用的结果类型
1、redirect结果类型
这种结果类型表示重定向,而默认的dispatcher结果类型表示转发。
用于重定向到一个具体资源。
<result type="redirect">/welcome.jsp</result>
2、redirect-action结果类型
将请求重定向到另一个Action时使用这种结果类型。
指定两个参数:
actionName:指定重定向的Action名。
namespace:指定重定向的Action所在的命名空间。
3.动态结果
<action name="crud_*" class="lee.CrudAction" method="{1}">
<result name="input">/input.jsp</result>
<result>/{1}.jsp</result>
</action>
当请求crud_create.actioin请求时,将调用lee.CrudActionr的create方法来处理请求,处理之后有两种结果:结果字符串为input时转到/input.jsp页面,处理结果为success字符串时,转入create.jsp页面。
配置<result.../>元素时,不仅可以使用${n}表达式形式来指定视图资源,还可以使用${属性名}方式来指定视图资源。其中${属性名}里的属性名就是对应Action实例里的属性。同时可以使用如下的形式${属性名.属性名.属性名}
全局结果
struts2的<result.../>元素配置,也可放在<blobal-results.../>元素中配置。该元素配置了一个全局结果对所有Action都有效。
如果同名,局部结果优先。
struts2的异常处理
可以和struts1一样在execute方法用try..catch...的方式处理,也可以使用声明的方式。
struts2的Action接口中execute方法声明允许抛出一切异常。
为了使用struts2的声明异常处理,要打开struts2的异常映射功能,需要开启一个拦截器。在struts-default.xml中有<interceptor name="exception"..../>
<inerceptor-stack name="defaultStack">
....
<interceptor-ref name="exception"/>
....
</interceptor-stack>
异常处理是通过struts.xml文件中配置<exception-mapping.../>元素完成,配置该元素时,需要指定两个属性:
exception:指定异常类型。
result:转入的结果。
根据<exception-mapping.../>出现的位置又可分为局部异常和全局异常。
输出异常信息
用<s:property value="exception"/>:输出异常对象本身。
用<s:property value="exceptionStack">:输出异常堆栈信息。
为了简化类型转换器的实现,struts2提供了一个StrutsTypeConverter抽象类,这个抽象类是OGNL中的DefaultTypeConverter类的子类。
它提供了两个方法:
convertFromString用于将请求中的字符串转为复合类型。
convertToString用于将复合类型转为字符串输出。
struts2的类型转换
是基于OGNL项目实现的,OGNL提供了一个TypeConverter接口
分享到:
相关推荐
Struts2是一款非常流行的Java Web框架,用于构建企业级应用。然而,随着时间的推移,Struts2在安全方面暴露出了一些重要的漏洞,这给使用该框架的系统带来了潜在的安全风险。"Struts2漏洞检查工具Struts2.2019.V2.3...
Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。它的核心是MVC(Model-View-Controller)设计模式,可以帮助开发者组织代码,提高开发效率,并且提供了丰富的特性来支持表单验证、国际化、...
### Struts1与Struts2的主要区别 #### 概述 Apache Struts 是一个用于构建企业级Java Web应用的开源框架。它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在...
Struts2 项目开发 Struts2 是一个基于 Java Web 的框架,广泛应用于 Web 应用程序的开发。下面将从 Struts2 项目开发的角度,详细介绍 Struts2 框架的应用、开发流程、技术架构、实践经验等方面的知识点。 项目...
这个"留言板留言板struts2"项目,显然是一个基于Struts2实现的简单留言板系统,旨在展示Struts2的核心功能和开发流程。下面将详细介绍Struts2框架以及在该项目中可能涉及的关键知识点。 1. **Struts2框架概述**:...
### Struts2核心知识点解析 #### 一、Struts2框架概述 - **定义与特点**:Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它继承了Struts1的优点,同时在设计上更加灵活、易用,...
struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...
该工具的打开路径为:\Struts2VulsTools-2.3.20190927\Test\bin\Release\Text.exe 2019-09-25: 优化部分EXP在部分情况下被WAF拦截的问题,提高检测成功率,优化自定义上传路径exp,文件所在目录不存在时自动创建...
Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,旨在简化创建用户交互式、数据驱动的web应用的过程。这个“Struts2接口文档”是开发者的重要参考资料,提供了关于...
Struts2-showcase是一个用于演示和学习Apache Struts2框架功能的开源项目。这个压缩包“struts2-showcase.rar”包含了完整的源代码,旨在帮助开发者深入理解Struts2框架的工作原理及其各种特性。以下是对Struts2和...
Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用程序。它在Java社区中广泛使用,因其灵活性、可扩展性和丰富的插件库而受到赞誉。Struts2的核心是Action类,它处理HTTP...
-- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper --> <bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class=...
"struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts2-json-plugin等依赖,这些是开发Struts2应用必不可少的组件。 "Struts2"可能是项目实例代码,包括Action类、视图...
Struts2是一个非常著名的Java Web开发框架,由Apache软件基金会维护。它基于MVC(Model-View-Controller)设计模式,极大地简化了构建基于Java EE的Web应用程序的过程。本资源包含"struts2所有jar包程序文件",是...
Struts2是一个强大的Java web开发框架,用于构建可维护、可扩展且结构良好的应用程序。它在MVC(Model-View-Controller)设计模式的基础上提供了一种实现方式,使得开发者能够更方便地处理用户请求,控制业务逻辑,...
Struts2是Apache软件基金会下的一个开源框架,主要用于构建企业级的Java web应用程序。张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置...
struts2 chm 程序包 org.apache.struts2 接口概要 接口 说明 StrutsStatics Constants used by Struts. 类概要 类 说明 RequestUtils Request handling utility class. ServletActionContext Web-specific ...
包含struts2-core-2.5.10.1.jar,struts2-jfreechart-plugin-2.5.10.1.jar,struts2-json-plugin-2.5.10.1.jar,struts2-junit-plugin-2.5.10.1.jar,struts2-bean-validation-plugin-2.5.10.1.jar,struts2-cdi-...
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...
Struts 2是一款基于Java的开源MVC框架,它在Web应用开发中广泛使用,但同时也因其复杂的架构和历史遗留问题,成为了网络安全的焦点。这个标题提到的是一个全面的Struts 2漏洞检测工具,旨在帮助开发者和安全专家识别...