原創:struts2+json+android整合開發解析前奏

Red88Army發表於2020-04-06

很長時間沒有寫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

相關文章