一、自定义结果处理类,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. 【Mysql】日期时间格式化

    1.日期转成指定格式:DATE_FORMAT(date, format) 2.int型时间转成指定格式:FROM_UNIXTIME(unix_timestamp,format) 根据format字符串 ...

  2. SilverIight数据绑定实例

    前台Code <DataGrid Name="DataGrid1" AutoGenerateColumns="False" IsReadOnly=&quo ...

  3. 如何设置word里的代码格式,使之有底纹的效果

    1.测试平台:word2013 2.步骤:设计->底纹->填充->应用于->确定 3.效果:

  4. C# is as

    if(obj is ClassA) //遍历类层次,看OBJ是不是ClassA类型{    ClassA a=(ClassA) obj; //遍历类层次,看obj能否转换为ClassA,不成功则抛出异 ...

  5. VBA的一些使用心得

    VBA的知识比较零散,因此开一贴记录一下使用VBA时的一些方法和心得.主要针对Excel,参考在这里 1. Collection Class 大部分情况下,Collection Class是比数组(A ...

  6. 北京联想招聘-java 云服务开发工程师 加入qq 群:220486180 或者直接在此 留言咨询

     Position Title: 云服务开发工程师 Experience Required:  3 - 5 Years 负责联想企业网盘服务端开发  Position Requirements  1. ...

  7. Javascript系列: Google Chrome调试js代码(zz)

    你 是怎么调试 JavaScript 程序的?最原始的方法是用 alert() 在页面上打印内容,稍微改进一点的方法是用 console.log() 在 JavaScript 控制台上输出内容.嗯~, ...

  8. 安装Ubuntu 16.04后要做的事

    Ubuntu 16.04发布了,带来了很多新特性,同样也依然带着很多不习惯的东西,所以装完系统后还要进行一系列的优化. 1.删除libreoffice libreoffice虽然是开源的,但是Java ...

  9. [CareerCup] 4.4 Create List at Each Depth of Binary Tree 二叉树的各层创建链表

    4.4 Given a binary tree, design an algorithm which creates a linked list of all the nodes at each de ...

  10. Convert和Parse对null值处理的区别

    类型的转换在日常的变成中是经常被用到的,我们最常用的类型转换的方法就是Convert和Parse, 下面来说一下这两者null值处理的区别. int i1 = Convert.ToInt32(null ...