Struts2笔记——3.配置处理结果

action只是一个控制器,真正为客户端呈现处理结果的是jsp文件。而action的工作,是要在xml中配置,在特定的情况下返回特定的jsp页面。action的java类中返回的是String类型,而它仅仅是一个逻辑处理结果,或者说它只是一个代号。只有在xml中配置了逻辑结果与物理结果的映射关系,jsp页面才会作为response呈现。其实Struts2支持多种结果映射,因此物理结果资源可以是jsp,也可以是另一个action链中的另一个action。result元素起到了一个路标的作用。


配置结果

在struts.xml中的action下使用众多result子元素来配置结果,它的name属性就是逻辑结果(也就是action的方法中返回的字符串)。标准写法如下:

<action name="login">
	<result name="success" type="dispatcher">
		<param name="location">/WEB-INF/welcome.jsp</param>
	</result>
</action>

默认的type就是dispatcher,也就是转发;默认的name是success。因为通常无需指定param,所以一般只需这样写:

<result name="success">/WEB-INF/welcome.jsp</result>

可以使用通配符来指定result的不同url。可以在package中设置全局结果。

<global-results>
	<result>/WEB-INF/global.jsp</result>
</global-results>


各种result结果类型

result不仅可以调取对应的视图资源,也可以指定其他类型的资源。常用的type有plainText、redirect、redirectAction。

plainText可以将结果视图资源当成resource code输出。

redirect相当于重定向到某一个视图资源。

redirectAction可以重新生成一个新的请求,跳转到另一个action。

<result name="resultname" type="redirectAction">
	<param name="actionName">another</param>
	<param name="namespace">/others</param>
</result>

<result name="error" type="redirectAction">another</result>

第一种配置方式可以转发到其它命名空间的action。第二种直接转到相同空间的action。

PreResultListener

这个监听接口可以在action完成控制后,转入result视图前被回调,监听器的beforeResult方法会被调用。在action的处理方法中添加如下代码:

 ActionInvocation invocation=ActionContext.getContext().getActionInvocation();
	invocation.addPreResultListener(new PreResultListener(){
		public void beforeResult(ActionInvocation arg0, String arg1) {
			System.out.println("我是监听的处理代码");
			}
		});

添加监听器通过ActionInvocation的addPreResultListener方法完成。这个监听器可以添加给action,也可以添加给拦截器,使之对它所拦截的所有action有效。
beforResult方法中的arg1参数指的是逻辑视图的名字,success或者是error。

动态结果

有两种实现动态结果的方式。第一种是通过通配符,action的name决定了跳转的result page的名字。第二种是使用OGNL表达式,直接使用${ }来输出属性名,由属性名决定视图资源的名称。

时间: 2024-08-29 01:15:01

Struts2笔记——3.配置处理结果的相关文章

Struts2笔记——1.常规配置

Struts2应用的开发步骤 导入必要的包 通过MyEclipse对项目导入Struts2包,一般只需要导入core这个包就可以.如果要想手动导入,则需要将commons-logging, freemarker, ognl, struts2-core, xwork-core, commons-fileupload, jacassist, commons-long3这几个包复制到web-inf下的lib文件夹下.或者直接使用MyEclipse自带的增加Struts2的capacities的方法,选

struts2 通配符简化配置

在struts映射中重复出现的模式 动作方法 描述 下一个动作方法 add 为save准备网页 save save 提交INSERT list edit 为update准备网页 update update 提交UPDATE list destroy 为remove准备网页 remove remove 提交DELETE list show 为详细展示准备网页 list list 为列表展示准备网页 list print 为打印准备网页 list 一个动作类的DEMO: package com.ba

JAVAWEB开发之Struts2详解(二)——Action接受请求参数、类型转换器、使用Struts2的输入校验、以及遵守约定规则实现Struts2的零配置

Action接受请求参数 作为MVC框架,必须要负责解析HTTP请求参数,并将其封装到Model对象中 Struts2提供了非常强大的类型转换机制用于请求数据 到 model对象的封装 Struts2和MVC定义关系 StrutsPrepareAndExecuteFilter:控制器 在Struts2中action是什么?(Struts2是一个MVC框架) V:jsp M:action C:action StrutsPrepareAndExecuteFilter Struts2提供了三种数据封装

Struts2之环境配置

在学习struts2之前,首先我们要明白使用struts2的目的是什么?它能给我们带来什么样的好处? 设计目标 Struts设计的第一目标就是使MVC模式应用于web程序设计.在这儿MVC模式的好处就不在提了. 技术优势 Struts2有两方面的技术优势,一是所有的Struts2应用程序都是基于client/server HTTP交换协议,The JavaServlet API揭示了Java Servlet只是Java API的一个很小子集,这样我们可以在业务逻辑部分使用功能强大的Java语言进

Struts2的通配符配置方式

Struts2的Action类很有意思,你可以使用3种方式来实现具体的Action类: 让你的Action类继承自ActionSupport类(项目中最常用这种方式,因为ActionSupport类中定义了很多帮助方法) 让你的Action类实现Action接口 使用POJO的方式来实现,只要Action类中有一个返回值为String的execute方法就好了(这种方式使Action类最容易被测试) 以上三种Action的实现方式都可以被struts2框架自动识别,如果你在struts.xml里

EasyARM i.mx28学习笔记——minicom配置和使用

0 前言 在windows中有很多串口调试软件,例如putty.而ubuntu中也有很多串口调试软件,其中最简单实用的便是minicom了. 本文说明虚拟机中如何使用minicom进行串口调试,具体内容包括虚拟机中载入USB设备,查看USB设备是否存在,minicom端口号,波特率等配置. 为了在虚拟机更好的进行嵌入式Linux开发,建议安装Vmware Tool,这样便可方便的在虚拟机和主机中复制粘贴文件. [Linux学习笔记--虚拟机中安装VMware Tools] 1 在虚拟机中载入设备

STM32学习笔记3-IO配置输入输出

STM32的IO配置时没什么特殊的,有个注意点就是实用IO前需要先打开其时钟线,以下是验证过oK的程序: RCC->APB2ENR|=GpioBApb2enrEn; //使能PORTB时钟 GPIOB->CRL&=GpioBitClrM5_13; // IO的模式清零 GPIOB->CRL|=GpioBit5PP;//PB.5 推挽输出 GPIOB->ODR|=1<<5; //PB.5 输出高 RCC->APB2ENR|=GpioEApb2enrEn; /

Struts2搭建、配置详解

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互.Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大.Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够

django学习笔记--环境配置--mysql配置

一.mysql安装配置 1.fedroa19 -- yum安装myusql: mysql database(选择匹配的ferora版本): mysql-community-server-5.6.19-1.fc19.x86_64,依赖包会自动安装: 自动安装的内容大致包括: a.下载mysql包及其依赖包,并安装: b.创建mysql用户和mysql组: c.初始化mysql的DB,建立基本的表: 最终应该是安装下列5个相关包: mysql-community-libs-5.6.19-1.fc19