JAVAWEB开发之Struts2详解(二).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVAWEB开发之Struts2详解(二)

JAVAWEB开发之Struts2详解(二)——Action接受请求参数、类型转换器、使用Struts2的输入校验、以及遵守约定规则实现Struts2的零配置 Action接受请求参数 作为MVC框架,必须要负责解析HTTP请求参数,并将其封装到Model对象中 Struts2提供了非常强大的类型转换机制用于请求数据 到 model对象的封装 Struts2和MVC定义关系 StrutsPrepareAndExecuteFilter:控制器 在Struts2中action是什么?(Struts2是一个MVC框架) V:jsp M:action C:action StrutsPrepareAndExecuteFilter Struts2提供了三种数据封装方式: Action本身作为model对象,通过成员setter封装。(属于属性驱动) 创建独立model对象,页面通过ognl表达式封装。(属于属性驱动) 使用ModelDrivern接口,对请求数据进行封装。(属于模型驱动) 具体使用如下: 1.属性驱动 属性驱动方式(一):直接将action作为一个model,就可以得到请求参数 action类成员变量setter接收参数如下图所示: 问题1:action封装请求参数,会不会存在线程安全问题? 是不会的,因为每一次请求,都是一个新的action 优点:使用简单 缺点:需要单独定义JavaBean,将action中属性copy到JavaBean中(不能将Action作为model传给service层) 这种方式,底层是通过反射进行实现的。 属性驱动方式(二):创建一个单独的Model类,在action类中引用model作为成员变量。(页面使用ognl) 具体操作: 在action类中声明一个mdoel,private User user; 提供对应的setter和getter方法。 在页面上使用ognl来进行描述 input type=text name=user.username 如下图所示: 这种方式的优点:简单易使用,解决了第一种封装的问题。 缺点:在页面上使用了ognl表达式,页面不通用了。 问题:这种方式,数据是怎样封装的? 是通过Struts2中name为params的interceptor拦截器进行的数据封装(Struts的核心core包下struts-default.xml中定义)interceptor name=params class=erceptor.ParametersInterceptor/ 2.模型驱动(在开发中应用比较多) 模型驱动的步骤: 1.让action 类实现ModelDrivern接口。 2.重写getModel方法 3.在action中实例化一个model对象,让getModel方法返回这个对象。 public class Login3Action extends ActionSupport implements ModelDrivenUser { private User user = new User(); public User getModel() { return user; } } 如下图所示: 页面: username1:input type=text name=map[aaa].usernamebr password1:input type=password name=map[aaa].passwordbr username2:input type=text name=map[bbb].usernamebr password2:input type=password name=map[bbb].passwordbr action类: private MapString, User map; 提供get/set 示例: 1.将action作为model(属性驱动方式一) Login1Action [java] view plain copy 在CODE上查看代码片派生到我的代码片 span style=font-size:18px;package cn.itcast.action; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; // 获取请求参数 属性驱动 第一种,直接将action作为model public class Login1Action extends ActionS

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档