您的位置:首页 > 编程语言 > Java开发

Struts2中PreResultListener的简单示例

2013-08-18 00:39 375 查看
PreResultListener是一个监听器接口,它可以在Action完成控制处理之后,系统转入实际的物理视图之前被回调。Struts2应用中可以在Action或拦截器添加PreResultListener监听器,添加监听器通过ActionInvocation的addPreResultListener方法完成。一旦为Action添加了PreResultListener监听器,该监听器就可以在应用转入实际物理视图之前回调该监听器的beforeResult方法;一旦为拦截器添加了PreResultListener监听器,该监听器会对该拦截器所拦截的Action都起作用。

编写一个简单示例,为HelloAction添加一个PreResultListener监听器:

package com.huey.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.PreResultListener;

/**
* @version 2013-08-18
* @author huey2672
*
*/
public class HelloAction extends ActionSupport {

/**
*
*/
private static final long serialVersionUID = 3374986591581506345L;

@Override
public String execute() throws Exception {
// 添加PreResultListener监听器
ActionContext.getContext().getActionInvocation().
addPreResultListener(new PreResultListener() {
/**
* @param invocation
* @param result 获得返回的逻辑视图
*/
@Override
public void beforeResult(ActionInvocation invocation, String result) {
// 打印返回的逻辑视图
System.out.println("返回的逻辑视图为:" + result);
// 在返回到物理视图之前,为其添加一个新的Action属性
invocation.getInvocationContext().put("name", "Huey");
}
});

// Action的处理控制
System.out.println("在这里忙些什么……");

return SUCCESS;
}
}
编写配置文件struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="hello" extends="struts-default">
<action name="helloAction" class="com.huey.action.HelloAction" >
<result name="success">welcome.jsp</result>
</action>
</package>
</struts>
再编写视图资源welcome.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Welcome</title>
</head>
<body>
Hello, <s:property value="name"/>!
</body>
</html>
在浏览器中键入http://localhost:8080/PreResultListenerDemo/helloAction(PreResultListenerDemo是项目名),在控制台中将打印如下语句:

在这里忙些什么……
返回的逻辑视图为:success
在welcome.jsp页面中输出:

Hello, Huey!
PreResultListener可以监听制定Action跳转到不同Result的细节,所以可以用来作为日志的 实现方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: