`

struts2 配置 Action(二)

阅读更多

 

一。Action 配置结果

 

 

<action name="Login" class="lee.LoginAction">
   <!-- 为success 的逻辑视图配置 Result ,type 属性指定结果类型 -->
   <result name="success" type="dispatcher">
   		<!-- 指定该逻辑视图对应的实际视图资源 -->
   		<param name="location">/a.jsp</param>
   </result>
</action>

<param name...>的name属性有如下2个值:

》 location:参数指定了逻辑视图对应的实际视图资源

》 parse:指定是否允许在实际视图名中使用 OGNL 表达式,默认 true。

 

以上可以简写为:

<action name="Login" class="lee.LoginAction">
   <!-- 为success 的逻辑视图配置 Result ,type 属性指定结果类型 -->
   <result name="success">/a.jsp </result>
</action>
 

 之所以能简写,是因为:

  如果 <result> 没有指定 location 参数 ,系统将<result > /a.jsp </result>中间的字符串当成实际视图;如果没有指定name属性,则 name 属性采用默认值: success ;如果没有指定 type 属性,则采用默认结果 dispatcher 类型。

 

 

struts 支持的处理结果类型

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" />
	<!-- 用于与freeMarker 整合的结果类型 -->
	<result-type name="freemarker"
		class="org.apache.struts2.views.freemarker.FreemarkerResult" />
	<!-- 用于控制特殊的 HTTP 行为的结果类型 -->
	<result-type name="httpheader"
		class="org.apache.struts2.dispatcher.HttpHeaderResult" />
	<!-- 用于直接跳转到其他 URL 的结果类型 -->
	<result-type name="redirect"
		class="org.apache.struts2.dispatcher.ServletRedirectResult" />
	<!-- 用于直接跳转到其他 Action 的结果类型  -->
	<result-type name="redirectAction"
		class="org.apache.struts2.dispatcher.ServletActionRedirectResult" />
	<!-- 用于向浏览器返回一个 InputStream 的结果类型  -->
	<result-type name="stream"
		class="org.apache.struts2.dispatcher.StreamResult" />
	<!-- 用于整合 Velocity  的结果类型  -->
	<result-type name="velocity"
		class="org.apache.struts2.dispatcher.VelocityResult" />
	<!-- 用于整合 XML/XSLT  的结果类型  -->
	<result-type name="xslt"
		class="org.apache.struts2.views.xslt.XSLTResult" />
	<!-- 用于显示某个页面原始代码的结果类型  -->
	<result-type name="plainText"
		class="org.apache.struts2.dispatcher.PlainTextResult" />
</result-types>
 

除了以上内容,在 struts2-jasperreports-plugin.jar 的 struts-plugin.xml 还定义了别的 如 JSF之类的结果类型

 

二。plainText 结果类型

  plainText 是把该页面的 HTML代码显示在浏览器中

<action name="Login" class="lee.LoginAction">
   <!-- 为success 的逻辑视图配置 Result ,type 属性指定结果类型 -->
   <result name="success" type="plainText">/a.jsp</result>
</action>

 上面的代码,在页面中会出现 中文乱码问题, 解决办法如下:

<action name="Login" class="lee.LoginAction">
   <!-- 为success 的逻辑视图配置 Result ,type 属性指定结果类型 -->
   <result name="success" type="plainText">
   		<!-- 指定该逻辑视图对应的实际视图资源 -->
   		<param name="location">/a.jsp</param>
   		<!-- 指定使用特定的编码集来处理页面代码 -->
   		<param name="charSet">GBK</param>
   </result>
</action>
 

三。redirect 结果类型

    这个类型与 dispatcher 相对, dispatcher 是将请求转发 “Forward” 到指定的 JSP而 redirect 是将请求重定向 “Redirect” 到指定的视图资源。

 

    redirect 是 HttpServletResponse 的 sendRedirect(String),重定向就是重新产生一个请求,因此此前的所有请求参数,请求属性, Action 实例 和 Action 中封装的属性全部丢失。重定向以后地址栏显示新的地址。

<action name="Login" class="lee.LoginAction">
   <!-- 为success 的逻辑视图配置 Result ,type 属性指定结果类型 -->
   <result name="success" type="redirect">/a.jsp</result>
</action>

 

四。redirectAction 结果类型

 

    redirectAction 与 redirect相似,区别是 redirectAction 使用 ActionMapperFactory 提供的 ActionMapper 来重定向请求。

     当需要让一个 Action 处理结束后,直接重定向到另一个 Action 时,使用。

 

redirectAction有 2 个 参数

     1. actionName : 该参数指定重定向的 Action 名

    2. namespace : 该参数指定需要重定向的 Action 所在的命名空间

<package name="public" extends="struts-default">
	<action name="Login" class="lee.LoginAction">   
	   <result name="success" type="redirectAction">   
	   		<!-- 指定重定向的 actionName -->
	   		<param name="actionName">dashboard</param>   		
	   		<!-- 指定重定向的 actionName 的命名空间 -->
	   		<param name="namespace">/secure</param>
	   </result>
	</action>
</package>
<package name="secure" extends="struts-default" namespace="/secure">
   <action name="dashboard" class="lee.Dashboard">
     <result name="success">dashboard.jsp</result>     
     <!-- 配置一个 在同一个命名空间中的 redirectAction -->
     <result name="error" type="redirectAction">error</result>
   </action>
   <action name="error">
       <result>error.jsp</result>
   </action>
</package>

   再次声明 redirectAction 也是重定向,所以 此前的 Action 处理结果,请求参数,请求属性都会丢失。

 

 

五。动态结果

  也就是之前说过的 使用表达式语法匹配

 

<action name="crud_*" class="lee.CrudAction" method="{1}">
    <result name="input">/input.jsp</result> 
    <result>/{1}.jsp</result> 
</action>

 上面代码可以处理所有匹配 crud_*.action 的请求。

例如: crud_create.action 请求,系统将调用 lee.CrudAction 类的create()方法来处理。当处理结果为 input 字符串时,将转到 /input.jsp 页面; 当处理结果为 success 字符串时,将转入 create.jsp 页面。

 

以上内容还能使用 OGNL 表达式让请求参数来决定结果

 

 

六。请求参数决定结果

${属性名} 处理请求,属性名 就是对应 Action 实例里的属性 ,而且还能使用完全的 OGNL 表达式, 如下:

${属性名.属性名.属性名}

<action name="crud_*" class="lee.CrudAction" method="{1}">
    <result name="input" type="redirect">edit.action?skill=${curSkill.name}</result> 
</action>

 对于上面的代码, 要求在对应的 Action 实例里 包含 curSkill 属性,并且 curSkill 属性必须包含 name 属性,否则${curSkill.name} 将为 null

 

例子:

class MyAction extends ActionSupport{
	private String target;

	public String getTarget() {
		return target;
	}

	public void setTarget(String target) {
		this.target = target;
	}
	
	public String execute() throws Exception{
		this.target="yo";
		return SUCCESS;
	}
	
}
 
<action name="myAction" class="lee.MyAction">
    <result>/${target}.jsp</result> 
</action>

 以上 action 会跳转到 myAction 中 target 的值 所指向的页面

 

 

七。全局结果

<package name="public" extends="struts-default">
    <global-results>
        <result name="success">/&{target}.jsp</result>
    </global-results>
	<action name="Login" class="lee.LoginAction" />   	 
</package>

 注意:

  1. Action 内没有匹配任何的结果,但这不会影响系统运转,因为有一个 success 的全局 result ,这个全局的结果的作业范围对所有的 Action 都有效。

  2. 如果 Action 里包含一个与全局结果同名的 result ,则 Action 里的局部 result 会覆盖 global-results 里的 result。

 

 

 

 

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    ·Struts2配置文件介绍 超级详细

    - **struts.xml**:这是Struts2框架的核心配置文件,定义了应用程序中的Action映射、结果类型以及拦截器等关键配置信息。它主要包含以下几个元素: - `package`:表示一个包,其中可以包含多个Action。 - `action`...

    Struts 2使用注解配置Action

    在"Struts 2使用注解配置Action"中,我们不再需要在struts.xml中为每个Action类手动添加配置。相反,我们可以在Action类或者方法上直接使用注解来声明它们的功能。这样不仅提高了代码的可读性,还使得配置更加灵活。...

    struts2配置文件

    Struts2可以与Spring框架无缝集成,通过`struts-plugin.xml`配置文件将Action实例交由Spring管理,实现依赖注入。 **五、Struts2配置的最佳实践** 1. 尽可能减少对DMI的使用,以提高安全性。 2. 使用包结构组织...

    Struts 2实战 struts2 in Action

    根据提供的文件信息,我们可以从《Struts 2实战 Struts2 in Action》这一书籍中提炼出与Struts 2框架相关的多个重要知识点。Struts 2是一个基于Java的开源Web应用框架,它继承了Struts 1的优点并进行了大量的改进和...

    SSH笔记_Struts2配置

    总结,Struts2配置涉及多个方面,包括核心库的引入、配置文件的编写、Action、Result、Interceptor的定义以及与Spring的整合等。通过合理配置,可以构建出高效、灵活的Web应用。在实际项目中,应根据需求调整和优化...

    struts2 使用action属性接收中文参数(post提交)

    在处理用户请求时,Struts2允许开发者通过Action类来接收和处理参数,包括中文参数。当我们需要通过POST方法提交包含中文字符的数据时,可能会遇到编码问题,因为HTTP请求默认使用的是ASCII编码,而中文字符需要UTF-...

    Struts2 in action(struts2实战)

    - **XML配置**:传统的Struts2配置通常在struts.xml文件中进行,定义Action、Result和Interceptor等元素。 - **注解配置**:Struts2也支持使用Java注解来简化配置,直接在Action类或方法上添加注解即可。 3. **...

    struts2参数配置

    - **Struts配置文件**:是Struts2的核心配置文件,通常位于`/WEB-INF/struts-config.xml`。 - 配置文件中定义了框架的主要行为,如Action映射、拦截器、结果类型等。 - 通过`struts-config.xml`文件,可以灵活地控制...

    Struts 2实战 Struts 2 in action 的中文版

    根据提供的信息,我们可以推断出这是一本关于Struts 2框架的书籍——《Struts 2实战 Struts 2 in action 的中文版》。本书主要介绍了Struts 2框架的相关概念、工作原理以及实际应用案例等内容。接下来,我们将根据...

    struts2配置文件加载顺序

    配置文件在Struts2中起着至关重要的作用,它们定义了请求如何被映射到特定的Action,以及如何处理结果。了解Struts2配置文件的加载顺序对于优化应用性能和解决配置问题至关重要。 Struts2的配置主要分布在以下几个...

    Struts2_Action学习笔记、通配符{1},{2}

    1. **使用通配符配置Action**: - 例子:`&lt;action name="student*" method="{1}" class="com.example.StudentAction"&gt;` - 这里的`student*`是一个通配符模式,匹配所有以`student`开头的Action。 - `{1}`表示...

    Struts2中struts_xml的Action配置详解

    总之,`struts_xml`中的Action配置是Struts2应用的基石,通过它可以灵活地定义请求与业务逻辑的映射关系,以及后续的页面跳转和拦截器链,从而构建出高效、可维护的Web应用。深入了解和熟练掌握这部分知识对于提升...

    Struts2 in action

    在这个文件中可以配置Action、拦截器、结果类型等。 - **示例配置**: ```xml &lt;struts&gt; &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;action name="hello" class=...

    Struts2 Action参数详细说明

    Struts2框架中的Action是核心组件之一,它负责接收HTTP请求并进行业务逻辑处理,然后将控制转向相应的视图进行展示。在Struts2中,Action的...在实际应用中,应根据项目需求合理选择和配置Action,同时注意安全问题。

    struts2 配置文件

    - 使用 `&lt;servlet&gt;` 标签配置ActionServlet。 - `servlet-name` 属性: 指定名称,如 `action`。 - `servlet-class` 属性: 指定 `org.apache.struts.action.ActionServlet` 类。 - `&lt;servlet-mapping&gt;` 标签: ...

    struts2配置文件详细说明

    配置文件在Struts2中起着至关重要的作用,它定义了框架的行为、动作映射、拦截器和其他关键设置。以下是Struts2配置文件的一些核心元素和属性的详细说明: 1. **配置文件结构**: Struts2的配置通常存储在一个名为...

    struts2核心配置文件

    `struts.xml` 文件是Struts2的核心配置文件之一,主要负责管理和定义应用程序中的Action映射以及相关的Result定义。具体来说,该文件包括以下几个关键部分: 1. **Action 映射**: - 指定每个Action的名称、执行的...

    struts2 配置JSP时需要的jar

    7. **配置文件**:Struts2的配置主要通过`struts.xml`进行,它定义了Action、结果类型、拦截器栈等。此外,Spring的配置文件(如`applicationContext.xml`)则负责Bean的管理和依赖注入。 8. **过滤器配置**:在`...

    struts2 result配置详解

    在 Struts2 框架中,Redirect 和 Redirect-action 是两个不同的 Result 配置类型。Redirect 配置用于重定向到一个新的 URL,而 Redirect-action 配置用于重定向到一个 Action。 Redirect-action 配置可以省略后缀名...

Global site tag (gtag.js) - Google Analytics