一、自定义结果处理类,structs.xml中package节点下加result-types节点,在result-types节点下配置result-type的属性。然后在配置的action中的result属性type为resul-type的name属性值

如,自定义服务端重定向Dispatcher类

structs.xml配置:

<structs>
<package name="resulttype" namespace="/resulttype" extends="structs-default">
<result-types>
<result-type name="MyDispathcer" class="cn.hjp.resulttypes.MyDispatcher"></result-type>
</result-types>
<action name="HelloAction" class="cn.hjp.action.HelloAction">
<result name="Success" type="MyDispathcer">/Index.jsp</result>
</action>
</package>
</structs>

java中的实现代码为:

//自定义服务端页面跳转类
public class MyDispatcher extends StrutsResultSupport { @Override
protected void doExecute(String finalLocation, ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
request.getRequestDispatcher(finalLocation).forward(request, response);
}
} //cn.hjp.action下的类
public class HelloAction implements Action {
@Override
public String execute() throws Exception {
System.out.println("自定义服务端页面重定向测试");
return "Success";
}
}

二、配置result节点type属性为dispatcher,实现页面在服务端重定向

<structs>
<package name="hello" namespace="/aaa" extends="structs-default">
<action name="HelloAction" class="cn.hjp.action.HelloAction">
<result name="success" type="dispatcher">/Index.jsp</result>
</action>
</package>
</structs>

java代码:

//cn.hjp.action下的类
public class HelloAction implements Action {
@Override
public String execute() throws Exception {
System.out.println("服务端页面重定向测试");
return SUCCESS;
}
}

三、配置result节点type属性为redirect,实现页面在客户端重定向

<structs>
<package name="hello" namespace="/aaa" extends="structs-default">
<action name="HelloAction" class="cn.hjp.action.HelloAction">
<result name="success" type="redirect">/Index.jsp</result>
</action>
</package>
</structs>

java代码:

//cn.hjp.action下的类
public class HelloAction implements Action {
@Override
public String execute() throws Exception {
System.out.println("客户端页面重定向测试");
return SUCCESS;
}
}

四、配置result节点type属性为plainText,显示纯文本,及参数注入

<structs>
<package name="hello" namespace="/aaa" extends="structs-default">
<action name="HelloAction" class="cn.hjp.action.HelloAction">
<result name="success" type="plainText">
<!--参数注入,其中的参数属性为plainText对应的类及其父类中属性-->
<param name="location">/Index.jsp</param>
<!--编码不一致会乱码-->
<param name="charSet">UTF-8</param>
</result>
</action>
</package>
</structs>

java代码:

//cn.hjp.action下的类
public class HelloAction implements Action {
@Override
public String execute() throws Exception {
System.out.println("纯文本测试");
return SUCCESS;
}
}

五、配置result节点type属性为stream,实现文件下载

<structs>
<package name="hello" namespace="/aaa" extends="structs-default">
<action name="HelloAction" class="cn.hjp.action.HelloAction">
<result name="success" type="stream">
<param name="contentType">application/zip</param>
<!--如下zip,此处大小写不区分,但是对应action中的getZip()方法,返回InputStream类型-->
<param name="inputName">zip</param>
<!--filename自定义下载文件名-->
<param name="contentDisposition">attachment;filename="Mapping123.zip"</param>
<param name="bufferSize">1024</param>
</result>
</action>
</package>
</structs>

java代码:

public class HelloAction extends ActionSupport {
public InputStream getZip() {
// 读取文件流
ServletContext context = ServletActionContext.getServletContext();
//在WebContent下新建文件夹file,里面有Mapping.zip文件
InputStream inputStream = context.getResourceAsStream("/file/Mapping.zip");
return inputStream;
} }

调用方式:http://localhost:8080/structs2-demo1/aaa/HelloAction.action。直接下载文件

六、配置result节点type属性为redirectAction,实现重定向到指定Action。其实该方式是对type="redirect"变相重写,通过查源码可知,ServletActionRedirectResult继承了ServletRedirectResult类,通过ServletActionRedirectResult中的execute方法执行到ServletRedirectResult中的doexecute方法,实现跳转

<structs>
<package name="hello" namespace="/aaa" extends="structs-default">
<action name="HelloAction1" class="cn.hjp.action.HelloAction1">
<result name="success" type="redirectAction">
<param name="actionName">HelloAction</param>
<!--如果不配置namespace,则默认当前namespace-->
<param name="namespace">/aaa</param>
</result>
</action>
</package>
</structs>

java代码:

public class HelloAction1 extends ActionSupport {

    @Override
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println("重定向到指定Action测试");
return SUCCESS;
}
}

访问路径:http://localhost:8080/structs2-demo1/aa/HelloAction1.action

初学structs2,结果类型简单示例的更多相关文章

  1. java gRPC四种服务类型简单示例

    一.gRPC 简介 gRPC 是Go实现的:一个高性能,开源,将移动和HTTP/2放在首位通用的RPC框架.使用gRPC可以在客户端调用不同机器上的服务端的方法,而客户端和服务端的开发语言和 运行环境 ...

  2. 初学JDBC,最简单示例

    一.下载相应数据库驱动jar包,添加到项目中 二.注册驱动,数据库驱动只加入到classpath中是还不行的,还要在使用的时候注册一下,就像安装驱动软件,只拷贝到硬盘还不行,需要安装一下 Driver ...

  3. spring-servlet.xml简单示例

    spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 <!-- springMVC简单配置 --> <?xml versi ...

  4. HTML-003-模拟IDE代码展开收起功能简单示例

    当先我们在日常的编程开发工作中使用编程工具(例如 Eclipse.Sublime 等等)都有相应的代码折叠展开功能,如下图所示,极大的方便了我们的编码工作.

  5. 【Spring-AOP-学习笔记-7】@Around增强处理简单示例

    阅读目录 简单介绍 章节1:项目结构 章节2:定义切面类.连接点注解类 章节3:为待增强的方法--添加注解声明 章节4:AspectJ配置文件 章节5:测试类xxx 章节6:测试结果 Around 增 ...

  6. Mybatis的简单示例

    首先新建一个JavaWeb项目并导入mybatis依赖的jar包,同时Mybatis是对数据库的操作所以我们需要在数据库中新建一个表user用来演示. 新建完表之后我们还需要建立相对应的实体类User ...

  7. pureMVC简单示例及其原理讲解五(Facade)

    本节将讲述Facade,Proxy.Mediator.Command的统一管家.自定义Facade必须继承Facade,在本示例中自定义Facade名称为ApplicationFacade,这个名称也 ...

  8. pureMVC简单示例及其原理讲解三(View层)

    本篇说的是View层,即视图层,在本示例中包括两个部分:MXML文件,即可视控件:Mediator. 可视控件 可视控件由UserForm.mxml(图1)和UserList.mxml(图2)两个文件 ...

  9. 基于.NET CORE微服务框架 -surging的介绍和简单示例 (开源)

    一.前言 至今为止编程开发已经11个年头,从 VB6.0,ASP时代到ASP.NET再到MVC, 从中见证了.NET技术发展,从无畏无知的懵懂少年,到现在的中年大叔,从中的酸甜苦辣也只有本人自知.随着 ...

随机推荐

  1. WP老杨解迷:如何获得更多的应用评价和解读内容刷新

    Windows Phone的市场评论功能研究的时间比较长,只是这一功能,估计就能写一篇论文,我曾搞过多款评论数超高的游戏,其中<少林塔防>是重量级的作品,至今稳坐最高评分第一把交椅,如果不 ...

  2. Socket Programming in C#--Conclusion

    Conclusion And that's all there is to it! Here is how our client looks like Here is how our server l ...

  3. sqlalchemy 的 ORM 与 Core 混合方式使用示例

    知乎: sqlalchemy 的 ORM 与 Core 混合方式操作数据库是一种怎样的体验? 答: 酸! 本文基于:win 10 + python 3.4 + sqlalchemy 1.0.13 基本 ...

  4. Linux(10.18-10.25)学习笔记

    一.学习目标 1. 了解常见的存储技术(RAM.ROM.磁盘.固态硬盘等) 2. 理解局部性原理 3. 理解缓存思想 4. 理解局部性原理和缓存思想在存储层次结构中的应用 5. 高速缓存的原理和应用 ...

  5. 怎样写 OpenStack Neutron 的 Plugin (一)

    鉴于不知道Neutron的人也不会看这篇文章,而知道的人也不用我再啰嗦Neutron是什么东西,我决定跳过Neutron简介,直接爆料. 首先要介绍一下我的开发环境.我没有使用DevStack,而是直 ...

  6. protobuf 文件级别优化

    package IM.BaseDefine;option java_package = "com.mogujie.tt.protobuf";option optimize_for ...

  7. JS开发HTML5游戏《神奇的六边形》(四)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...

  8. 云计算之路-阿里云上:2014年6月12日12点IIS请求到达量突降

    今天中午12:00左右,在Windows性能监视器中突然发现SLB中的两台云服务器的IIS请求到达量(ArriveRate)突然下降,见下图: IIS日志中的情况如下: 综合以上情况,我们推测在12: ...

  9. angular(常识)

    我觉得angularjs是前端框架,而jquery只是前端工具,这两个还是没有可比性的. 看知乎上关于jquery和angular的对比http://www.zhihu.com/question/27 ...

  10. [bzoj 1027][JSOI2007]合金(解析几何+最小环)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1027 分析: 首先因为一个合金的和为1,所以考虑2个材料合金能否合成一个需求合金的时候 ...