十、Struts2结果集
十、Struts2结果集
|
|
1、Struts.xml配置文件
result元素:指定动作类的动作方法执行完后的结果视图.
属性:
name:字符串,与动作方法返回的值一致。默认是success
type:指定处理结果的结果类型的别名。(struts-default.xml有定义)。默认值是dispatcher
2、局部和全局结果视图
|
public @Override public String execute() { // 输入你好到页面上面去
// 把显示内容的代码写在这里
//配置文件根据返回的字符串,转发到对应的jsp页面 return }
public String execute2() { return
} } |
|
<package <!--全局结果视图:包中所有的action都能使用同一个视图 --> <global-results> <result </global-results> <action method="execute"> <!--局部结果视图:配置在了action的内部 --> <result </action>
<action method="execute2" </package> |
3、补充知识:动作类的生命周期
Struts2每次请求,都会实例化动作类的对象,因此它是线程安全的。
4、Struts2提供的结果视图

- chain:转发到另外一个动作
转发到包内的动作:
|
<action <!-- 转发到另外一个动作:同一个包中的 --> <!-- 位于result标签元素内部的值会调用chain处理类的setActionName("a2") --> <result
<!-- <result type="chain"> <param name="actionName">a2</param> </result> --> </action> |
转发到另外一个带有名称空间的包中的动作
|
<package <action <!--转发到另外一个动作:不同包且另外还有命名空间 --> <!-- 以下的写法是不对的 --> <!-- <result type="chain">/hello/a33</result> -->
<result 个方法: setNamespace(String str) setActionName(String name) --> <param <param </result> </action> </package>
<package <action <result </action> </package> |
- dispatcher:转发到一个页面,jsp
|
<action <!-- <result type="dispatcher">/3.jsp</result> --> <result> <param </result> </action> |
- redirect:重定向到一个页面
|
<result <param </result> |
- redirectAction:重定向到一个动作
|
<action <!--重定向到另外一个包中的动作 --> <result <param <param </result> </action> |
|
<package <action <result </action> <action <result </action> </package> |
- stream:文件下载(此处不讲,文件上传和下载再讲)
- plainText:以纯文本的形式显示结果
|
<action <!--以纯文本的形式显示目标页面:直接显示源码 --> <result </action> |

5、自定义结果视图
目标:用一个叫做image的视图,输入随机验证码图片
步骤:
- 定义一个类,实现com.opensymphony.xwork2.Result接口
/*
* 该类实现Rusult接口,实现自定义结果视图
*/
public
class CaptchaResult implements Result {/**
*
*/
private
static
final
long
serialVersionUID = 1L;private
int
width = 110;private
int
height = 25;public
void setWidth(int
width) {this.width = width;
}
public
void setHeight(int
height) {this.height = height;
}
@Override
public
void execute(ActionInvocation arg0) throws Exception {//验证码的代码
// BufferedImage:代码内存图片
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// Graphics:画笔
Graphics g = image.getGraphics();
// 画边线
g.setColor(Color.GREEN);
g.drawRect(0, 0, width, height);
// 填充背景色
g.setColor(Color.YELLOW);
g.fillRect(1, 1, width - 2, height - 2);
// 干扰线
Random r = new Random();
g.setColor(Color.GRAY);
for (int
i = 0; i < 15; i++) {g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width),
r.nextInt(height));
}
// 验证码
g.setColor(Color.RED);
g.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 18));
int
x = 19;for (int
i = 0; i < 5; i++) {g.drawString(r.nextInt(10) + "", x, 20);
x += 20;
}
// ImageIO:输出图片给指定的流
OutputStream output = ServletActionContext.getResponse()
.getOutputStream();
ImageIO.write(image, ".jpg", output);
}
}
- 在配置文件中定义结果类型
<package
name="p3"
extends="struts-dafault"><result-types>
<result-type
name="image"
class="com.itheima.results.CaptchaResult"></result-type></result-types>
</package>
- 现在就可以在动作中使用该结果类型
<!-- 使用自定义结果视图 -->
<action
name="imageAction"><result
name="success"
type="image"><param
name="width">400</param><param
name="height">300</param></result>
</action>
小技巧:很多包中都要使用该结果视图怎么办?
<package
name="mydefault"
extends="struts-dafault"><!--自定义结果视图 -->
<result-types>
<result-type
name="image"class="com.itheima.results.CaptchaResult">
</result-type>
</result-types>
</package>
<!--继承配置了结果视图的包 -->
<package
name="p4"
extends="mydefault"><!-- 使用自定义结果视图 -->
<result
name="success"
type="image"><param
name="width">400</param><param
name="height">300</param></result>
</package>
十、Struts2结果集的更多相关文章
- ES系列十六、集群配置和维护管理
一.修改配置文件 1.节点配置 1.vim elasticsearch.yml # ======================== Elasticsearch Configuration ===== ...
- Docker Swarm(十)Portainer 集群可视化管理
前言 搭建好我们的容器编排集群,那我们总不能日常的时候也在命令行进行操作,所以我们需要使用到一些可视化的工具,Docker图形化管理提供了很多工具,有Portainer.Docker UI.Shipy ...
- nodejs的mysql模块学习(十)连接池集群配置选项
连接池集群选项 canRetry : 如果true ,连接池集群会在连接失败时尝试连接 默认true removeNodeErrorCount : 如果连接失败,节点的errCount增加.当erro ...
- Redis进阶实践之十 Redis哨兵集群模式
一.引言 上一篇文章我们详细的讲解了Redis的主从集群模式,其实这个集群模式配置很简单,只需要在Slave的节点上进行配置,Master主节点的配置不需要做任何更改,但是有一 ...
- 【iCore4 双核心板_uC/OS-II】例程十:信号量集
一.实验说明: 在实际应用中,任务常常需要与多个事件同步,即要根据多个信号量组合作用的结果来决定任务的运行方式.UCOSII为了实现多个信号量组合的功能定义了一种特殊的数据结构——信号量集. 二.实验 ...
- 【Redis学习之十】Redis集群维护
Redis集群增删节点部署环境 redis-3.0.0 VM虚拟机redhat6.5-x64:192.168.1.201.192.168.1.202.192.168.1.203. ...
- Dubbo实践(十六)集群容错
Dubbo作为一个分布式的服务治理框架,提供了集群部署,路由,软负载均衡及容错机制.下图描述了Dubbo调用过程中的对于集群,负载等的调用关系: 集群 Cluster 将Directory中的多个In ...
- Redis(十六):集群搭建(手动和自动)
一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2):slave->master ...
- RabbitMQ (十五) 镜像集群 + HAProxy1.7.8 负载均衡
RabbitMQ 默认的集群模式,也就是普通模式,最大的问题就在于存储队列完整数据的节点一旦宕机, 如果是非持久化队列,则消息丢失;如果是持久化队列+持久化消息,则必须等该节点恢复. 所以后来 Rab ...
随机推荐
- Win8下修改任務欄的資源管理器默認打開位置
不能像win7一樣右鍵屬性改了,但還是有辦法的. 新建一個文件夾,建立快捷方式,右鍵快捷方式,將目標改為%windir%\explorer.exe /n,/e,D:\Desktop 然後將該快捷方式拖 ...
- Python补充05 字符串格式化 (%操作符)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在许多编程语言中都包含有格式化字符串的功能,比如C和Fortran语言中的格式化输 ...
- 使用Async和Await进行异步编程(C#版 适用于VS2015) z
你可以使用异步编程来避免你的应用程序的性能瓶颈并且加强总体的响应.然而,用传统的技术来写异步应用是复杂的,同时编写,调试和维护都很困难. VS2012介绍了简单的方法,那就是异步编程,它在.Net F ...
- NLP学习资源
Journals ACM Transactions on Information Systems (TOIS) 影响因子 5.059(2006) IEEE Transactions on Knowl ...
- java获取对应字节数的内容
每个英文字符占一字节 每个汉字当编码不同时字节数不同,utf-8中一个汉语字符占位3字节 示例: 获取任意一个字符串的前四个字节. Scanner sc = new Scanner(System.in ...
- [Java] 过滤流BufferedInputStream和BufferedOutputStream
package test.stream; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ...
- [Java] java中的异常处理-续
异常处理器,它由try, catch, finally以及随后的程序块组成.finally不是必须的. catch的括号有一个参数,代表所要捕捉的异常的类型.catch会捕捉相应的类型及其衍生类.tr ...
- TestNG运作报错An interanl error occurred during:"Launching first"
备注:我建的类名就叫做“first” 解决办法:卸载掉TestNG M2E Help-->Install new software-->What is already installed? ...
- Java SE 第九讲---面向对象特征之封装1
1.面向对象程序设计的三大基本特征:继承(Inheritence).封装(Encapsulation).多态(Polymorphism) 2.封装:类包含数据与方法,将数据与方法放在一个类中就构成了封 ...
- [HackerCup Round1 2] Autocomplete (Trie)
题目链接:https://www.facebook.com/hackercup/problems.php?pid=313229895540583&round=344496159068801 题 ...











