Struts 的Action讲解
Struts x Stuts 接口 必须继承orgapachestrutsactionAction或者其子类 无须继承任何类型或实现任何接口 表单数据 表单数据封装在FormBean中 表单数据包含在Action中通过Getter和Setter获取 structs中更多的像JAVABEAN实现一样的哦!虽然理论上Struts 的Action无须实现任何接口或继承任何类型但是我们为了方便实现Action大多数情况下都会继承comopensymphonyxworkActionSupport类并重载(Override)此类里的String execute()方法具体的实现 当请求HelloWorldaction发生时Struts运行时(Runtime)根据strutsxml里的Action映射集(Mapping)实例化tutoiralHelloWorld类并调用其execute方法 通过XML文件进行映射到一个Action类! SUCCESS在接口comopensymphonyxworkAction中定义另外同时定义的还有ERROR INPUT LOGIN NONE 所以在Excute 中会返回一个这样的值来的return ERROR ;程序无非就是输入操作和输出因此现在我们要讨论一下输入——表单输入 使用Struts 表单数据的输入将变得非常方便和普通的POJO一样在Action编写Getter和Setter然后在JSP的UI标志的name与其对应在提交表单到Action时我们就可以取得其值 在BEAN中将属性的名字与JSP中的属性名一样的话就可以通过GET SET来处理了!OK我刚写了一个登录的示例出来代码分析一下吧! 填写表单输入信息 <%@ taglib prefix=s uri=/strutstags %> <s:form action=HelloWorld method=POST> <s:textfield name=name label=User name/> <s:password name=password label=Password/> <s:submit value=Submit/> </s:form> 用到了UI标签的哦! 提交到一个Action的! <struts> <include file=strutsdefaultxml/> <package name=tutorial extends=strutsdefault> <action name=HelloWorld class=tutorialHelloWorld> <result>/HelloWorldjsp</result> </action> </package> </struts> 上面是一个XML配置文件! strutsxml <action name=HelloWorld class=tutorialHelloWorld> <result>/HelloWorldjsp</result> </action> 提交到这个Action了! 其实就是找到一个类文件中去! public class HelloWorld extends ActionSupport { 需要实现一个方法! 在HelloWorldjsp中只需要引用这个BEAN中的一个属性就可以了的! <h><s:property value=message /></h> 表示显示出来这个属性 《我明白了JAVABEAN中的属性的概念就是对应于JSP中的这个标签的哦!》 所以通过JAVABEAN不需要手工写setProperty方法的哦! 如果想与ResponseRequest对象打交道的 话怎么做呢? 在Strutx 你可以有两种方式获得这些对象非IoC(控制反转Inversion of Control)方式和IoC方式 非IoC方式
要获得上述对象关键Struts 中comopensymphonyxworkActionContext类我们可以通过它的静态方法getContext()获取当前Action的上下文对象 另外orgapachestrutsServletActionContext作为辅助类(Helper Class)可以帮助您快捷地获得这几个对象 <![if !supportLists]>o <![endif]>HttpServletRequest request = ServletActionContextgetRequest(); <![if !supportLists]>o <![endif]>HttpServletResponse response = ServletActionContextgetResponse(); <![if !supportLists]>o <![endif]>HttpSession session = requestgetSession(); 如果你只是想访问session的属性(Attribute)你也可以通过ActionContextgetContext()getSession()获取或添加session范围(Scoped)的对象 国际化Struct技术! |