关于Struts2的一点理解
今天下午在公司也没什么事做,就看看关于Struts2的内容,这个是笔记也是个人的一点理解,因为我一直觉得它跟.net MVC很像
所以就看了看,理解的很不准确,但有助于我的理解,不费话,把自己记的几个要点贴上:
1.在引用struts页面中要加入<%@ taglib prefix="s" uri="/struts-tags"%> 这个我理解是不是引用了以后,页面就有了一个与struts2关于的属性,然后就可以用struts了。是不是很像.net中的Iview
2.Controller ---即继承了ActionSupport的一个类,它是根据配置文件中class属性所指的对象注册到系统中的
3.在请求的路由即struts.xml文件和ActionSupport之间有一个控制器(现在还没研究到那),它把页面的用“S”标签相关的内容在访问action的时候通过其上面的set*()方法赋值。而这些数据就是从httprequest中来。而在把数据呈现在jsp中页面的时候,把action中用get*的字段填充到httprequest中s.property从request中获取数据
4.在整个过程中,系统会对可能出现的接口(或去配置中查找注册的接口)进行判断,如果有实现就去执行相应诉方法
5.关于在action中执行excute以外的方法,就必须<s:submit />的method="方法名"系统会通过反射(或者类似行为)去执行该方法。或者用url="action!method.action"或者在<action/>中指明默认方法
6.<s:property>中添加数据用两种方式。<1>让action继承servletRequestAware接口,获取到httpRequest后,在它的属性中添加数据setAttribute()<2>在act on中直接添加属性,该属性必须要用get*()方法才可能拿到数据。也就是说整个action都被添加到httpRequest 中
7.在action中无法直接访问到httprequest对象,所以要实现 ServletRequestAware接口才可以拿到request。
8.<action />中设置方法可以用通配符如:<action name="*Crud" class="example.Crue" method="{1}">
9.<action name="*"><result>/example/{1}.jsp</result></action>
此句的意思是,如果在没有找到匹配的 action 名称的情况下,默认调用 action 名称.jsp。第一句
中星号指任意,而第二句中{1}指代第一句中星号指代的内容。