初学structs2,结果类型简单示例
一、自定义结果处理类,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,结果类型简单示例的更多相关文章
- java gRPC四种服务类型简单示例
一.gRPC 简介 gRPC 是Go实现的:一个高性能,开源,将移动和HTTP/2放在首位通用的RPC框架.使用gRPC可以在客户端调用不同机器上的服务端的方法,而客户端和服务端的开发语言和 运行环境 ...
- 初学JDBC,最简单示例
一.下载相应数据库驱动jar包,添加到项目中 二.注册驱动,数据库驱动只加入到classpath中是还不行的,还要在使用的时候注册一下,就像安装驱动软件,只拷贝到硬盘还不行,需要安装一下 Driver ...
- spring-servlet.xml简单示例
spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 <!-- springMVC简单配置 --> <?xml versi ...
- HTML-003-模拟IDE代码展开收起功能简单示例
当先我们在日常的编程开发工作中使用编程工具(例如 Eclipse.Sublime 等等)都有相应的代码折叠展开功能,如下图所示,极大的方便了我们的编码工作.
- 【Spring-AOP-学习笔记-7】@Around增强处理简单示例
阅读目录 简单介绍 章节1:项目结构 章节2:定义切面类.连接点注解类 章节3:为待增强的方法--添加注解声明 章节4:AspectJ配置文件 章节5:测试类xxx 章节6:测试结果 Around 增 ...
- Mybatis的简单示例
首先新建一个JavaWeb项目并导入mybatis依赖的jar包,同时Mybatis是对数据库的操作所以我们需要在数据库中新建一个表user用来演示. 新建完表之后我们还需要建立相对应的实体类User ...
- pureMVC简单示例及其原理讲解五(Facade)
本节将讲述Facade,Proxy.Mediator.Command的统一管家.自定义Facade必须继承Facade,在本示例中自定义Facade名称为ApplicationFacade,这个名称也 ...
- pureMVC简单示例及其原理讲解三(View层)
本篇说的是View层,即视图层,在本示例中包括两个部分:MXML文件,即可视控件:Mediator. 可视控件 可视控件由UserForm.mxml(图1)和UserList.mxml(图2)两个文件 ...
- 基于.NET CORE微服务框架 -surging的介绍和简单示例 (开源)
一.前言 至今为止编程开发已经11个年头,从 VB6.0,ASP时代到ASP.NET再到MVC, 从中见证了.NET技术发展,从无畏无知的懵懂少年,到现在的中年大叔,从中的酸甜苦辣也只有本人自知.随着 ...
随机推荐
- 课程2——变量修饰关键字
声明:本系列随笔主要用于记录c语言的常备知识点,不能保证所有知识正确性,欢迎大家阅读.学习.批评.指正!!你们的鼓励是我前进的动力.严禁用于私人目的.转载请注明出处:http://www.cnblog ...
- Linux网络共享管理(ssh,nfs,samba)
OpenSSH服务器: ssh协议:提供安全的ssh环境用于远程管理,默认端口:22: 服务名称:sshd openssh-server包的安装文件: 使用ssh客户端程序: 连接目标主机: ssh ...
- Sql Server UniCode编码解码
); set @s = N'揶'; select UniCode(@s),nchar(UniCode(@s)); 在 SQL Server 中处理 Unicode 字串常数时,您必需在所有的 Unic ...
- Vue.js的表格分页组件
转自:http://www.cnblogs.com/Leo_wl/p/5522299.html 有一段时间没更新文章了,主要是因为自己一直在忙着学习新的东西而忘记分享了,实在惭愧. 这不,大半夜发文更 ...
- Spring如何处理线程并发
Spring如何处理线程并发 我们知道Spring通过各种DAO模板类降低了开发者使用各种数据持久技术的难度.这些模板类都是线程安全的,也就是说,多个DAO可以复用同一个模板实例而不会发生冲突.我 ...
- LeetCode:Palindrome Partitioning,Palindrome Partitioning II
LeetCode:Palindrome Partitioning 题目如下:(把一个字符串划分成几个回文子串,枚举所有可能的划分) Given a string s, partition s such ...
- 20135202闫佳歆--week 9 期中总结
期中总结 前半学期的主要学习内容是学习mooc课程<Linux内核分析>以及课本<Linux内核设计与实现>. 所涉及知识点总结如下: 1. Linux内核启动的过程--以Me ...
- 信息安全系统设计基础exp_5
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:1353 姓名:郑伟.吴子怡 学号:20135322.20135313 指导教师: 娄嘉鹏 实验 ...
- js方式清空表单数据的两种方式
方法1:遍历页面元素 /* 清空FORM表单内容 id:表单ID*/ function ClearForm(id) { var objId = document.getElementByI ...
- 百度地图 IOS版开发经验分享
最近刚完成app中地图的应用,感觉非常的曲折,折腾了很久,刚才开始一直不能成功使用百度地图api,报一大堆的错误,后来换到高德地图,又发现服务端使用的百度的经纬度,又从高德换回百度,泪奔. 这里简单比 ...