Preparable接口中有一个void prepare() throws Exception方法,实现该接口的Action类,将在执行这个action所以方法之前执行prepare(),称为action准备方法。
关于struts2的其他事儿
===============
<package>
===============
struts.xml 中的package的name可以随意定义,只做继承时使用。
===============
<constent>
===============
struts.xml 中
用<constent name="" value=""/>
来改变default.proerties 中key对应的值
==============================================
覆盖默认的资源文件 -- default.properties
==============================================
也可以在clasess(/src)下建立struts.properties的方式,覆盖默认的配置文件default.proerties
内容如:
struts.i18n.encoding=gbk 设置字符集
struts.action.extension=do 设置请求后缀名
struts.configuration.files=struts-default.xml,struts-plugin.xml,struts.xml Struts2自动加载的配置文件
==============
抽象包
==============
<package name="..." abstract="true">
表示该包中不能有action定义,只能通过包来继承来定义
=============
命名空间
=============
<package name="..." namespace="">
将不同的应用分割开
如果不配置,表示当前包在一个默认的命名空间里
namespace="/hello"
请求路径就改变为 /hello/register
需要更改表单路径 并且一定要手工加.action
<s:form action="/hello/register.action">
寻找方式,如果namespace为默认,而表单路径为/hello/register.action
当struts没有找到该命名空间是,自动到默认的命名空间找
=============================
<include> 模块化的配置
=============================
<include file="struts_1.xml"></include>
<include file="struts_2.xml"></include>
struts_1.xml和struts_2.xml都是标准的strust的xml配置文件
include后,struts会在启动后将struts_1.xml和struts_2.xml的配置信息一同加载到内存中。
===============
Struts2 MVC
===============
FilterDispatcher ----- 核心控制器
每个action ------- 业务控制器
--------- 调用业务逻辑组件 ---- 调用DAO ---- 数据库交互
=================
分模块开发
=================
src下建立
struts1.xml
struts2.xml
不同的开发人员,只需要写自己的xml配置文件
只需要加入到struts.xml中
<include file="struts1.xml"/>
<include file="struts2.xml"/>
----------------
struts1.xml
xml声明,DTD信息... 结构与struts.xml相同
<struts>
<package name="" ...>
...
...
...
----------------
struts2.xml
xml声明,DTD信息... 结构与struts.xml相同
<struts>
<package name="" ...>
...
...
...
================
模型驱动
================
**属性驱动**:表单的字段都作为Action的属性存在
**模型驱动**:用一个JavaBean来装载对象 类似于ActionForm
模型Bean
public class User {
private String username;
private String password;
private String repassword;
private int age;
private Date date;
// setter... getter...
}
### ValueStack ### --值栈
ModelDriven<T> 该接口使用的泛型,
模型是什么类型那个的泛型就是什么类型
------ T getModel()
Action 需要实现 ModelDriven接口
public class RigesterAction extends ActionSupport
implements ModelDriven<User> {
private User user = new User();
public User getModel() {
return user;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
====================
Preparable 接口
====================
Preparable接口中有一个void prepare() throws Exception方法,实现该接口的Action类,将在执行这个action所以方法之前执行prepare(),称为action准备方法。
=========================
显示特定的出错信息
=========================
<s:fielderror cssStyle="color:red">
<s:param>username</s:param>
</s:fielderror>
去掉前面的“原点”
需要自己修改 fielderror.ftl模板
去掉前面的点代码
分享到:
相关推荐
- **Preparable接口**:通过实现`Preparable`接口,可以在Action执行前进行预处理,例如加载数据库中的数据。 - **类型转换和验证**:Struts2支持自定义类型转换器,可以将用户输入的数据转换为所需的类型;同时还...
Action类需要继承自`org.apache.struts2.interceptor.FileUploadInterceptor`支持的接口,例如`Preparable`和`ModelDriven`。然后,定义一个或多个属性,它们将作为上传文件的载体。这些属性需要使用`@ultipartFile`...
- 如果Action实现了Preparable接口,它的prepare()方法会被调用。 - 拦截器链开始执行,每个拦截器按照顺序执行其doIntercept()方法。 - 最后,Action的execute()方法被调用,执行业务逻辑。 - 执行完成后,根据...
4. **Interceptor的实现**:如Preparable接口用于在Action执行前做预处理,Validation拦截器用于数据验证,Exception拦截器用于异常处理等。 5. **动态方法调用**:Struts2支持动态方法调用,这意味着Action方法...
这个类需要继承自`ActionSupport`并实现`Preparable`接口,以便在执行业务逻辑之前对上传的文件进行预处理: ```java import org.apache.struts2.interceptor.FileUploadInterceptor; import ...
同时,`Preparable`接口的`prepare()`方法可以在此阶段被调用,进行预处理。 5. **拦截器(Interceptor)**: 在Action执行之前,一系列的拦截器会按顺序执行。拦截器是Struts2的核心特性,可以实现AOP(面向切面...
但由于ValueStack中的值可能会丢失,你可以选择实现`Preparable`接口并在`prepare()`方法中重新初始化页面所需的数据。为了使`prepare()`方法能获取到表单提交的参数,需要在Action配置中添加`...
在Struts2中,`ModelDriven`接口用于实现MVC模式中的Model层。当一个Action类实现了`ModelDriven`接口后,它必须提供一个`getModel()`方法,该方法返回一个业务对象,这个对象将作为视图的数据模型。 例如: ```...
通过`<param>`标签,我们可以自定义拦截器的行为,比如`prepare.alwaysInvokePrepare`被设置为`false`,意味着只有当Action类中有`@Preparable`注解或者实现了`PrepareInterceptor`接口时,`PrepareInterceptor`才会...
接口或继承`org.apache.struts2.dispatcher.ng.ExecuteOperations`和`com.opensymphony.xwork2.Preparable`接口。 2. **配置文件**:Struts2使用XML配置文件(如struts.xml)来定义Action类、结果页面、拦截器等。...
7. **Preparable拦截器**:视频10详细阐述了Preparable接口和相关的拦截器,这些可以帮助在Action执行前进行预处理,比如初始化对象。 通过学习这些视频教程,开发者可以深入理解Struts 2.0的工作原理,提高开发...
本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...
1. **实现Preparable接口** - 实现步骤: - 在Action类中实现`Preparable`接口。 - 重写`prepare()`方法,在该方法中进行数据准备或其他预处理操作。 - 示例代码: ```java public class XxxAction extends ...
- **用途**:如果Action实现了`Preparable`接口,那么在Action执行之前,会先执行`prepare()`方法。这是一个非常有用的特性,可以在Action执行前做一些准备工作。 18. **Static Params (静态参数)** - **功能**...
`FileUploadAction`类需要实现Struts2的`Preparable`接口,以便在请求处理之前初始化对象。同时,我们需要一个成员变量来接收上传的文件,如`private File file;` 和对应的属性访问器。 3. **处理文件上传**: 在...
在Struts2中,数据验证可以通过实现ValidatorAware接口或使用Validation拦截器来完成。我们可以在Action类中定义验证规则,或者创建单独的校验文件。 接下来,我们讨论国际化。Struts2支持多语言环境,通过资源包...
- **PrepareInterceptor**:如果Action实现了Preparable接口,调用prepare方法。 - **StaticParametersInterceptor**:从配置文件中设置Action参数。 - **ScopeInterceptor**:管理Action的状态存储在session或...
- **Prepare Interceptor**:如果Action实现了`Preparable`接口,则调用Action类的`prepare`方法。 - **Scope Interceptor**:将Action状态存入session或application域的简便方法。 - **Servlet Config Interceptor*...
3. **值栈维护**:如果验证失败并需要返回到输入页面时,为了避免值栈中的数据丢失,可以实现`Preparable`接口并在`prepare()`方法中初始化需要的值。同时,需要在Action配置中添加`...