<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的各种视图转发类型及全局"展开,这涉及到Struts2框架中的Action结果处理方式以及全局配置。 首先,Struts2中的Action结果类型是连接Action和视图的桥梁。当一个Action执行完毕后,...
这篇博文将深入探讨Struts2中的result配置以及各种视图转发类型。 首先,让我们理解Result的基本概念。在Struts2的配置文件(如struts.xml)中,每个Action可以有多个结果,每个结果对应一个特定的视图。Result配置...
Action 之间的跳转是 Struts2 框架中的一种机制,允许不同的 Action 之间进行跳转,以实现复杂的业务逻辑。这种机制可以分为两种类型:chain 和 redirect-action。 1. Chain 类型 当 type 为 chain 时,说明是 ...
Struts2允许动态地确定转发的目标,通过在Action类的方法上使用`@Result`注解或在结果类型中设置属性。例如: ```java @Action("myAction") public String execute() { // 业务逻辑... return "success"; // ...
本文将深入探讨Action名称的搜索顺序、Action配置的默认值以及Action中Result的不同结果类型。 #### Action名称的搜索顺序 在Struts2中,Action的搜索顺序是由其配置文件(通常是struts.xml)决定的。当用户请求被...
描述中提到的“Action中result的各种转发类型”,这涉及到Struts 2的Result机制。Result是用来控制请求如何被转发到视图层的。有多种Result类型,如`dispatcher`(默认类型,将请求转发到JSP或其他Servlet容器支持的...
常见的结果类型有`dispatcher`(转发到一个JSP页面)、`stream`(下载文件)等。例如: ```xml <action name="saveUser" class="com.example.SaveUserAction" method="save"> <result name="success">/success.jsp ...
Struts2通过配置文件(如struts.xml)来定义Action的映射,包括请求路径、结果类型和转发路径等。 在用户登录的场景下,我们可以将Action分为以下几类: 1. **登录验证Action**:这是最基础的Action,用于接收用户...
在Struts2中,Result是Action执行后控制流程的重要组件,它定义了Action执行完毕后如何转发或重定向到一个新的页面。"redirectAction"是Struts2中的一种Result类型,专门用于实现HTTP级别的重定向。 重定向是一种...
"Struts2InAction.war"可能包含了书中的所有示例代码,覆盖了各种主题,包括Action、拦截器、结果类型、OGNL表达式、表单验证、国际化等。通过阅读和运行这些代码,开发者可以更直观地了解Struts2的运作方式和实际...
在Struts2框架中,结果集类型(Result Types)是用于控制动作(Action)执行后如何处理返回的结果。它们定义了如何将Action的返回值映射到实际的HTTP响应。以下是对Struts2中几种主要结果集类型的详细说明: 1. **...
在Struts框架中,`ActionServlet`是一个关键的Servlet实现,它负责管理应用程序的业务逻辑和视图呈现。`web.xml`文件是部署描述符,用于配置Web应用的各个组件,包括`ActionServlet`的属性。以下是对`web.xml`中`...
Struts2 中的 Result 类型(type)是指在 Struts2 框架中用于确定 action 执行结果的方式。常用的 Result 类型有 dispatcher、redirect 和 chain 三种。这三种类型的用法和实现方式如下: 一、dispatcher ...
7. **结果类型(Result Types)**:Struts2支持多种结果类型,如`dispatcher`(转发到JSP页面)、`redirect`(重定向URL)、`stream`(流式输出,如下载文件)等。你可以根据业务需求选择合适的结果类型。 8. **...
4. **处理响应**:每个方法执行完毕后,通常会返回一个ActionForward对象,指示Struts控制器如何转发请求到相应的视图(JSP页面)。 通过DispatchAction,我们可以将复杂的业务逻辑分解成多个小的、易于管理和测试...
2. **配置文件**:Struts2的配置文件通常为struts.xml,用于配置Action、结果类型、拦截器等,但现代版本中也支持使用注解配置。 3. **拦截器(Interceptor)**:拦截器是Struts2中的一个重要概念,它可以在Action...
在实际应用中,我们可以根据需要调整反向代理转发规则,例如根据用户的IP地址、浏览器类型等信息来进行转发。同时,我们也可以使用其他技术,例如负载均衡器、CDN 等来实现反向代理转发功能。 使用 Web APP 实现...
在描述中提到的封装主要目标是屏蔽`ActionMapping`对象,使得子类化的`Action`类中的方法只需要返回`String`类型的结果。 `ActionMapping`是Struts框架中的一个关键类,它包含了关于一个特定`Action`的信息,如动作...
在Struts1.2中,可以使用`<global-exceptions>`标签来定义全局的异常处理,当Action执行过程中抛出异常时,会自动转发到对应的错误页面,这对于统一处理异常情况和提高代码可维护性有很大帮助。 **六、总结** ...