网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> Java编程 >> 文章正文
  Struts2学习(四):Action执行的时候发生了什么            【字体:
Struts2学习(四):Action执行的时候发生了什么
作者:佚名    文章来源:不详    点击数:    更新时间:2007-9-2    
 

通过前面的学习,对Struts2的工作流程大致有了一个了解,如下图所示:

 

请求页面(view)

FilterDispatcher(对请求进行分流)

Action(处理请求,完成业务逻辑)

结果页面(view)

发送请求

返回响应

请求页面(view)

FilterDispatcher(对请求进行分流)

Action(处理请求,完成业务逻辑)

结果页面(view)

发送请求

返回响应

上图中的“分流”是指根据我们所请求的urlrequest交给某个指定的action来处理。
正在装载数据……
那么在这个
FilterDispatcher中还有一些什么操作呢?在Struts1中我们经常要把一个ActionForm和一个Action相关联,ActionForm中封装了表单的所有值,并且这些都是在ActionServlet中完成的,因此我们在action中可以直接通过ActionForm得到表当中的值,那么Struts2中又是怎么做的呢?我们怎么取得那些值呢?我发现可以这么做:对表单中每一个要获取的值,在action中相应添加这样的一个域,然后再设置相应的setget方法,即采用javabean风格,貌似这个现在比较流行。比方说在前面的例子中,在sayHello.jsp的表单中有一个文本域,它的name=”name”,在我的action文件HelloWorld.java中有一个域private String name;同时还分别设置了相应的setNamegetName方法,现在我把setName方法改为如下:

public void setName(String name) {

       System.out.println("name:"+name);     

this.name = name;

}

OK,在浏览器中输入http://localhost:8888/Struts/sayHello.jsp,这时我们发现后台打印出了name:CMTobbyCMTobby是我输入的name的值,这说明setName方法被执行了,奇怪啊,我们根本没有显式的调用这个方法啊,它是什么时候调用的呢?现在我们在setName方法里面设置一个断点,然后再在execute方法里面设置一个断点,再次运行我们的程序,结果显示setName方法在execute方法前面执行。

接着,无聊的我又做了一些测试:

1.把setName改为setName1,结果页面输出:Hello null,并且setName1为执行

2.在sayHello.jspform之外加了一个文本框,取名address,在HelloWorld中增加相应的域addresssetAddress方法和getAddress方法,通过断点测试发现,setAddress方法不会执行。

基于以上测试,我认为在执行action的操作之前,首先会根据请求页面的form表当中所包含的参数来调用action中相应的set****方法,比如说,本例中,form中有name属性,因此会在执行execute之情调用setName方法,而address因为不在form中所以不会调用setAddress方法,这个机制是不是和我们前面所讨论的BeanUtilscopyProperties方法很像,实际上很多ORM框架都采用的这个机制,都是首先得到属性名再调用相应的set或者get方法,而不是直接访问的域。




本文来源:http://blog.csdn.net/CMTobby/archive/2007/07/26/1710368.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     用java实现web服务器
     用java快速开发linux gu…
     正则表达式分解siemens交…
     [portal参考手册]目录
     jsp中调用oracle存储过程…
  • page、request、session、ap…

  • JSF 的性能远不及 JSP 或 St…

  • Struts2学习:在struts2中集…

  • SPRING+STRUTS+HIBERNATE登录…

  • JSP标准模板库(JSTL)入门教…

  • 搭建JSTL运行环境

  • struts多附件上传

  • JavaWeb中的Session、Sessio…

  • struts异常_does not start …

  • 进程防杀与屏蔽WIN 、alt+ta…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David