`

Action中的各种转发类型

阅读更多

 <action name="helloworld" class="cn.itcast.action.HelloWorld">
     <result >/WEB-INF/page/jello.jsp</result>
</action>

 

如果没有为action指定class,默认值为ActionSupport

如果没有指定method,默认值为execute

如果没有为result指定name属性,默认值为success

 

result配置类似与struts1中的forward,但struts2提供了多种结果的类型,常用类型有:dispatcher(默认值)、redirect(重定向)、redirectAction(重定向action)、plainText(以源码形式显示,一般用于需要显示技术网站显示源码)

 

1、dispatcher(转发)

public class HelloWorld {

	private String msg;

	public String getMessage() {
		return msg;
	}

	public String execute() {
		msg= "第一个Struts2例子";
		return "success";
	}

}

  

<%@ 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>Struts2例子</title>
</head>
<body>
   ${message}
</body>
</html>

  

前台获取的属性值,指的是getXxx()方法中的xxx,而不是定义的变量。

 

2、redirect(重定向)

 

<action name="helloworld" class="cn.itcast.action.HelloWorld">
   <result type="redirect">/hello.jsp?username=${username}</result>
</action>

 

重新发送请求,在struts2中,每发一次请求都会new一个新的action类,而struts1每次都使用同一个action类

在result中可以使用${属性名}表达式访问action中的属性,表达式里的属性名对应action中的属性,action中的属性指的是getXxx()方法中的xxx,而不是定义的变量。

 

public class HelloWorld {

	private String username;
	
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String execute() {
		try {
			this.username = URLEncoder.encode("传智播客", "UTF-8");//汉字struts2会译成ISO8859-1的二进制格式,要想显示成汉字,就要进行编码
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "success";
	}

}

 

 形成的连接地址:

http://localhost:8080/structs2/hello.jsp?username=%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2  前台显示汉字会乱码,所以进行如下操作。

1.<%@ page language="java" contentType="text/html; charset=UTF-8" import="java.util.*,java.net.URLDecoder"  
2.    pageEncoding="UTF-8"%>   
3.<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">   
4.<html>   
5.<head>   
6.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">   
7.<title>Struts2例子</title>   
8.</head>   
9.<body>   
10.<!-- 获取汉字参数   
11.request.getParameter("username").getBytes("ISO8859-1") 获取汉字   
12.new String (request.getParameter("username").getBytes("ISO8859-1"),"UTF-8")  转成utf-8  
13.URLDecoder.decode(new String (request.getParameter("username").getBytes("ISO8859-1"),"UTF-8"),"UTF-8")   进行解码   
14. -->   
15.  <%=URLDecoder.decode(new String (request.getParameter("username").getBytes("ISO8859-1"),"UTF-8"),"UTF-8")  %>   
16. <br>   
17.<!--获取英文参数  此种方式获取汉字,会出现乱码-->   
18. ${param.username}   
19.</body>   
20.</html> 

   

3、redirectAction(重定向action)

 

同一包中:

   <action name="helloworld" class="cn.itcast.action.HelloWorld">
     <result type="redirect">/hello.jsp?username=${username}</result>
  </action>
   <!-- 重定向action -->
  <action name="redirectAction">
   <result type="redirectAction"> helloworld</result>
  </action>

 

不同包中:通过指定param实现

<package name="itcast" namespace="/test" extends="struts-default">

   <!-- 重定向action -->
  <action name="redirectAction">
   <result type="redirectAction">
    <param name="actionName">helloworld</param>
    <param name="namespace">/test123</param>
   </result>
  </action>
</package>

<package name="it" namespace="/test123" extends="struts-default">
  <action name="helloworld" class="cn.itcast.action.HelloWorld">
   <result>/WEB-INF/page/hello.jsp</result>
  </action>
</package>

 

4、plainText(以源码形式显示,一般用于需要显示技术网站显示源码)

 

<action name="plainText">
   <result type="plainText">
    <param name="location">/index.jsp</param>
    <param name="charset">UTF-8</param>
   </result>
</action>

 

 

另外说明一下全局视图,和为action 注入属性

全局视图:

<package name="itcast" namespace="/test" extends="base">

 <global-results>
   <result name="message">/WEB-INF/page/message.jsp</result>
 </global-results>

 <action name="manage" class="cn.itcast.action.HelloWorld"
   method="add">
 </action>
</package>

 

public class HelloWorld {
	
	public String add() {
		
	      return "message";
		
	}
}

 

这种方式只能在该包内的action可以调用全局视图,所以要对其进行更改。使用包继承。

 

<package name="base" extends="struts-default">
  <global-results>
   <result name="message">/WEB-INF/page/message.jsp</result>
  </global-results>
 </package>
 <package name="itcast" namespace="/test" extends="base">

  <action name="manage" class="cn.itcast.action.HelloWorld"
   method="add">
  </action>
 </package>

 <package name="it" namespace="/test123" extends="base">
  <action name="manage" class="cn.itcast.action.HelloWorld"
   method="add">
  </action>
 </package>

 

这样所有的包就都可以进行访问了。

 

 

action注入属性

<action name="list" class="cn.itcast.action.HelloWorld"
   method="execute">
     <param name="savePath">xxxxxx</param>
     <result name="success">/WEB-INF/page/hello.jsp</result>
</action>

public class HelloWorld {

	private String savePath;

	public String getSavePath() {
		return savePath;
	}

	public void setSavePath(String savePath) {
		this.savePath = savePath;
	}
	public String add() {
		
	    return "message";
		
	}
}

   

 

 

<%@ 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>Struts2例子</title>
</head>
<body>
 ${savePath }
</body>
</html>

  

分享到:
评论

相关推荐

    传智播客_result的各种视图转发类型及全局

    本教程主要围绕"传智播客_result的各种视图转发类型及全局"展开,这涉及到Struts2框架中的Action结果处理方式以及全局配置。 首先,Struts2中的Action结果类型是连接Action和视图的桥梁。当一个Action执行完毕后,...

    Struts2--result配置的各种视图转发类型

    这篇博文将深入探讨Struts2中的result配置以及各种视图转发类型。 首先,让我们理解Result的基本概念。在Struts2的配置文件(如struts.xml)中,每个Action可以有多个结果,每个结果对应一个特定的视图。Result配置...

    action之间的跳转

    Action 之间的跳转是 Struts2 框架中的一种机制,允许不同的 Action 之间进行跳转,以实现复杂的业务逻辑。这种机制可以分为两种类型:chain 和 redirect-action。 1. Chain 类型 当 type 为 chain 时,说明是 ...

    struts 2 转发.rar

    Struts2允许动态地确定转发的目标,通过在Action类的方法上使用`@Result`注解或在结果类型中设置属性。例如: ```java @Action("myAction") public String execute() { // 业务逻辑... return "success"; // ...

    Action名称的搜索顺序

    本文将深入探讨Action名称的搜索顺序、Action配置的默认值以及Action中Result的不同结果类型。 #### Action名称的搜索顺序 在Struts2中,Action的搜索顺序是由其配置文件(通常是struts.xml)决定的。当用户请求被...

    demo.zip_action

    描述中提到的“Action中result的各种转发类型”,这涉及到Struts 2的Result机制。Result是用来控制请求如何被转发到视图层的。有多种Result类型,如`dispatcher`(默认类型,将请求转发到JSP或其他Servlet容器支持的...

    Struts2中struts_xml的Action配置详解

    常见的结果类型有`dispatcher`(转发到一个JSP页面)、`stream`(下载文件)等。例如: ```xml &lt;action name="saveUser" class="com.example.SaveUserAction" method="save"&gt; &lt;result name="success"&gt;/success.jsp ...

    基于用户登陆的struts2中action的分类实例

    Struts2通过配置文件(如struts.xml)来定义Action的映射,包括请求路径、结果类型和转发路径等。 在用户登录的场景下,我们可以将Action分为以下几类: 1. **登录验证Action**:这是最基础的Action,用于接收用户...

    struts2中result类型之redirectAction

    在Struts2中,Result是Action执行后控制流程的重要组件,它定义了Action执行完毕后如何转发或重定向到一个新的页面。"redirectAction"是Struts2中的一种Result类型,专门用于实现HTTP级别的重定向。 重定向是一种...

    Struts2 in action中文版+配套源代码

    "Struts2InAction.war"可能包含了书中的所有示例代码,覆盖了各种主题,包括Action、拦截器、结果类型、OGNL表达式、表单验证、国际化等。通过阅读和运行这些代码,开发者可以更直观地了解Struts2的运作方式和实际...

    在Struts2中的结果集类型

    在Struts2框架中,结果集类型(Result Types)是用于控制动作(Action)执行后如何处理返回的结果。它们定义了如何将Action的返回值映射到实际的HTTP响应。以下是对Struts2中几种主要结果集类型的详细说明: 1. **...

    web_xml中ActionServlet中的属性

    在Struts框架中,`ActionServlet`是一个关键的Servlet实现,它负责管理应用程序的业务逻辑和视图呈现。`web.xml`文件是部署描述符,用于配置Web应用的各个组件,包括`ActionServlet`的属性。以下是对`web.xml`中`...

    struts2中常用Result类型(type)的用法和出现的问题

    Struts2 中的 Result 类型(type)是指在 Struts2 框架中用于确定 action 执行结果的方式。常用的 Result 类型有 dispatcher、redirect 和 chain 三种。这三种类型的用法和实现方式如下: 一、dispatcher ...

    struts2 中action的使用

    7. **结果类型(Result Types)**:Struts2支持多种结果类型,如`dispatcher`(转发到JSP页面)、`redirect`(重定向URL)、`stream`(流式输出,如下载文件)等。你可以根据业务需求选择合适的结果类型。 8. **...

    struts中dispatchAction用法

    4. **处理响应**:每个方法执行完毕后,通常会返回一个ActionForward对象,指示Struts控制器如何转发请求到相应的视图(JSP页面)。 通过DispatchAction,我们可以将复杂的业务逻辑分解成多个小的、易于管理和测试...

    Struts+In+Action中文版

    2. **配置文件**:Struts2的配置文件通常为struts.xml,用于配置Action、结果类型、拦截器等,但现代版本中也支持使用注解配置。 3. **拦截器(Interceptor)**:拦截器是Struts2中的一个重要概念,它可以在Action...

    Web APP 如何实现类似Nginx反向代理转发功能-zhangyannan1

    在实际应用中,我们可以根据需要调整反向代理转发规则,例如根据用户的IP地址、浏览器类型等信息来进行转发。同时,我们也可以使用其他技术,例如负载均衡器、CDN 等来实现反向代理转发功能。 使用 Web APP 实现...

    重新封装struts中action类

    在描述中提到的封装主要目标是屏蔽`ActionMapping`对象,使得子类化的`Action`类中的方法只需要返回`String`类型的结果。 `ActionMapping`是Struts框架中的一个关键类,它包含了关于一个特定`Action`的信息,如动作...

    Struts1.2Action之处理多个业务

    在Struts1.2中,可以使用`&lt;global-exceptions&gt;`标签来定义全局的异常处理,当Action执行过程中抛出异常时,会自动转发到对应的错误页面,这对于统一处理异常情况和提高代码可维护性有很大帮助。 **六、总结** ...

Global site tag (gtag.js) - Google Analytics