Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6642996
  • 博文数量: 915
  • 博客积分: 17977
  • 博客等级: 上将
  • 技术积分: 8846
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-26 09:59
个人简介

一个好老好老的老程序员了。

文章分类

全部博文(915)

文章存档

2022年(9)

2021年(13)

2020年(10)

2019年(40)

2018年(88)

2017年(130)

2015年(5)

2014年(12)

2013年(41)

2012年(36)

2011年(272)

2010年(1)

2009年(53)

2008年(65)

2007年(47)

2006年(81)

2005年(12)

分类: Java

2011-09-28 22:28:28

Struts 2.0Action讲解

 

Struts 1.x

Stuts 2.0

接口

必须继承org.apache.struts.action.Action或者其子类

无须继承任何类型或实现任何接口

表单数据

表单数据封装在FormBean

表单数据包含在Action中,通过GetterSetter获取

structs2.0中更多的像JAVABEAN实现一样的哦!
虽然,理论上Struts 2.0Action无须实现任何接口或继承任何类型,但是,我们为了方便实现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编写GetterSetter,然后在JSPUI标志的name与其对应,在提交表单到Action时,我们就可以取得其值。

在BEAN中将属性的名字与JSP中的属性名一样的话就可以通过GET SET来处理了!

OK,我刚写了一个登录的示例出来代码分析一下吧!
1.填写表单输入信息
<%@ taglib prefix="s" uri="/struts-tags" %>





用到了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方式。

  1. IoC方式

要获得上述对象,关键Struts 2.0类。我们可以通过它的静态方法getContext()获取当前Action的上下文对象。 另外,作为辅助类(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技术!
阅读(2866) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~