此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【wtd】截止到2008-07-04 16:59:11的历史汇总数据(不包括此帖):
发帖的总数量:11 发帖的总分数:480
结贴的总数量:10 结贴的总分数:380
无满意结贴数:3 无满意结贴分:90
未结的帖子数:1 未结的总分数:100
结贴的百分比:90.91 % 结分的百分比:79.17 %
无满意结贴率:30.00 % 无满意结分率:23.68 %
值得尊敬
楼主【wtd】截止到2008-07-04 16:59:11的历史汇总数据(不包括此帖):
发帖的总数量:11 发帖的总分数:480
结贴的总数量:10 结贴的总分数:380
无满意结贴数:3 无满意结贴分:90
未结的帖子数:1 未结的总分数:100
结贴的百分比:90.91 % 结分的百分比:79.17 %
无满意结贴率:30.00 % 无满意结分率:23.68 %
值得尊敬
http://www.zhuaxia.com/item/665011388/?logId=207资料二:比较详细的介绍struts2与json整合的一篇文章。之中涉及到了YUI。看下也有好处
http://www.javaeye.com/topic/149891资料三:啥是Json
http://dev2dev.bea.com.cn/techdoc/2007/03/java-soa-introduction-json.html资料四:甚至整合了ORM的一个例子。我没有尝试过。也贡献出来吧
http://blog.csdn.net/myloon/archive/2007/11/08/1873652.aspx资料五:这个里面有用的不多。但是有一个整合的源码
http://www.javaeye.com/topic/149457不算资料的资料,除了Json的另外一个解决方案--DWR
我比较倾向于这种方案。但是没有深入的研究过。
http://space.xuancheng.org/index.php/uid-476-action-viewspace-itemid-1290OVER~~~
用类直接把输出的数组进行转换 后台不难,我有代码,LZ要的话,我跟贴贴出,主要是前端的调试很麻烦,struts2和EXT整合 不是难到后台
主要是前端页面显示。
ext2对JSON数据的处理支持很好,而且相比XML,JSON具有更好的处理性能。我前段是用struts2来做的,下面是一个action的例子:package action;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import com.googlecode.jsonplugin.annotations.JSON;
import common.CacheManager;
import domain.ListRange;
import domain.User;
import UserService;
import ErrorMessage;public class UserAction extends BaseActionSupport{
private UserService userService;
private int userid;
private String name;
private String loginid;
private String usertype; public String list(){
listrange=new ListRange();
List l=cacheManager.getUsersList();
if (l==null||l.size()==0){
listrange.setTotalSize(0);
return SUCCESS;
}
listrange.setTotalSize(l.size());
List l2=null;
if (limit<=0)
l2=l;
else{
l2=new ArrayList();
for (int i=start;i<start+limit&&i<l.size();i++){
l2.add(l.get(i));
}
}
listrange.setData(l2.toArray()); return SUCCESS;
} public String save(){
int rtn=0;
if (userid==0){
rtn=userService.addUser(loginid, name, usertype);
} else {
User user=new User();
user.setUserid(userid);
user.setName(name);
user.setUsertype(usertype);
user.setLoginid(loginid);
rtn=userService.updateUser(user);
}
setReturn(rtn);
return SUCCESS;
} @JSON(serialize=false)
public String getLoginid() {
return loginid;
}
public void setLoginid(String loginid) {
this.loginid = loginid;
}
@JSON(serialize=false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@JSON(serialize=false)
public String getUsertype() {
return usertype;
}
public void setUsertype(String usertype) {
this.usertype = usertype;
}
public void setUserService(UserService userService) {
this.userService = userService;
} @JSON(serialize=true)
public int getUserid() {
return userid;
} public void setUserid(int userid) {
this.userid = userid;
} @JSON(name="list")
public ListRange getListrange() {
return listrange;
} @JSON
public boolean isFailure() {
return failure;
}
@JSON
public boolean isSuccess() {
return success;
}
@JSON
public String getInfo() {
return info;
}}
上面的例子显示了取用户列表(分页)和保存用户的功能。
用到了com.googlecode.jsonplugin(开源JSON插件),在struts的配置文件设置:
<action name="user" class="userAction">
<result type="json"/>
</action> 指出返回的类型为json这样,struts action返回给客户端的就是一个JSON数据包
ext2处理这种JSON数据包支持很好。
HttpServletRequest request,HttpServletResponse response) throws ParseException{
LazyValidatorForm txryjcForm=(LazyValidatorForm)form;
int start=(txryjcForm.get("start")==null)?1:(Integer)txryjcForm.get("start");
int size=(txryjcForm.get("limit")==null)?10:(Integer)txryjcForm.get("limit");
String qdwdm=(txryjcForm.get("qdwdm")==null)?"":txryjcForm.get("qdwdm").toString();
String zdwdm=(txryjcForm.get("zdwdm")==null)?"":txryjcForm.get("qdwdm").toString();
String bbrq=(txryjcForm.get("bbrq")==null)?"":txryjcForm.get("qdwdm").toString();
String lx60=(txryjcForm.get("lx60")==null)?"":txryjcForm.get("qdwdm").toString();
String lx55=(txryjcForm.get("lx55")==null)?"":txryjcForm.get("qdwdm").toString();
String lx50=(txryjcForm.get("lx50")==null)?"":txryjcForm.get("qdwdm").toString();
String bdq=(txryjcForm.get("bdq")==null)?"":txryjcForm.get("qdwdm").toString();
String qxbm=UserInfo.getInstance().getQxbm();
Map<Object,Object> map=new HashMap<Object,Object>();
map.put("qdwdm", qdwdm);
map.put("zdwdm", zdwdm);
map.put("bbrq",new java.sql.Date(new SimpleDateFormat("yyyy/mm/dd").parse(bbrq).getTime()));
map.put("lx60", lx60);
map.put("lx55", lx55);
map.put("lx50", lx50);
map.put("bdq", bdq);
map.put("qxdm", qxbm);
Page queryPage=txryjc.pagedQuery(GrViewTxryjc.class, map, start / size + 1, size);
JSONObject json=new JSONObject();
try{
json.put("Total", queryPage.getTotalCount());
json.put("Limit", size);
JSONArray list=new JSONArray();
List rows=(List)queryPage.getResult();
for(int i=0;i<rows.size();i++){
GrViewTxryjc grViewTxryjc=(GrViewTxryjc)rows.get(i);
Map convert=new HashMap();
map.put("jclb", grViewTxryjc.getJclb());
map.put("dwdm", grViewTxryjc.getDwdm());
map.put("dwmc", grViewTxryjc.getDwmc());
map.put("xm", grViewTxryjc.getXm());
map.put("xb", grViewTxryjc.getXb());
map.put("bzhm", grViewTxryjc.getBzhm());
map.put("csrq", grViewTxryjc.getCsrq());
list.put(map);
json.put("txryjc", list);
}
}
catch(JSONException e){
e.printStackTrace();
System.out.println("错误:"+e.getMessage());
}
this.renderText(response, json.toString());
return null;
}//在父类的类中
protected void renderText(HttpServletResponse response, String text) {
render(response,text,"text/plain;charset=UTF-8");
}
protected void render(HttpServletResponse response, String text,String contentType){
try {
response.setContentType(contentType);
response.getWriter().write(text);
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}这个是手动转的JSON 是struts1.X的写法 2.0也可以这么转,用struts2.0的JSON转换也可以(有时候好像有问题)
要用上面的写法要去下个 JSON的JAR文件 网上有~~