`
SIHAIloveYAN
  • 浏览: 119971 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

struts2教程(3)--请求参数处理

 
阅读更多

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" />


二、封装数据到CollectionMap

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;

}

} 


分享到:
评论

相关推荐

    STRUTS2 教程 --希望能够对大家有所帮助

    你可以设置方法映射,让不同的请求参数调用Action的不同方法。 5. **结果类型**:Struts2支持多种结果类型,如dispatcher(用于转发到JSP页面)、stream(用于下载文件)等。结果可以通过`&lt;result&gt;`标签配置。 6. ...

    Struts2视频教程

    了解如何编写Action类、设置其属性以及处理请求参数至关重要。 - **Result配置**:Result用于指定Action执行后的结果页面或执行其他操作的方式,如重定向、转发等。 #### 三、Struts2高级特性 - **OGNL表达式语言*...

    Struts---------教程.rar

    3. 创建ActionForm实例,将请求参数填充到表单对象中。 4. 调用Action类的execute方法,执行业务逻辑。 5. Action返回一个ActionForward对象,指示控制器向哪个页面转发或重定向。 6. 控制器依据ActionForward,将...

    Struts2入门教程-162页.pdf

    Struts2的架构由DispatcherServlet(前端控制器)负责接收请求,然后通过ActionMapper确定处理请求的Action,Action再通过ValueStack与视图进行数据交互。 3.2 struts2配置文件 配置文件通常为struts.xml,用于定义...

    Struts2返回json -- demo

    3. **处理请求参数**:如果需要从请求中获取参数,Struts2提供了`params`拦截器,它可以自动将请求参数绑定到Action类的属性上。 4. **JSON插件配置**:在`struts.properties`或`struts.xml`中启用JSON插件: ```...

    Max的Struts2教程

    3. **拦截器**:Struts2中的拦截器是AOP(面向切面编程)的概念,它们在Action调用前后执行,提供如日志记录、权限检查、事务管理等功能。开发者可以自定义拦截器并将其插入到默认的拦截器栈中。 4. **结果类型**:...

    张龙圣思园struts2学习笔记word

    Struts2是MVC(Model-View-Controller)设计模式的一种实现,它通过拦截器(Interceptor)机制实现了灵活的业务逻辑处理。控制器负责接收用户请求,解析并转发到相应的业务逻辑,模型层处理业务,视图则负责展示结果...

    Struts2中文(MAX教程)-chm格式

    首先,教程可能会介绍Struts2的基本概念,包括它如何通过Action类处理HTTP请求,以及如何将这些请求映射到特定业务逻辑。Action类是Struts2的核心组件,负责接收请求、执行业务逻辑并返回结果到视图。它通过配置文件...

    传智播客struts2教程

    在提供的压缩包文件中,"21_传智播客struts2.1视频教程_输入校验的流程.rar"很可能包含了关于如何实现Struts2输入校验的具体步骤和示例,包括创建校验规则、处理校验失败的场景等内容。"20_传智播客struts2.1视频...

    struts-2.1.8jar包

    7. **类型转换**:Struts 2提供自动类型转换功能,能够将请求参数自动转换为Action字段的类型,减少了手动类型转换的工作。 在Struts 2.1.8这个版本中,可能包含以下组件和改进: 1. **安全修复**:Struts 2.1.8...

    Struts2-spring-ibatis 整合及存储过程分页

    1. Struts2:作为Action层框架,它负责接收HTTP请求,处理业务逻辑,并转发到相应的视图。Struts2提供了强大的拦截器机制,可实现灵活的AOP(面向切面编程)和验证功能。 2. Spring:这是一个全面的后端开发框架,...

    Struts2教程.chm,Struts2教程.chm

    - Struts2的核心是Action和Result,通过ActionMapper和ActionProxy实现请求到Action的映射,然后由Result将处理结果导向视图。 2. **MVC模式** - MVC模式是软件设计中的一个重要概念,Struts2实现了这一模式,...

    Struts2的视频学习代码

    8. **Action上下文(ActionContext)**:ActionContext是Struts2中保存请求和会话数据的上下文对象,包含了请求参数、session数据等,可以用来在Action间共享数据。 9. **Struts2与Spring集成**:Struts2可以方便地...

    struts2教程源代码

    5. **动态方法调用**:Struts2支持动态方法调用,这意味着Action方法名可以从请求参数中动态获取,提高了代码的灵活性。 6. **国际化和本地化**:Struts2提供内置的支持来处理多语言环境,你可以通过例子学习如何...

    Struts2教学视频

    Struts2支持Action的动态方法调用,允许Action类根据请求参数动态选择要执行的方法,而无需预先在struts.xml中硬编码。 **八、Action通配符(wildcard)的配置** 通配符配置允许为一组相似的Action定义一个通用配置,...

    教程_Struts2教程

    3. **拦截器**:拦截器是Struts2的重要特性,它们在Action调用前后执行,可以实现如日志记录、权限检查、数据校验等常见功能。常见的拦截器有Params(参数解析)、Validation(验证)、Exception(异常处理)等。 4...

    Struts2教程DOC版

    2. **Action Mapping**:Action Mapping负责映射请求到特定的Action实例,基于请求参数和配置信息决定Action的执行。 3. **Interceptor(拦截器)**:拦截器是Struts2的一大特色,它允许在Action执行前后插入自定义...

    struts2 教程 讲义.(pdf)

    3. **配置文件**:Struts2使用struts.xml配置文件来设定应用程序的行为。在这里,你可以定义Action、结果类型、拦截器栈等。XML配置提供了灵活性,但也可以选择使用注解进行配置,使代码更简洁。 4. **拦截器...

    struts2官方教程

    Struts2提供了一些内置拦截器,如params预处理请求参数,exception处理异常,i18n处理国际化等。 六、OGNL表达式语言 OGNL(Object-Graph Navigation Language)是Struts2的默认表达式语言,用于在Action对象和视图...

Global site tag (gtag.js) - Google Analytics