|
Struts 1.x |
Stuts 2.0 |
接口 |
必须继承org.apache.struts.action.Action或者其子类 |
无须继承任何类型或实现任何接口 |
表单数据 |
表单数据封装在FormBean中 |
表单数据包含在Action中,通过Getter和Setter获取 |
虽然,理论上 Struts 2.0 的 Action 无须实现任何接口或继承任何类型,但是,我们为了方便实现 Action ,大多数情况下都会继承 com.opensymphony.xwork2.ActionSupport 类,并重载( Override )此类里的 String execute() 方法。具体的实现
当请求 HelloWorld.action 发生时, Struts 运行时( Runtime )根据 struts.xml 里的 Action 映射集 (Mapping) ,实例化 tutoiral.HelloWorld 类,并调用其 execute 方法。
通过XML文件进行映射到一个Action类!
SUCCESS在接口com.opensymphony.xwork2.Action中定义,另外同时定义的还有ERROR, INPUT, LOGIN, NONE。
所以在Excute 中会返回一个这样的值来的return ERROR ;程序无非就是输入、操作和输出。因此,现在我们要讨论一下输入——表单输入。
使用Struts 2.0,表单数据的输入将变得非常方便,和普通的POJO一样在Action编写Getter和Setter,然后在JSP的UI标志的name与其对应,在提交表单到Action时,我们就可以取得其值。
在BEAN中将属性的名字与JSP中的属性名一样的话就可以通过GET SET来处理了!OK,我刚写了一个登录的示例出来代码分析一下吧!
1.填写表单输入信息
用到了UI标签的哦!
提交到一个Action的!
/HelloWorld.jsp
上面是一个XML配置文件!
struts.xml
/HelloWorld.jsp
提交到这个Action了!
其实就是找到一个类文件中去!
public class HelloWorld extends ActionSupport {
需要实现一个方法!
在HelloWorld.jsp中只需要引用这个BEAN中的一个属性就可以了的!
表示显示出来这个属性
《我明白了JAVABEAN中的属性的概念就是对应于JSP中的这个标签的哦!》
所以通过JAVABEAN不需要手工写setProperty方法的哦!
如果想与Response,Request对象打交道的 话怎么做呢?
在Strutx 2.0你可以有两种方式获得这些对象:非IoC(控制反转Inversion of Control)方式和IoC方式。
- 非IoC方式
要获得上述对象,关键Struts 2.0中com.opensymphony.xwork2.ActionContext类。我们可以通过它的静态方法getContext()获取当前Action的上下文对象。 另外,org.apache.struts2.ServletActionContext作为辅助类(Helper Class),可以帮助您快捷地获得这几个对象。
o                             HttpServletRequest request = ServletActionContext.getRequest();
o                             HttpServletResponse response = ServletActionContext.getResponse();
o                             HttpSession session = request.getSession();
如果你只是想访问session的属性(Attribute),你也可以通过ActionContext.getContext().getSession()获取或添加session范围(Scoped)的对象。
国际化Struct2.0技术!