`

原创:struts2+json+android整合开发解析前奏

阅读更多
	很长时间没有写bolg,自己也没有坚持下去,我真得不敢想象自己在前两个月是怎么走来的,从早到晚不停的授课,自己累得够呛!但是欣慰的时,我带的河软csdn乐知学院Java的40多名学员都就业了,都进入了企业工作,为他们有今天的成果,而感到骄傲,在这里我也真诚的祝福他们,能够在企业的大环境下,成长的更快!
	呵呵说了那么多,那好好的谈谈下面主要介绍的内容吧,今天我给大家带来的是android2.2+struts2+json的开发过程,此案例为在android客户端显示最新的商品信息为例,重点介绍json的解析过程。
	
	首先我们来开发服务器端程序,此案例采用eclipse开发工具
	首先create a Dynamic web project项目,在Dynamic Web Project界面中配置Target runtime 及 Dynamic web module version (此版本案例选择的为2.5),点击完成即可。
	、搭建struts2的开发环境,引入以下类库文件,
    struts2-json-plugin-2.1.8.1.jar
     json-lib-2.1.jar 
	commons-collections-3.2.jar 
	commons-beanutils-1.7.0.jar 
	commons-lang-2.3.jar 
	commons-logging-1.0.4.jar 
	ezmorph-1.0.3.jar
	这7个包是返回json形式的数据必须的。因为json大量引用了Apache commons的包,所以要加入4个,commons包,除了commons的包外,还需要引入一个 ezmorph的包。最后加入struts2必须的6个包: 
	struts2-core-2.1.8.1.jar 
	xwork-core-2.1.6.jar 
	ognl-2.7.3.jar 
	freemarker-2.3.15.jar 
	commons-fileupload-1.2.1.jar 
	commons-io-1.3.2.jar
	
	修改web.xml及添加struts.xml文件()
web.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

	<display-name>Struts Blank</display-name>

	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
	</welcome-file-list>

</web-app>

struts.xml位于src目录内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

</struts>
	创建相应的实体bean,业务层及action层
package cn.redarmy.domain;

import java.io.Serializable;

public class Good implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private Integer id;
	private String name;
	private float price;
//省去了.构造器 set,get方法

//service层
接口:
import java.util.List;

import cn.redarmy.domain.Good;

public interface GoodService {

	public abstract List<Good> getNewsGood();

	public abstract Good findGood();

}

类:
package cn.redarmy.service.impl;

import java.util.ArrayList;
import java.util.List;

import cn.redarmy.domain.Good;
import cn.redarmy.service.GoodService;

public class GoodServiceImpl implements GoodService {

	/* (non-Javadoc)
	 * @see cn.redarmy.service.impl.GoodService#getNewsGood()
	 */
	@Override
	public List<Good> getNewsGood() {
		// 定义返回的结果集
		List<Good> goods = new ArrayList<Good>();
		// 在这里可以到数据库中查询最新的商品信息
		goods.add(new Good(1, "苹果ipad2", 3688));
		goods.add(new Good(2, "thinkPad E40 0579A12", 3799));
		goods.add(new Good(3, "thinkPad", 3688));
		goods.add(new Good(4, "苹果ipad2保护膜", 400));
		return goods;
	}

	/* (non-Javadoc)
	 * @see cn.redarmy.service.impl.GoodService#findGood()
	 */
	@Override
	public Good findGood() {
		// 也是从数据库中查询出来的
		Good good = new Good(1, "苹果ipad2", 3688);
		return good;
	}
}

Action:
package cn.redarmy.action;

import java.util.List;

import cn.redarmy.domain.Good;
import cn.redarmy.service.GoodService;
import cn.redarmy.service.impl.GoodServiceImpl;

import com.opensymphony.xwork2.ActionSupport;

public class GoodAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 6340167538296898588L;

	// 定义业务操作bean
	private GoodService goodService = new GoodServiceImpl();

	// 定义返回的对象
	private List<Good> goods;
	private Good good;

	public List<Good> getGoods() {
		return goods;
	}

	public void setGoods(List<Good> goods) {
		this.goods = goods;
	}

	public Good getGood() {
		return good;
	}

	public void setGood(Good good) {
		this.good = good;
	}

	// 查询最新商品
	public String findAll() {
		goods = goodService.getNewsGood();
		return SUCCESS;
	}

	// 查询单个商品
	public String findById() {
		good = goodService.findGood();
		return SUCCESS;
	}

}
	配置后的struts.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

	<constant name="struts.enable.DynamicMethodInvocation" value="false" />
	<constant name="struts.devMode" value="false" />

                                            <!-- extends 继承json-default -->
	<package name="default" namespace="/csdn" extends="json-default">
		<action name="findGood" class="cn.redarmy.action.GoodAction"
			method="findById">
			<!-- 设置返回类型为json -->
			<result name="success" type="json">
				<param name="includeProperties">
					good\.id,good\.name,good\.price
				</param>
			</result>
			<result name="input">/WEB-INF/index.jsp</result>
		</action>
		<action name="listNewsGoods" class="cn.redarmy.action.GoodAction"
			method="findAll">
			<!-- 设置返回类型为json -->
			<result name="success" type="json">
				<param name="includeProperties">
					goods\[\d+\]\.id,goods\[\d+\]\.name,goods\[\d+\]\.price
				</param>
			</result>
			<result name="input">/WEB-INF/index.jsp</result>
		</action>
	</package>

</struts>

至此服务器端开发已经完毕,在这里我比没有真正的从数据库提取数据,而是写死得,但如果连接数据库的操作那对于你来说应该不难吧!

以上内容归redarmychen版权所有,如想转载请附带出处,如有疑问请发邮件至redarmy.chen@gmail.com

分享到:
评论
4 楼 tanghanlin 2012-05-02  
3 楼 Jorson33 2011-12-05  
高手!!
2 楼 maxrocray 2011-08-08  
跟android有何关系?
1 楼 flyering 2011-07-22  
军哥威武,以后多多请教。

相关推荐

Global site tag (gtag.js) - Google Analytics