struts2自主学习之动态方法调用,使用method属性,配置Result,结果类型

在包含的文件中依然可以使用struts元素,include等元素,
如果struts.xml文件元素比较少,就不需要使用include元素。


动态方法调用

在什么情况下使用:

在业务逻辑处理action中,可以包含一个或者多个
逻辑处理方法。
例如JSP文件中的同一个form表单有多个提交表单值得按钮,
当用户通过不同的按钮提交表单时,需要调用action中的不同处理方法,
这时就可以使用动态方法调用。
在使用动态方法时,提交请求的action属性值必须
符合下面的格式
action="action名称!方法名称"
或者action="action名称!方法名称.action"

使用method属性

除了name属性和class属性以外,配置action时还可以使用method属性
例如:
<action name="action名称" class="包名.action类名" method="方法名称">
    <result>视图URL</result>
</action>

method属性值的默认属性是execute。


配置Result
结果映射
业务控制器action负责处理用户请求,但是它不能提供对用户的直接响应,当action处理完请求信息后,需要根据Result
结果配置,将action的处理结果对应到相应的视图。
使用<result>元素配置结果映射的标准配置形式如下:
<action name="addBook" class="action.AddBook">
    <result name="success" type="dispatcher">
        <param name="location">/allBook.jsp</param>
    </result>
</action>
简化为如下内容:
<action name="addBook" class="action.AddBook">
    <result>/allBook.jsp</result>
</action>


Result配置分类
局部result定义在<action>元素中,作用范围是这个action,这时<result>元素是<action>
元素的子元素。例如:
<action name="addBook" class="action.AddBook">
    <result>/addSuccess.jsp</result>
</action>
全局result定义在<package>的<global-results>元素下,作用范围是整个包,这时<result>
元素是<global-results>元素的子元素。
例如:
<global-results>
    <result name="error">/error.jsp</result>
</global-results>
<action name="addBook" class="action.AddBook">
    <result>/addSuccess.jsp</result>
</action>
如果相应的错误视图界面,在所有或者大部分action类起作用,就定义为全局Result配置


结果类型

chain        用于action链式处理
dispatcher    用于整合jsp,是<result>元素的默认的类型
freemarker    用于整合FreeMarker
httpheader    用于处理特殊的HTTP行为
redirect    用来重定向到其他文件
redirectAction    用来重定向到其他的action
stream        用来向浏览器返回一个InputStream
velocity    用来整合Velocity
xslt        用来整合xml/xslt
plainText    用来显示页面的原始代码


Stream结果类型
stream表示流,这种结果类型通常用于实现用户下载文件的action配置中。在配置stream结果类型
时,可以指定以下几个参数:
contentType    用来指定传递给浏览器的stream类型,默认值为text/plain
contentLength    指定数据流的字节长度
contentDispositon指定文件下载的处理方式,包括内联(inline)和附件(attchment)这两种方式。
内联方式表示浏览器会尝试直接显示文件,附件方式会弹出文件保持对话框。默认值为inline
inputName    表示数据流属性,默认值为inputStream
bufferName    表示缓冲区容量,默认值为1024


chain结果类型
<package name="myPackage1" extends="struts-defult">
    <action name="test1" class="action.Test1">
        <result type="chain">test2</result>
    </action>
    <action name="test2" class="action.Test2">
        <result type="chain">
            <param name="actionName">test3</param>
            <param name="namespace">/namespace2</param>
        </result>
    </action>
</package>
<package name="myPackage2" extends="struts-defult" namespace="/namespace2">
    <action name="test3" class="action.Test3">
        <result name="success">/success.jsp</result>
    </action>
</package>

dispatcher结果类型

redirect结果类型
为了解决重复提交表单信息!!!
redirect结果类型用来"重定向"到指定的结果资源,该资源可以是jap文件,也可以是action类。
使用redirect结果类型时,系统将调用HttpServletResponse的sendRedirect()方法,实现重定向
到其他文件。
redirect结果类型和dispatcher类型相对应。dispatcher类型表示将请求转发到其他资源,而redirect类型是
重定向到其他资源。
转发可以将用户请求信息保留。而重定向不能保留用户请求。
应用:
<result type="redirect">/testSuccess.jsp</result>



猜你喜欢

转载自blog.csdn.net/leo_libin/article/details/70176375