博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts请求参数注入的三种方式
阅读量:5946 次
发布时间:2019-06-19

本文共 2274 字,大约阅读时间需要 7 分钟。

、请求参数的注入

在Struts2框架中,表单的提交的数据会自动注入到与Action对象相对应的属性。它与Spring框架中的IoC的注入原理相同,通过Action对象为属性提供setter方法注入

要求:

jsp中表单的name属性与Action中对应的属性的setter方法对应。要注入属性值的Action对象,必须为该属性提供setXXX()方法,因为Struts2的内部实现是按照JavaBean规范中提供的setter方法,自动为属性注入值

所以一般在Action中注入的属性的属性名与表单对应控件的name值相等,且该属性提供getXXX()、setXXX()方法

 

域模型DomainModel

我们使用有相同点的属性都喜欢把它封装,这样比较结构化,简单明了。第一种方式注入请求参数在参数过多的情况下可能造成action中的代码过多

将一些属性信息封装成一个实体对象的属性。操作领域对象的方法,在Action对象中引用某一实体对象,并且http请求的参数值可以注入到实体对象的属性上,这种方式i就是struts2提供的DomainModel的方式

注意:使用域模型的时候,jsp中的表单空间的name属性应该与Action中的对象和bean中的属性对应,格式为 对象.属性 ,例如:user.name

public Class User{  private String name;  private String password;  private int age;  public void setName(String name){
this.name=name;} public String getName(){
return name;} public void setPassword(String password){
this.password=password;} public String getPassword(){
return password;} public void setAge(int age){
this.age=age;} public int getAge(){
return age;}}public Class UserAction extends ActionSupport{ private User user; public void setUser(User user){
this.user=user;} public User getUser(){
return User;} public String execute() throws Exception{ return "success"; }}
View Code

 

驱动模型ModelDriven

在域模型DomainModel中,虽然struts2的Action对象可以通过直接定义实例对象的引用来调用实体对象进行相关的操作,但要求的参数必须是指定参数对应的实体对象,例如上李忠需要指定参数名称为user.name这种形式,有点不方便

驱动模型不需要指定参数所属的对象引用。Struts2的API中,提供了一个名为ModelDriven的接口,Action对象可以通过实现此接口获取指定的实体对象,获取的方式是实现ModelDriven提供的getModel()方法进行获取,其语法格式为: T getModel();

注意:驱动模型必须实例化对象类型的那个成员变量,否则空指针错误

处理流程

Struts2实例化Action对象,判断Action对象是否实现ModelDriven接口,如果实例化了该接口,就会调用getModel()获得实体对象模型并将其返回。后面就可以直接使用该对象的属性了。

public Class User{  private String name;  private String password;  private int age;  public void setName(String name){
this.name=name;} public String getName(){
return name;} public void setPassword(String password){
this.password=password;} public String getPassword(){
return password;} public void setAge(int age){
this.age=age;} public int getAge(){
return age;}}public Class UserAction extends ActionSupport implements ModelDriven{ private User user; @Override public User getModel(){ return this.user; } public String execute() throws Exception{ return "success"; }}

 

转载地址:http://lcbxx.baihongyu.com/

你可能感兴趣的文章
linux安全---cacti+ntop监控
查看>>
鸟哥的linux私房菜-shell简单学习-1
查看>>
nagios配置监控的一些思路和工作流程
查看>>
通讯组基本管理任务三
查看>>
赫夫曼编码实现
查看>>
html页面显示div源代码
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
3D地图的定时高亮和点击事件(基于echarts)
查看>>
接口由40秒到200ms优化记录
查看>>
java 视频播放 多人及时弹幕技术 代码生成器 websocket springmvc mybatis SSM
查看>>
Activiti6.0,spring5,SSM,工作流引擎,OA
查看>>
使用Tooltip会出现一个问题,如果行上出现复选框
查看>>
禁止浏览器缓存js
查看>>
【Redis】安装PHP的redis驱动(二)
查看>>
什么是序列化,为什么要序列化
查看>>
Java保留小数点后有效数字
查看>>
C++中一些类和数据结构的大小的总结
查看>>
mysql开启binlog
查看>>
ctrl + z fg bg
查看>>
工作流引擎Oozie(一):workflow
查看>>