电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

开源框架:Structs2.0入门学习(3)


发布日期:2018/7/28
 

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技术!

上一篇:轻松测试-学习如何简化测试外部资源

下一篇:一个相当经典的RMI实例源代码及详细说明