`

Struts2使用Annotation返回Json

阅读更多

      最近使用ssh構建服務器,用於與android客戶端的通訊。期間每每添加action或者new method都必須改配置文件,久而久之很煩,於是於昨夜決定,今日起身后嘗試用annotation返回json(過往不曾嘗試...).

      由於之前嘗試使用annotation跳轉到頁面,因此覺得返回json應該是差不多的。不過真的誰試誰知道...哎...

      最後通過木有大腿的毅力,終於成果了。遂記,或拯救他人於水深火熱之中。


      先說說需要的jars,如下圖:

      


     然後,看一下目錄結構:


     


    對於model 的話,像平常一樣使用json annotation就可以,在此就不截圖了。

    現在來看一下action.



import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;

import com.vincent.model.User;

@ParentPackage("json-default")
@Namespace("/testjson")
public class TestAction {

	private User user;

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	@Action(value = "user", results = { @Result(name = "success", type = "json") })
	public String getJson() {

		user = new User("vincent");

		return "success";
	}
}


      需要注意的是,ParentPackage一般是struts-default, 但由於我需要返回json,就改成json-default。如果有經驗的朋友應該可以理解到,這個就是相當於struts.xml中<package/>的extend.

      另外需要注意的是,像使用配置文件配置返回Json一樣,返回的對象都要有對應的getter/setter,否則只返回{"json":"success"}; 再者,如果是使用頁面進行跳轉的話,@Action 中value的值格式是"/*",*是對應的name.


      最後,來看看web.xml的配置:



<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>Struts2Example1</display-name>
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	
	<filter>
		<!-- Struts2 annotation -->
		<filter-name>struts</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
		<!-- //固定格式 -->
		<init-param>
			<param-name>actionPackages</param-name>
			<!-- com.struts2.action1,com.struts.action2 -->
			<param-value>com.vincent.action.TestAction</param-value>
		</init-param>
	</filter>
	
	
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

</web-app> 

   

   注意:如果是有多個action的話,action之間是使用","隔開。



    最後,在瀏覽器上敲入:

     http://localhost:8080/StrutsAnnotationReturnJson/testjson/user

    就可以看到如下結果:

    


    最最最后,各位不嫌棄的話,小弟附上源碼。謝謝。

    這次就到這裡吧,看定影去.

 


 

分享到:
评论

相关推荐

    struts2annotation json

    struts2,json-plugin, 并全注解零配置

    Struts2 Spring2.5 Hiberante3.3.2 +ExtJS(Struts2-json)做的CRUD

    本Demo采用Struts2.1.8+Spring2.5.6(Annotation注解)+Hiberante3.3.2(Annotation注解)+ExtJS(Struts2-json)

    JQuery+Struts2+JSON0+Spring+Hibernat+XFire整合实例

    1、JSON0.34使用的是struts2附带的struts2-json-plugin-2.1.8.1.jar 2、db是mysql,名字为test,用户名root,密码空 3、com.morningstar.utility.WSUtility为调用WebService的客户端代码,在调用这个WebService返回...

    JQuery1.4.2+Struts2.1.8+JSON0.34+Spring2.5.6+Hibernate3.5+XFire1.2.6整合实例

    1、JSON0.34使用的是struts2附带的struts2-json-plugin-2.1.8.1.jar 2、db是mysql,名字为test,用户名root,密码空 3、com.morningstar.utility.WSUtility为调用WebService的客户端代码,在调用这个WebService返回...

    struts2与extjs tree的完美结合

    利用annotation和struts2json插件完美的做出了服务器端请求tree节点的例子

    低清版 大型门户网站是这样炼成的.pdf

    (Struts 2+Spring 2+Hibernate 3).pdf(完整版) 网上有高清版350M的。可以去下 http://115.com/file/be5gwid8 请于下载后 24H 内及时删除!请抱着学习的态度下载此资料。 总共900多页!!!!!!! 第1篇 ...

    流程管理系统,rbac,dwr

    使用技术: Extjs3、Struts2、Spring、Hibernate Annotation(JPA)、JBPM4 + Android + iPhone 运行环境:Solaris+Weblogic Express+Oracle10G+JRE1.6(双机热备部署方案) 架构描述:本系统Web展现层采用了流行的...

    S2S3H3整合以及泛型Dao与Service封装

    本程序整合了struts-2.2.3.1+spring-framework-3.1.0+hibernate-distribution-3.6.8+JSON+MySQL+Annotation,并且对Dao和Service进行了封装,内含.jar包,并且解决了一对多双向关联的could not initialize proxy - ...

    web开发常用jar

    struts2-spring-plugin-2.0.14.jar struts2整合spring所需要的包 xwork-2.0.7.jar xwork核心包 antlr-2.7.6.jar 一个语言转换工具, Hibernate利用它实现 HQL 到 SQL 的转换模板相关操作需要包 javassist...

    java开发常用jar包

    struts2-spring-plugin-2.0.14.jar struts2整合spring所需要的包 xwork-2.0.7.jar xwork核心包 antlr-2.7.6.jar 一个语言转换工具, Hibernate利用它实现 HQL 到 SQL 的转换模板相关操作需要包 javassist-3.9.0...

    javaweb项目常用jar包

    struts2-json-plugin-2.3.20.jar struts2-sitemesh-plugin-2.0.14.jar struts2-spring-plugin-2.3.20.jar trove4j-2.0.2.jar ueditor-1.1.1.jar unoil-3.0.1.jar userSystem-1.0.jar velocity-1.5.jar ...

    java开源包2

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java命名规范 开发规范

    b. 配置struts-moduleName.xml; 直接跳转示例; 调用Service示例; c. 开发对应的{EntityName}Action类; 该类必须继承com.hikvision.swdf.xx.BaseAction&lt;{EntityName}&gt;,该Action类有一个关键属性entity,即泛型...

    java开源包8

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    java开源包1

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包11

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包3

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包6

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

Global site tag (gtag.js) - Google Analytics