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

开源框架课程总结系列 专栏收录该内容
34 篇文章 0 订阅
 很长时间没有写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  
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值