学习Struts--Chap04:result中type属性dispatcher、redirect、redirectAction、chain的区别
1、Struts2框架中常用的结果类型的分析和比较
- dispatcher:缺省的result类型,type默认是dispatcher内部转发。如果不写type类型只写一个名字的话,不单是type类型默认,而且<param name="location">/XXX.jsp</param>中的location也是默认的,而且默认的情况下location只能是页面,不能是另一个action(可用type="chain"解决)。
- redirect:可以重定向到一个页面、一个action或者是一个网址。action处理完后重定向到一个视图资源(如:jsp页面),请求参数全部丢失,action处理结果也全部丢失。
- redirectAction:action处理完成之后重定向到另一个action,请求参数全部丢失,action的处理结果也会全部丢失。可以在任意点上改变URL模式而不会影响你的应用程序. 因此强烈推荐使用这个Result而不是标准的redirect result来解决重定位到某个action的情况.
- chain:主要是把相关的几个action连接起来,共同完成一个功能。action处理完成之后转发到另一个action,请求参数全部丢失,action的处理结果不会丢失。
实例代码:
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="hello?name=Struts2" target="_blank">默认转发_dispatcher</a><br/>
<a href="hello!r?name=Struts2" target="_blank">重定向_redirect</a><br/>
<a href="hello!c?name=Struts2" target="_blank">链条_chain</a><br/>
<a href="hello!ra?name=Struts2" target="_blank">重定向到Action_redirectAction</a><br/> <a href="hello" target="_blank">全局result配置</a><br/>
</body>
</html>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <package name="manage" namespace="/" extends="struts-default">
<global-results>
<result name="error">error.jsp</result>
</global-results> <action name="hello" class="com.java1234.action.HelloAction">
<result name="success" type="dispatcher">success.jsp</result>
<result name="r" type="redirect">success.jsp</result>
<result name="c" type="chain">hello2</result>
<result name="ra" type="redirectAction">hello2</result>
</action> <action name="hello2" class="com.java1234.action.HelloAction2">
<result name="success" type="dispatcher">success.jsp</result>
</action>
</package> </struts>
HelloAction类:
package com.java1234.action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloAction extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private String error;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
@Override
public String execute() throws Exception {
if(name==null || "".equals(name)){
this.error="name是空";
return ERROR;
}
return SUCCESS;
}
public String r()throws Exception{
return "r";
}
public String c()throws Exception{
return "c";
}
public String ra()throws Exception{
return "ra";
}
}
HelloAction2类:
package com.java1234.action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloAction2 extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name2;
public String getName2() {
return name2;
}
public void setName2(String name2) {
this.name2 = name2;
}
@Override
public String execute() throws Exception {
this.name2="你好啊";
return SUCCESS;
}
}
2、Struts2框架提供的结果类型
| 已配置结果类型名 | 类 名 | 描 述 |
| dispatcher | org.apache.struts2.dispatcher. ServletDispatcherResult |
默认结果类型,用来呈现JSP页面 |
|---|---|---|
| chain | com.opensymphony.xwork2. ActionChainResult |
将action和另外一个action链接起来 |
| freemarker | org.apache.struts2.views.freemarker. FreemarkerResult |
呈现Freemarker模板 |
| httpheader | org.apache.struts2.dispatcher. HttpHeaderResult |
返回一个已配置好的HTTP头信息响应 |
| redirect | org.apache.struts2.dispatcher. ServletRedirectResult |
将用户重定向到一个已配置好的URL |
| redirectAction | org.apache.struts2.dispatcher. ServletActionRedirectResult |
将用户重定向到一个已定义好的action |
| stream | org.apache.struts2.dispatcher. StreamResult |
将原始数据作为流传递回浏览器端, 该结果类型对下载的内容和图片非常有用 |
| velocity | org.apache.struts2.dispatcher. VelocityResult |
呈现Velocity模板 |
| xslt | org.apache.struts2.views.xslt. XSLTResult |
呈现XML到浏览器, 该XML可以通过XSL模板进行转换 |
| plaintext | org.apache.struts2.dispatcher. PlainTextResult |
返回普通文本类容 |
学习Struts--Chap04:result中type属性dispatcher、redirect、redirectAction、chain的区别的更多相关文章
- 配置文件Struts.xml 中type属性 redirect,redirectAction,chain的区别
1.redirect:action处理完后重定向到一个视图资源(如:jsp页面),请求参数全部丢失,action处理结果也全部丢失. 2.redirectAction:action处理完后重定向到一 ...
- Struts2配置RESULT中TYPE的参数说明
chain 用来处理Action链,被跳转的action中仍能获取上个页面的值,如request信息. com.opensymphony.xwork2.Acti ...
- struts2简单入门-关于Result标签Type属性的说明
Result标签 作用 当action执行完毕,后要返回什么样的视图. Type属性 决定返回的是什么视图. struts-default.xml的Type属性的定义 <result-types ...
- struts2 result的type属性
目前只使用过以下3种,都是直接跳转到另一个action chain: 写法:<result name="success" type="chain"> ...
- Servlet中的属性(attribute)和参数(parameter)的区别
1.引子 初学者对属性(attribute)和参数(parameter)容易搞混.没搞清他们的区别,项目中就可能出现一此莫名其妙的问题. 2.两者的区别 1) 属性(attribute) 属性是在后台 ...
- struts2的result的type属性
一共有两个属性name和type name这里就不介绍了 type 返回结果的类型,值可以从default-struts.properties中看到看到 常用的值:dispatcher (默认) ...
- script中type属性讲解
js的代码是由type决定的: <script type='javascript'> 默认的 <script type="text/html" > 就是 ...
- [转]js对象中取属性值(.)和[ ]的区别
原文地址:https://www.jianshu.com/p/6a76530e4f8f 今天在写js的过程中遇到这么一个问题,取一个对象的属性值,通过obj.keys怎么都取不出来,但是用obj[ke ...
- SQL学习笔记之SQL中INNER、LEFT、RIGHT JOIN的区别和用法详解
0x00 建表准备 相信很多人在刚开始使用数据库的INNER JOIN.LEFT JOIN和RIGHT JOIN时,都不太能明确区分和正确使用这三种JOIN操作,本文通过一个简单的例子通俗易懂的讲解这 ...
随机推荐
- Zabbix监控Nginx性能状态
Nginx在生产环境中的应用越来越广泛,所以需要对nginx的性能状态做一些监控,从而发现故障隐患,Ngnx的监控指标可分为:基本活动指标,错误指标,性能指标 监控Nginx思路: 1)首先,要想监控 ...
- POJ1330Nearest Common Ancestors
去博客园看该题解 题意 第一行输入T,有T组数据. 对于每组数据,给出一棵树,先输入n,然后n-1行,每行两个数a,b,表示a是b的父亲:第n行输入两个数A,B表示询问A和B的最近公共祖先. 题解 L ...
- maven pom.xml(公司版)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- python面试题之如何用Python输出一个斐波那契数列
so eary! 1 a,b = 0, 1 2 while b<100: 3 print (b), 4 a, b = b, a+b 本文转载自:python黑洞网 原文链接:http://www ...
- Mybatis if test 中int integer判断非空的坑
Mybatis 中,alarmType 是int类型.如果alarmType 为0的话,条件判断返回结果为false,其它值的话,返回true. 1 <if test="alarmTy ...
- Hdu-1098解题报告
Hdu-1098解题报告 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1098 题意:已知存在一个等式f(x)=5*x^13+13*x^5+k*a*x ...
- SVM:随机产生100个点,建立模型,找出超平面方程——Jaosn niu
import numpy as np import pylab as pl from sklearn import svm # we create 40 separable points #np.ra ...
- 安装supset遇到的问题
1.缺少pyconfig.h文件问题(python3.4) 执行下列两行命令: $sudo apt-get install build-essential cmake $sudo apt-get in ...
- XamarinSQLite教程在Xamarin.Android项目中定位数据库文件
XamarinSQLite教程在Xamarin.Android项目中定位数据库文件 实际开发中,经常需要验证数据库操作的正确性.这个时候,需要打开数据库文件,进行确认.下面是如何找到MyDocumen ...
- 那些天使用AWS填过的坑和注意事项
一直在找免费的GPU云端,在某乎上看到AWS提供免费的,就上去试了下,结果那个免费一年的只有CPU,并没有GPU,GPU还是需要付费的,相关背景就说这些,下面放几个相关教程,里面会说怎么使用,看了这几 ...