struts2 提供的几种result-type有dispatcher,chain,freemarker,httpheader,redirect,redirectAction,stream,velocity,xslt,plaintext。挺丰富的。但是当前台为一个ajax调用,而且需要的返回结果只需要为String类型,或者是JSON类型时,这个时候就比较抓狂了。
所以不得不再深入研究下struts的代码。发现一个比较好的实现方法,即自己定义一个resultType实现Result接口即可。
比如为ajax自定义的result 该类主要提供ajax的字符串结果
package com.mypack.ajax
public class AJAXResult implements Result
{
private String ajax;
private HttpServletResponse rep;
/**
*
*/
private String chartSet = "GBK";
private static final long serialVersionUID = 3841999252996023829L;
public AJAXResult()
{
}
public void execute(ActionInvocation invocation) throws Exception
{
ajax = (String) invocation.getStack().findValue("ajax");
if (ajax == null)
{
throw new NullPointerException("没有定义ajax字符串结果集合,或者没有提供get方法");
}
rep = ServletActionContext.getResponse();
rep.reset();
rep.setContentType("text/html; charset=" + chartSet);
// rep.setCharacterEncoding(chartSet);
ServletOutputStream os = rep.getOutputStream();
os.write(ajax.getBytes(chartSet));
os.flush();
os.close();
}
public String getChartSet()
{
return chartSet;
}
public void setChartSet(String chartSet)
{
this.chartSet = chartSet;
}
}
而我们可以在struts.xml里面配置
<package name="ajax-default">
<result-types>
<result-type name="ajax"
class="com.mypack.ajax.AJAXResult">
</result-type>
</result-types>
<action name="cardInfo" class="CardInfoACT">
<result name="ajax" type="ajax"/>
</action>
</package>
当然,我们也可以将这个类封装到另外的包里,然后放到全局的result里被所有的类引用该类型。前期是要引用ajax-default这个包。
相关推荐
在Struts2中,你可以通过在Action类的方法上添加特定的注解,如`@Result(type = "json")`,来指示该方法应该返回JSON格式的数据。 Struts2 JSON Plugin 2.3.8版本包含了以下关键特性: 1. 自动处理Action结果:当...
在Struts2中,结果类型(Result Type)是动作执行后处理结果的关键部分,它决定了如何将控制权转移给下一个资源,如JSP、FreeMarker模板或者重定向到其他URL。自定义结果类型允许开发者根据项目需求定制化结果处理...
<result-type name="json" class="org.apache.struts2.json.JSONResult"/> </result-types> ``` 接着,在Action类中,你可以定义一个返回JSON的Action方法,比如: ```java public class MyAction { public ...
Struts2是一个非常著名的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。在Web开发领域,Struts2以其灵活性、强大的MVC(Model-View-Controller)架构和丰富的插件库而备受赞誉。这个压缩包包含了...
2. **拦截器(Interceptors)**:Struts2的拦截器是其强大的特性之一,允许开发者在Action执行前后添加自定义逻辑。这些拦截器可以实现登录验证、日志记录、性能监控等多种功能。在源码中,你可以看到`...
开发者还可以自定义Result Type,通过创建新的Java类实现`com.opensymphony.xwork2.Result`接口,并在配置文件中注册这个类型。 在Action配置中,我们可以通过`<result>`元素来指定Action的特定结果。`<result>`...
Struts2的核心在于它的拦截器栈,它允许开发者自定义拦截器,实现各种功能,如日志记录、事务管理、权限控制等。 Struts2-upload-jar插件的使用通常涉及到以下几个关键知识点: 1. **配置文件**:在Struts2框架中...
Struts2-Json-Plugin 是一个专门为 Struts2 框架设计的插件,它使得在Struts2中处理Ajax请求并返回JSON数据变得更加简便。这个插件提供了"json"结果类型,允许Action直接被序列化为JSON格式,极大地简化了开发过程。...
`struts2-core-2.3.7-sources.jar` 是Struts2核心库的源代码,其中包含了许多关键组件,如Action、拦截器(Interceptor)、结果类型(Result Type)以及配置管理等。Action是Struts2的核心,它代表了用户请求的业务...
在Struts2中,自定义标签是开发者扩展框架功能和简化视图层编码的重要手段。自定义标签允许将复杂的逻辑封装到可重用的组件中,提高代码的可读性和可维护性。 在Struts2中创建自定义标签,通常涉及以下几个步骤: ...
6. **结果类型(Result Type)**:结果类型定义了Action执行后的响应方式,如重定向、转发、流或者使用模板技术渲染视图。Struts2内建了多种结果类型,并支持自定义结果类型。 7. ** strut2-struts2-core 包**:这...
此外,开发人员需要了解Struts2的配置和生命周期,因为很多漏洞都源于不正确的配置或者用户自定义拦截器。例如,不安全的Content-Type设置可能导致命令注入,而未正确过滤的用户输入可能触发OGNL(Object-Graph ...
5. **自定义JSON序列化和反序列化**:Struts2允许我们通过实现`org.apache.struts2.json.JSONWriter`接口来自定义JSON序列化过程,或者通过`org.apache.struts2.json.JSONProcessor`接口自定义反序列化过程。...
这篇博客"Struts2返回json -- demo"可能是关于如何在Struts2框架中实现JSON响应的教程。 在Struts2中,返回JSON数据主要依赖于`struts2-json-plugin`插件。首先,你需要确保在你的项目中已经添加了这个插件的依赖。...
Struts-xwork-core是Struts2框架的核心组件,它提供了Action和结果的执行模型,以及类型转换、数据验证和国际化等功能。在这个压缩包中,包含了该核心库的源代码,对于学习和理解Struts2的工作原理及其内部机制极具...
例如,可以通过继承`org.apache.struts2.dispatcher.mapper.ActionMapper`接口并注册为插件来创建自定义的Result。 在实际项目中,根据业务需求选择合适的结果类型是至关重要的。合理利用这些结果类型,不仅可以...
2. **配置结果类型**:在Struts2的配置文件(通常为struts.xml或struts.properties)中,我们需要注册刚刚创建的自定义ResultType。通过`<constant>`标签来设置`struts.objectFactory`属性,或者直接在`<package>`...
- **Action类与Result类型**:在Struts2中,Action类是业务逻辑的载体,Result类型负责决定请求处理后的跳转页面或资源。 - **Interceptor拦截器**:用于在Action调用前后执行特定逻辑,如登录验证、日志记录等。 ...
首先,Struts 2的核心功能在于它的Action和Result机制。Action是业务逻辑的载体,接收并处理来自用户请求的数据,然后通过Result将控制权转移给其他页面或者服务。Result则是Action执行后返回的结果,它可以是重定向...