Struts2学习---result结果集
来源:互联网 发布:家常菜做法知乎 编辑:程序博客网 时间:2024/05/17 04:39
这一章节主要介绍如何配置结果集,分为以下几个知识点:
- 结果集类型(result type)
- 全局结果集(global types)
- 动态结果集(dynamic type)
- 带有参数的结果集(type with params)
result type:
结果集类型一共有十一种:
- dispatcher
- redirect
- chain
- redirectAction
- freemarker
- httpheader
- stream
- velocity
- xslt
- plaintext
- tiles
最常用的是前两种:一个是请求转发,一个是请求重定向。
还会用到的就是freemarker(模板),和stream(用于下载)。
我们的配置文件默认情况下都是dispatcher,请求转发,将struts得到的请求通过服务器转到相应的页面。
这里的requet是一次请求,二redirect是两次请求。(这个和javaweb里面的dispatcher和redirect相同这里就不做太多解释)。
chain是转向一个action,也就是将请求转到同一个包下的action(转到不同包下的action后面介绍)。
redirectAction是重定向到另一个Action,状态和redirect相同,作用和chain相同。
本文只介绍以上类型。接下来我们来看看具体是怎么配置的(dispatcher和redirect省略)。
<action name="page1" class=""> <result type="dispatcher">/xxx.jsp</result> </action> <action name="page2" class=""> <result type="redirect">/xxx.jsp</result> </action> <action name="page3" class=""> <result type="chain">page1</result> </action> <action name="page3" class=""> <result type="redirectAction">page1</result> </action>
配置很简单,接下来我们来看看不同包下chain和redirectAction怎么配置:
<package name="public" extends="struts-default" namespace="/"> <action name="page" class=""> <result type="chain"> <param name="actionName">action1</param> <param name="namespace">/secure</param> </result> </action> </package> <package name="secure" extends="struts-default" namespace="/secure"> <action name="action1" class=""> <result>xx.jsp</result> </action> </package>
只要在result里面定义想要调用的namespace和actionName参数,struts就会根据你的指定调用对应的action,上面的是chain的演示配置,redirectAction和它配置相同只要将type改为redirectAction就可以了。
全局结果集:
全局结果集,顾名思义就是全局的,就像java代码里面的全局变量一样,可以在整个程序里面被调用。
当我们在一个程序里面想返回一个错误页面的时候,总不能每个action里面都定义一个result,然后反悔error.jsp吧。
所以这个时候我们就可以用到全局结果集了(全局结果集在一个包里面“全局”)。
具体这样定义:
<global—results> <result name="errorpage">/error.jsp</result></global—results>
这样配置过后,当前包的action里就可以返回errorpage达到返回作物页面的目的,省去了我们多次配置。
当其他包的action也想要获得这个全局结果集的时候只需要在它package extends属性里面继承含有全局属性的包就行了。
动态结果集
动态结果集、
struts.xml:
<action name="" class="xx.xxAction"> <result>${r}</result></action>
public class UserAction extends ActionSupport { private int type; private String r; public String getR() { return r; } public void setR(String r) { this.r = r; } public int getType() { return type; } public void setType(int type) { this.type = type; } @Override public String execute() throws Exception { if(type == 1) r="/user_success.jsp"; else if (type == 2) r="/user_error.jsp"; return "success"; }}
动态结果集的原理:当我们发送请求的时候,里面包含一个请求参数,我们在execute中根据参数将type我们将r赋予不同的值(页面字符串),并放入值栈中保存。
result里面包含一个ognl表达式,用来取得值栈里面r的数据。
这样就完成了动态的结果集。
带有参数的结果集
当客户端发送了一个请求,这个请求含有参数,我们将这个请求重定向到其他页面,那么我们怎么将这个参数继续带到其他页面呢?
请求带了一个名为type的参数
<result type="redirect">/user_success.jsp?t=${type}</result>
在jsp我们可以这样取值:
<s:property value="#parameters.t"/>
这个语句等价于:
<s:property value="ActionContext.getContext().parameters.t"/>
到这里我们的结果集就讲完了。
如有错误,欢迎指正。
- Struts2学习---result结果集
- struts2 result全局结果集
- 【Struts2二】结果集(result-type)
- Struts2:Result结果类型
- Struts2结果视图result
- Struts2的<result>结果
- Struts2结果视图result
- Struts2学习笔记(六) 结果(Result)(上)
- Struts2学习笔记(七) 结果(Result)(下)
- Struts2学习笔记(七) 结果(Result)(上)
- Struts2学习笔记(八) 结果(Result)(下)
- Struts2框架学习之三:result返回结果
- Struts2学习笔记(五)——result结果类型
- Struts2结果类型(Result Types)
- struts2 result结果为action
- struts2的result结果类型
- struts2的result结果类型
- Struts2 result type(结果类型)
- WordPress自定义友情链接位置排序插件
- java关于float类型和int类型数据转换为字符串(吃软不吃硬)
- 用自己的数据集在R-FCN框架下进行检测
- tensorFlow解决问题ImportError: No module named 'tensorflow.python.pywrap_tensorflow_internal'
- Unity基本对象的关系
- Struts2学习---result结果集
- Restful api
- 转载-机器学习实战之SVM
- Android自定义View专题五 PathMeasure详解
- MATLAB控制系统校正工具sisotool的使用
- 欢迎使用CSDN-markdown编辑器
- 转载--机器学习算法与Python实践之(二)支持向量机(SVM)初级
- # QGroundControl学习(一)
- MyBatis映射语句