首页 > 代码库 > struts2的结果类型
struts2的结果类型
1、从struts-default.xml入手,得到结果类型列表以及对应的处理类:
<result-types> <!-- 转发到action --> <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> <!-- 转发到jsp --> <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/> <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/> <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/> <!-- 重定向到jsp --> <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/> <!-- 重定向到action --> <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/> <!-- 用于下载 --> <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/> <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/> <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/> <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" /> <result-type name="postback" class="org.apache.struts2.dispatcher.PostbackResult" /> </result-types>
然后我们知道一些信息:
1、常用的跳转类型:
转发
chain:转发到action
dispatcher:转发到jsp
重定向:
redirect:重定向到jsp
redirectAction:重定向到action
流:
stream:在文件下载中使用
2、默认的跳转方式是转发到jsp
2、几种跳转方式的使用例子:
<package name="resulttype" namespace="/resulttype" extends="struts-default"> <action name="resultTypeAction" class="cn.itcast.resulttype.ResultTypeAction"> <!-- 方法一 默认为转发 type:指定结果类型,默认为转发“dispatcher” --> <!-- <result name="success" type="dispatcher">/resulttype/success.jsp</result>--> <!-- 方法二:标准写法 --> <!--<result name="success" type="dispatcher"> param:参数 name:参数的名称为“location” 实际上是struts2框架底层StrutsResultSupport类的setLocation()提供的 所谓的参数,应该是set方法或者get方法后面跟的名称才是参数名 <param name="location">/resulttype/success.jsp</param> </result>--> <!-- 重定向到jsp --> <!--<result name="success" type="redirect"> <param name="location">/resulttype/success.jsp</param> </result>--> <!-- 重定向到action param: actionName:指定“目的地”动作的名称。指定action标签name属性的值 namespace:用来指定目的地的命名空间。指定的是struts的配置文件action对应的package的namespace的值 --> <!--<result name="success" type="redirectAction"> <param name="actionName">userAction</param> <param name="namespace">/prima</param> </result> --> <!-- 跳转到action param: 和重定向到action的一样 --> <result name="success" type="chain"> <param name="actionName">userAction</param> <param name="namespace">/prima</param> </result> </action> </package>
注意:
我们以后写结果类型的时候尽量写标准写法。
重定向与转发的最大的区别在域request域信息的是否重置,所以我们使用request中添加属性,判断属性值是否可以显示验证转发与重定向。
如何在Action中获取request等web中常用的对象呢?
使用struts2提供的工具类ServletActionContext的指定方法,原来是struts2将request等web对象封装成了一个map集合,需要我们使用该工具类调用!
public String execute() throws Exception { System.out.println("ResultTypeAction ****** execute() "); //struts2框架将request封装成一个map集合,通过struts2框架提供的工具类ServletActionContext的getRequest()方法来获取request HttpServletRequest request=ServletActionContext.getRequest(); request.setAttribute("username", "username_request"); return "success"; }
测试使用的代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href=http://www.mamicode.com/"<%=basePath%>"> <title>My JSP ‘form.jsp‘ starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href=http://www.mamicode.com/"styles.css"> --> </head> <body> <form action="${pageContext.request.contextPath }/resulttype/resultTypeAction.do" name="form1" method="post"> <input type="submit" value=http://www.mamicode.com/"提交"> </form> </body></html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href=http://www.mamicode.com/"<%=basePath%>"> <title>My JSP ‘success.jsp‘ starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href=http://www.mamicode.com/"styles.css"> --> </head> <body> resulttype: ${requestScope.username } </body></html>
前面的prima/success.jsp部分修改:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href=http://www.mamicode.com/"<%=basePath%>"> <title>My JSP ‘success.jsp‘ starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href=http://www.mamicode.com/"styles.css"> --> </head> <body> this is success.jsp! <br> ${requestScope.username } </body></html>
struts_resulttype.xml主要代码列出来就不写了,导入xml的也不写了
package cn.itcast.resulttype;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class ResultTypeAction extends ActionSupport { @Override public String execute() throws Exception { System.out.println("ResultTypeAction ****** execute() "); //struts2框架将request封装成一个map集合,通过struts2框架提供的工具类ServletActionContext的getRequest()方法来获取request HttpServletRequest request=ServletActionContext.getRequest(); request.setAttribute("username", "username_request"); return "success"; }}
struts2的结果类型
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。