MyException - 我的异常网
当前位置:我的异常网» JavaScript » 原创:struts2+json+android调整开发解析前奏

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

www.MyException.Cn  网友分享于:2015-08-26  浏览:7次
原创: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

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

文章评论

漫画:程序员的工作
漫画:程序员的工作
我是如何打败拖延症的
我是如何打败拖延症的
编程语言是女人
编程语言是女人
Java程序员必看电影
Java程序员必看电影
程序员必看的十大电影
程序员必看的十大电影
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
中美印日四国程序员比较
中美印日四国程序员比较
旅行,写作,编程
旅行,写作,编程
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
老程序员的下场
老程序员的下场
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员都该阅读的书
程序员都该阅读的书
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
程序员的鄙视链
程序员的鄙视链
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
我的丈夫是个程序员
我的丈夫是个程序员
代码女神横空出世
代码女神横空出世
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
程序员应该关注的一些事儿
程序员应该关注的一些事儿
为什么程序员都是夜猫子
为什么程序员都是夜猫子
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
10个调试和排错的小建议
10个调试和排错的小建议
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
程序员和编码员之间的区别
程序员和编码员之间的区别
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
总结2014中国互联网十大段子
总结2014中国互联网十大段子
鲜为人知的编程真相
鲜为人知的编程真相
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
如何成为一名黑客
如何成为一名黑客
 程序员的样子
程序员的样子
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
那些争议最大的编程观点
那些争议最大的编程观点
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有