- 浏览: 517241 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (278)
- java (41)
- 设计模式 (4)
- sql (10)
- webservice (2)
- spring (9)
- struts (6)
- struts2 (32)
- hibernate (27)
- Struts_hibernate_Spring整合 (4)
- Velocity (1)
- Servlet (9)
- JSP (6)
- javascript (19)
- jquery (10)
- ajax (4)
- html、xml (3)
- JDBC (2)
- JDK (6)
- mysql (2)
- oracle (11)
- SqlServer (1)
- DB2 (4)
- tool (7)
- linux (5)
- UML (1)
- eclipse (8)
- 执行文件 (1)
- 应用服务器 (4)
- 代码重构 (1)
- 日本語 (19)
- 交规 (1)
- office (9)
- firefox (1)
- net (1)
- 测试 (1)
- temp (6)
- 对日外包 (1)
- windows (1)
- 版本控制 (1)
- android (2)
- 项目管理 (1)
最新评论
一。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。
发表评论
文章已被作者锁定,不允许评论。
-
Struts1 与 Struts2 的12点区别
2011-11-16 11:14 7381) 在Action实现类方面 ... -
Struts 2 的 Ajax 支持(四)
2011-03-14 16:21 17375.4 tabbedpanel 标签 ... -
Struts 2 的 Ajax 支持(三)
2011-02-11 13:18 24265.2 submit 和 a 标签 ... -
Struts 2 的 Ajax 支持(二)
2011-01-27 14:08 2391四、 基于 Dojo 的 pub-sub 事件模型 ... -
Struts 2 的 Ajax 支持(一)
2011-01-20 14:55 2482一、 Ajax 概述 ... -
Struts 2 的拦截器(三)
2011-01-20 13:09 2905六、 拦截器示例 : 实现权限控制 权限检 ... -
Struts 2 的拦截器(二)
2011-01-12 16:38 1624四、 开发自己的拦截器 Struts 2 ... -
Struts 2 的拦截器(一)
2010-12-31 16:53 2016一、 理解拦截器 ... -
Struts 2 的标签库(五)
2010-12-29 11:35 11366.8 select 标签 以下代码 都是基 ... -
Struts 2 的标签库(四)
2010-12-24 16:21 1639六、 表单标签 表单标签,分为 2 种 : f ... -
Struts 2 的标签库(三)
2010-12-20 14:15 1967四、 数据标签 数据标签主要 ... -
Struts 2 的标签库(二)
2010-12-15 16:21 2026三、 控制标签 Str ... -
Struts 2 的标签库(一)
2010-12-13 13:47 1358一、 Struts 2 标签库概述 ... -
Struts 2 的国际化(二)
2010-12-09 13:25 2254二、 Struts 2 的国际化入门 ... -
Struts 2 的国际化(一)
2010-12-06 22:44 1302一、 程序国际化简 ... -
Struts2 上传和下载文件(三)
2010-12-03 14:58 1790三、 同时上传多个 ... -
Struts2 上传和下载文件(二)
2010-11-29 13:37 1977二、 Struts 2 的文件上传 ... -
Struts2 上传和下载文件(一)
2010-11-17 22:28 2076一、 文件上传的原理 1. 表单元 ... -
struts2 输入校验 (四)
2010-11-15 22:43 1210六、 手动完成输入校验 对于一些特殊的检验 ... -
struts2 输入校验 (三)
2010-11-08 13:25 1715五、 内建校验器 S ...
相关推荐
- **struts.xml**:这是Struts2框架的核心配置文件,定义了应用程序中的Action映射、结果类型以及拦截器等关键配置信息。它主要包含以下几个元素: - `package`:表示一个包,其中可以包含多个Action。 - `action`...
在"Struts 2使用注解配置Action"中,我们不再需要在struts.xml中为每个Action类手动添加配置。相反,我们可以在Action类或者方法上直接使用注解来声明它们的功能。这样不仅提高了代码的可读性,还使得配置更加灵活。...
Struts2可以与Spring框架无缝集成,通过`struts-plugin.xml`配置文件将Action实例交由Spring管理,实现依赖注入。 **五、Struts2配置的最佳实践** 1. 尽可能减少对DMI的使用,以提高安全性。 2. 使用包结构组织...
根据提供的文件信息,我们可以从《Struts 2实战 Struts2 in Action》这一书籍中提炼出与Struts 2框架相关的多个重要知识点。Struts 2是一个基于Java的开源Web应用框架,它继承了Struts 1的优点并进行了大量的改进和...
总结,Struts2配置涉及多个方面,包括核心库的引入、配置文件的编写、Action、Result、Interceptor的定义以及与Spring的整合等。通过合理配置,可以构建出高效、灵活的Web应用。在实际项目中,应根据需求调整和优化...
在处理用户请求时,Struts2允许开发者通过Action类来接收和处理参数,包括中文参数。当我们需要通过POST方法提交包含中文字符的数据时,可能会遇到编码问题,因为HTTP请求默认使用的是ASCII编码,而中文字符需要UTF-...
- **XML配置**:传统的Struts2配置通常在struts.xml文件中进行,定义Action、Result和Interceptor等元素。 - **注解配置**:Struts2也支持使用Java注解来简化配置,直接在Action类或方法上添加注解即可。 3. **...
- **Struts配置文件**:是Struts2的核心配置文件,通常位于`/WEB-INF/struts-config.xml`。 - 配置文件中定义了框架的主要行为,如Action映射、拦截器、结果类型等。 - 通过`struts-config.xml`文件,可以灵活地控制...
根据提供的信息,我们可以推断出这是一本关于Struts 2框架的书籍——《Struts 2实战 Struts 2 in action 的中文版》。本书主要介绍了Struts 2框架的相关概念、工作原理以及实际应用案例等内容。接下来,我们将根据...
配置文件在Struts2中起着至关重要的作用,它们定义了请求如何被映射到特定的Action,以及如何处理结果。了解Struts2配置文件的加载顺序对于优化应用性能和解决配置问题至关重要。 Struts2的配置主要分布在以下几个...
1. **使用通配符配置Action**: - 例子:`<action name="student*" method="{1}" class="com.example.StudentAction">` - 这里的`student*`是一个通配符模式,匹配所有以`student`开头的Action。 - `{1}`表示...
总之,`struts_xml`中的Action配置是Struts2应用的基石,通过它可以灵活地定义请求与业务逻辑的映射关系,以及后续的页面跳转和拦截器链,从而构建出高效、可维护的Web应用。深入了解和熟练掌握这部分知识对于提升...
在这个文件中可以配置Action、拦截器、结果类型等。 - **示例配置**: ```xml <struts> <package name="default" namespace="/" extends="struts-default"> <action name="hello" class=...
Struts2框架中的Action是核心组件之一,它负责接收HTTP请求并进行业务逻辑处理,然后将控制转向相应的视图进行展示。在Struts2中,Action的...在实际应用中,应根据项目需求合理选择和配置Action,同时注意安全问题。
- 使用 `<servlet>` 标签配置ActionServlet。 - `servlet-name` 属性: 指定名称,如 `action`。 - `servlet-class` 属性: 指定 `org.apache.struts.action.ActionServlet` 类。 - `<servlet-mapping>` 标签: ...
配置文件在Struts2中起着至关重要的作用,它定义了框架的行为、动作映射、拦截器和其他关键设置。以下是Struts2配置文件的一些核心元素和属性的详细说明: 1. **配置文件结构**: Struts2的配置通常存储在一个名为...
`struts.xml` 文件是Struts2的核心配置文件之一,主要负责管理和定义应用程序中的Action映射以及相关的Result定义。具体来说,该文件包括以下几个关键部分: 1. **Action 映射**: - 指定每个Action的名称、执行的...
7. **配置文件**:Struts2的配置主要通过`struts.xml`进行,它定义了Action、结果类型、拦截器栈等。此外,Spring的配置文件(如`applicationContext.xml`)则负责Bean的管理和依赖注入。 8. **过滤器配置**:在`...
在 Struts2 框架中,Redirect 和 Redirect-action 是两个不同的 Result 配置类型。Redirect 配置用于重定向到一个新的 URL,而 Redirect-action 配置用于重定向到一个 Action。 Redirect-action 配置可以省略后缀名...