Action处理请求参数
struts2 和 MVC定义关系
StrutsPrepareAndExecuteFilter : 控制器
JSP : 视图
Action : 可以作为模型,也可以是控制器
struts2 Action 接受请求参数 :属性驱动 和 模型驱动
一、Action处理请求参数三种方式
第一种
:Action 本身作为model对象,通过成员setter封装
(属性驱动 )
页面:
用户名 <input type="text" name="username" /> <br/>
Action :
public class RegistAction1 extends ActionSupport {
private String username;
public void setUsername(String username) {
this.username = username;
}
}
问题一: Action封装数据,会不会有线程问题 ?
* struts2 Action 是多实例 ,为了在Action封装数据 (struts1 Action是单例的
)
问题二:
在使用第一种数据封装方式,数据封装到Action属性中,不可能将Action对象传递给 业务层
* 需要再定义单独JavaBean,将Action属性封装到JavaBean
第二种
:创建独立model对象,页面通过ognl表达式封装 (属性驱动)
页面:
用户名 <input type="text" name="user.username" /> <br/> ----- 基于OGNL表达式的写法
Action:
public class RegistAction2 extends ActionSupport {
private User user;
public void setUser(User user) {
this.user = user;
}
public User getUser() {
return user;
}
}
问题: 谁来完成的参数封装
<interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
第三种:使用ModelDriven接口,对请求数据进行封装 (模型驱动 )-----
主流
页面:
用户名 <input type="text" name="username" /> <br/>
Action :
public class RegistAction3 extends ActionSupport implements ModelDriven<User> {
private User user = new User(); // 必须手动实例化
public User getModel() {
return user;
}
}
struts2 有很多围绕模型驱动的特性
<interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/>为模型驱动提供了更多特性
总结:
对比第二种、第三种 :第三种只能在Action中指定一个model对象,第二种可以在Action中定义多个model对象
<input type="text" name="user.username" />
<input type="text" name="product.info" />
二、封装数据到Collection和Map
1) 封装数据到Collection对象
页面:
产品名称 <input type="text" name="products[0].name" /><br/>
Action :
public class ProductAction extends ActionSupport {
private List<Product> products;
public List<Product> getProducts() {
return products;
}
public void setProducts(List<Product> products) {
this.products = products;
}
}
2) 封装数据到Map对象
页面:
产品名称 <input type="text" name="map['one'].name" /><br/> ======= one是map的键值
Action :
public class ProductAction2 extends ActionSupport {
private Map<String, Product> map;
public Map<String, Product> getMap() {
return map;
}
public void setMap(Map<String, Product> map) {
this.map = map;
}
}
分享到:
相关推荐
你可以设置方法映射,让不同的请求参数调用Action的不同方法。 5. **结果类型**:Struts2支持多种结果类型,如dispatcher(用于转发到JSP页面)、stream(用于下载文件)等。结果可以通过`<result>`标签配置。 6. ...
了解如何编写Action类、设置其属性以及处理请求参数至关重要。 - **Result配置**:Result用于指定Action执行后的结果页面或执行其他操作的方式,如重定向、转发等。 #### 三、Struts2高级特性 - **OGNL表达式语言*...
3. 创建ActionForm实例,将请求参数填充到表单对象中。 4. 调用Action类的execute方法,执行业务逻辑。 5. Action返回一个ActionForward对象,指示控制器向哪个页面转发或重定向。 6. 控制器依据ActionForward,将...
Struts2的架构由DispatcherServlet(前端控制器)负责接收请求,然后通过ActionMapper确定处理请求的Action,Action再通过ValueStack与视图进行数据交互。 3.2 struts2配置文件 配置文件通常为struts.xml,用于定义...
3. **处理请求参数**:如果需要从请求中获取参数,Struts2提供了`params`拦截器,它可以自动将请求参数绑定到Action类的属性上。 4. **JSON插件配置**:在`struts.properties`或`struts.xml`中启用JSON插件: ```...
3. **拦截器**:Struts2中的拦截器是AOP(面向切面编程)的概念,它们在Action调用前后执行,提供如日志记录、权限检查、事务管理等功能。开发者可以自定义拦截器并将其插入到默认的拦截器栈中。 4. **结果类型**:...
Struts2是MVC(Model-View-Controller)设计模式的一种实现,它通过拦截器(Interceptor)机制实现了灵活的业务逻辑处理。控制器负责接收用户请求,解析并转发到相应的业务逻辑,模型层处理业务,视图则负责展示结果...
首先,教程可能会介绍Struts2的基本概念,包括它如何通过Action类处理HTTP请求,以及如何将这些请求映射到特定业务逻辑。Action类是Struts2的核心组件,负责接收请求、执行业务逻辑并返回结果到视图。它通过配置文件...
在提供的压缩包文件中,"21_传智播客struts2.1视频教程_输入校验的流程.rar"很可能包含了关于如何实现Struts2输入校验的具体步骤和示例,包括创建校验规则、处理校验失败的场景等内容。"20_传智播客struts2.1视频...
7. **类型转换**:Struts 2提供自动类型转换功能,能够将请求参数自动转换为Action字段的类型,减少了手动类型转换的工作。 在Struts 2.1.8这个版本中,可能包含以下组件和改进: 1. **安全修复**:Struts 2.1.8...
1. Struts2:作为Action层框架,它负责接收HTTP请求,处理业务逻辑,并转发到相应的视图。Struts2提供了强大的拦截器机制,可实现灵活的AOP(面向切面编程)和验证功能。 2. Spring:这是一个全面的后端开发框架,...
- Struts2的核心是Action和Result,通过ActionMapper和ActionProxy实现请求到Action的映射,然后由Result将处理结果导向视图。 2. **MVC模式** - MVC模式是软件设计中的一个重要概念,Struts2实现了这一模式,...
8. **Action上下文(ActionContext)**:ActionContext是Struts2中保存请求和会话数据的上下文对象,包含了请求参数、session数据等,可以用来在Action间共享数据。 9. **Struts2与Spring集成**:Struts2可以方便地...
5. **动态方法调用**:Struts2支持动态方法调用,这意味着Action方法名可以从请求参数中动态获取,提高了代码的灵活性。 6. **国际化和本地化**:Struts2提供内置的支持来处理多语言环境,你可以通过例子学习如何...
Struts2支持Action的动态方法调用,允许Action类根据请求参数动态选择要执行的方法,而无需预先在struts.xml中硬编码。 **八、Action通配符(wildcard)的配置** 通配符配置允许为一组相似的Action定义一个通用配置,...
3. **拦截器**:拦截器是Struts2的重要特性,它们在Action调用前后执行,可以实现如日志记录、权限检查、数据校验等常见功能。常见的拦截器有Params(参数解析)、Validation(验证)、Exception(异常处理)等。 4...
2. **Action Mapping**:Action Mapping负责映射请求到特定的Action实例,基于请求参数和配置信息决定Action的执行。 3. **Interceptor(拦截器)**:拦截器是Struts2的一大特色,它允许在Action执行前后插入自定义...
3. **配置文件**:Struts2使用struts.xml配置文件来设定应用程序的行为。在这里,你可以定义Action、结果类型、拦截器栈等。XML配置提供了灵活性,但也可以选择使用注解进行配置,使代码更简洁。 4. **拦截器...
Struts2提供了一些内置拦截器,如params预处理请求参数,exception处理异常,i18n处理国际化等。 六、OGNL表达式语言 OGNL(Object-Graph Navigation Language)是Struts2的默认表达式语言,用于在Action对象和视图...