- 浏览: 404112 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
qiuqinjun:
你好,项目的文献能否打包学习下呢
java定时任务管理实现 -
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
使用jQuery Autocomplete(自动完成)插件 -
CommonAccount:
我的showModalDialog() 传对象参数,在子窗口用 ...
JS中showModalDialog (模态窗口)详细使用 -
wyfn18:
very good
使用jQuery Autocomplete(自动完成)插件 -
jiangqingtian:
xiexie
使用jQuery Autocomplete(自动完成)插件
关于在Struts2中结合json使用ajax进行动态无刷新查询某个列表并在前段显示,这里不是简单的刷新页面的某个属性,而是列表,即对应action中查询出ArrayList转换成json数据在前段通过js处理后来替换页面中某个容器的内容。
对于Struts2与json的基本配置将不在这里记录。下面将通过代码进行一一阐述,其中的关键类JsonUtil是早些时候获得于网络,已忘记原文地址,在此感谢前辈。
struts_member.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>
- <package name="user" extends="json-default" namespace="/user">
- <action name="qryOrder" class="productAction" method="qryOrder">
- <interceptor-ref name="params"/>
- <result type="json"></result>
- </action>
- </package>
- </struts>
其中json-default已经extends struts_base.xml
applicationContext.xml 申明action和service
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- .
- .
- .
- .
- .
- .
- <!-- Services -->
- <bean id="orderService" parent="transactionProxy">
- <property name="target">
- <ref bean="orderTarget"/>
- </property>
- </bean>
- <bean id="productAction" class="com.app.web.actions.ProductAction" singleton="false">
- <property name="orderService">
- <ref bean="orderService"/>
- </property>
- </bean>
- </beans>
ProductAction 内容
- package com.app.web.actions;
- import java.util.ArrayList;
- import java.util.List;
- import org.apache.log4j.Logger;
- import org.apache.struts2.ServletActionContext;
- import com.googlecode.jsonplugin.annotations.JSON;
- import com.netshop.comm.Constant;
- import com.netshop.comm.JsonUtil;
- import com.netshop.comm.lucene.ArticleSearchUtil;
- import com.netshop.model.member.MemberService;
- import com.netshop.model.order.IOrderService;
- import com.netshop.model.order.Order;
- import com.netshop.model.product.IProductService;
- import com.netshop.web.baseaction.AbstractAction;
- public class ProductAction extends AbstractAction{
- static Logger log = Logger.getLogger(ProductAction.class);
- private IOrderService orderService;
- private List<Order> orderList;
- private int proId;
- private String jsonResult;
- /**
- * 查询订单列表
- * @return
- * @throws Exception
- */
- public String qryOrder() throws Exception{
- try{
- //查询
- StringBuffer sql = new StringBuffer("SELECT m.email,m.level,o.proNum,o.orderTime FROM Order AS o ,Member AS m WHERE o.productId=");
- sql.append(proId).append(" AND o.status=").append(Constant.WAIT_BUYER_GOTO_PAY).append(" AND o.memberId=m.id");
- ArrayList list = (ArrayList) orderService.find(sql.toString());
- //对查询结果进行处理
- if(list!=null && list.size()>0){
- orderList = new ArrayList<Order>();
- for(int i=0;i<list.size();i++){
- Object obj[] = (Object[])list.get(i);
- if(obj!=null && obj.length==4){
- //将查询结果存入order
- Order order = new Order();
- order.setMemberEmail((String)obj[0]);
- order.setMemberLevel(((Integer)obj[1]).intValue());
- order.setProNum((Integer)obj[2]);
- order.setOrderTime((java.util.Date)obj[3]);
- //将order实例存入list
- orderList.add(order);
- }
- }
- }
- //orderList借用工具类转化成json类型的串
- jsonResult = JsonUtil.listToJson(orderList);
- //申明返回的结果,不然页面上不能显示
- ServletActionContext.getResponse().setContentType("text/xml");
- }catch(Exception e){
- log.info("qryOrder Exception="+e.getMessage());
- e.fillInStackTrace();
- }
- return SUCCESS;
- }
- @JSON(serialize = false)
- public IOrderService getOrderService() {
- return orderService;
- }
- public void setOrderService(IOrderService orderService) {
- this.orderService = orderService;
- }
- public List<Order> getOrderList() {
- return orderList;
- }
- public void setOrderList(List<Order> orderList) {
- this.orderList = orderList;
- }
- public int getProId() {
- return proId;
- }
- public void setProId(int proId) {
- this.proId = proId;
- }
- public String getJsonResult() {
- return jsonResult;
- }
- public void setJsonResult(String jsonResult) {
- this.jsonResult = jsonResult;
Order 类
里面对应的相关属性以及setter,getter方法,将不在说明
JsonUtil 类代码如下:
- package com.app.comm;
- import java.beans.IntrospectionException;
- import java.beans.Introspector;
- import java.beans.PropertyDescriptor;
- import java.util.List;
- public class JsonUtil {
- /**
- * @param object
- * 任意对象
- * @return java.lang.String
- */
- public static String objectToJson(Object object) {
- StringBuilder json = new StringBuilder();
- if (object == null) {
- json.append("/"/"");
- } else if (object instanceof String || object instanceof Integer || object instanceof Double) {
- json.append("/"").append((String)object).append("/"");
- } else {
- json.append(beanToJson(object));
- }
- return json.toString();
- }
- /**
- * 功能描述:传入任意一个 javabean 对象生成一个指定规格的字符串
- *
- * @param bean
- * bean对象
- * @return String
- */
- public static String beanToJson(Object bean) {
- StringBuilder json = new StringBuilder();
- json.append("{");
- PropertyDescriptor[] props = null;
- try {
- props = Introspector.getBeanInfo(bean.getClass(), Object.class)
- .getPropertyDescriptors();
- } catch (IntrospectionException e) {
- }
- if (props != null) {
- for (int i = 0; i < props.length; i++) {
- try {
- String name = objectToJson(props[i].getName());
- String value = objectToJson(props[i].getReadMethod().invoke(bean));
- json.append(name);
- json.append(":");
- json.append(value);
- json.append(",");
- } catch (Exception e) {
- }
- }
- json.setCharAt(json.length() - 1, '}');
- } else {
- json.append("}");
- }
- return json.toString();
- }
- /**
- * 功能描述:通过传入一个列表对象,调用指定方法将列表中的数据生成一个JSON规格指定字符串
- *
- * @param list
- * 列表对象
- * @return java.lang.String
- */
- public static String listToJson(List<?> list) {
- StringBuilder json = new StringBuilder();
- json.append("[");
- if (list != null && list.size() > 0) {
- for (Object obj : list) {
- json.append(objectToJson(obj));
- json.append(",");
- }
- json.setCharAt(json.length() - 1, ']');
- } else {
- json.append("]");
- }
- System.out.println("----------"+json.toString());
- return json.toString();
- }
- }
页面JS部分 :
- //查询购物车中的商品
- function qryOrder(proId){
- $.ajax({
- type: "POST",
- url: "user/qryOrder.do?proId="+proId,
- data: "",
- datatype: "json",
- contentType: "application/json",
- success: function(jsonResult) {
- qryOrderCallBack(jsonResult);
- },
- error: function(msg) {
- location = "../error.jsp";
- //alert("操作失败,请重试"+msg)
- }
- });
- }
- //解析返回得json数据并给页面赋值
- function qryOrderCallBack(responseMsg){
- var data = eval("("+responseMsg+")");
- var order = eval(data.orderList);
- var result = "";
- if(order==null){
- alert('order is null');
- return;
- }
- result += "<thead>";
- result += "<tr class='thead'>";
- result += "<th scope='col' class='t1'>购买人</th>";
- result += "<th scope='col' class='t2'>会员级别</th>";
- result += "<th scope='col' class='t4'>数量</th>";
- result += "<th scope='col' class='t3'>购买时间</th>";
- result += "</tr>";
- result += "</thead>";
- result += "<tbody>";
- //这里的order[i]就相当于list中的order,起属性也是一一对应的
- for(var i=0;i<order.length;i++) {
- var num = order[i].num;
- if((i+1)%2==1){
- result += "<tr class=''>";
- }else if((i+1)%2==0){
- result += "<tr class='alt'>";
- }
- result += "<td>"+order[i].memberEmail+"***</td>";
- result += "<td>"+order[i].memberLevel+"</td>";
- result += "<td>"+order[i].proNum+"</td>";
- result += "<td class='lower tr'>"+order[i].orderTime+"</td>";
- result += "</tr>";
- }
- result += "</tbody>";
- $("#orderList").html(result);
- }
页面HTML部分
- <div id="buy-annal">
- <table class="buy-record" summary="客户购买记录" cellspacing="0" id='orderList'>
- </table>
- </div>
上面说的是将后台查询的LIST结果如何在前台无刷新进行显示,而对于后台处理结果的普通的JAVABEAN如何在前台显示 ,下面进行简单的进行记录:
比如后台action处理的bean:
CartInfo cartInfo = new CartInfo();
cartInfo.setTotalNum(totalNum);
cartInfo.setTotalFee(df.format(totalFee));
在js中的处理:
//解析返回得json数据并给页面赋值
function responseCallBack(responseMsg){
var data = eval("("+responseMsg+")");
//cartInfo 就相当于cartInfo 实例
var cartInfo = eval(data.cartInfo);
$("#totalNum").text(cartInfo.totalNum+" 件");
$("#totalFee").text("¥ "+cartInfo.totalFee);
.......
}
发表评论
-
Ajax Session Timeout处理
2014-07-01 09:57 9417对于session过期跳转的问题,很简单,就是一个过滤器,然 ... -
20非常有用的Java程序片段
2014-01-13 21:54 0下面是20个非常有用的Java程序片段,希望能对你有用。 ... -
20个非常有用的Java程序片段
2014-01-13 21:49 0下面是20个非常有用的Java程序片段,希望能对你有用。 ... -
Spring MVC实现一个控制器写多个方法
2014-01-15 21:12 2014Spring MVC的API: DispatcherSe ... -
使用Eclipse构建Maven的SpringMVC项目
2013-06-21 12:53 1181使用Eclipse构建Maven的SpringMVC项目 ... -
发送Email的实现
2013-06-20 14:37 0package com.huawei.common.emai ... -
dbcp连接操优化
2013-06-02 12:35 0在做struts2、spring网站时,在系统闲置一段时间后, ... -
全局JavaScript禁用超链接对象
2013-05-15 23:44 0一般情况下,我们在设置禁用超链接的时候都是这样做的: &l ... -
判断IE浏览器是否支持JSON.parse
2013-05-10 17:43 0以下代码首先探测是否在 window 下存在 JSON 对象, ... -
spring的taskExecutor线程池实现邮件发送
2013-04-26 11:18 0由于项目里涉及到上万人邮件处理,需要用到线程池来提高处理速度 ... -
让IE旧版本浏览器也支持HTML5的特性
2013-04-24 21:39 3221让IE旧版本浏览器也支持HTML5的特性,可以通过IE支持 ... -
JS中showModalDialog (模态窗口)详细使用
2013-04-22 13:12 37998基本介绍: ... -
Java操作json的通用类
2013-04-18 11:05 8660提供一个Java中操作JSON格式的公共类: JS ... -
js判断是否为360浏览器
2013-03-09 14:49 2331自从3Q大战之后360浏览器的userAgen ... -
Java写的数据库连接池
2013-03-03 02:04 1402非常不错的手写的数据库连接池: import j ... -
一个非空校验的Java类
2012-11-28 21:41 0/* * 文件名:DataChecker.java * ... -
js中用正则表达式 过滤特殊字符 ,校验所有输入域是否含有特殊符号
2012-10-30 16:54 0https://cloud-nkgy1.huawei.com/ ... -
由12306.cn谈谈网站性能技术
2012-09-21 00:13 102012306.cn网站挂了,被 ... -
IFrame页面内target目标跳转到另一个iframe
2012-09-05 02:08 14758IFrame页面内target目标跳转到另一个iframe ... -
Hadoop(quick start)快速入门
2012-09-01 00:27 1598Hadoop(quick start)快速入门 ...
相关推荐
在这个"struts2 json ajax示例 google提示"中,我们将探讨如何在Struts2框架中利用JSON和AJAX技术实现Google搜索建议那样的动态数据加载功能。 首先,我们需要在Struts2项目中集成JSON插件。Struts2 JSON插件提供了...
在Struts2框架中实现JSON和AJAX,可以帮助开发者构建更加高效和用户友好的界面。首先,我们需要在`struts.xml`配置文件中启用JSON支持。通过添加`<constant>`标签设置`struts.json.enable=true`,开启Struts2的JSON...
Struts2、jQuery、JSON和Ajax是Web开发中常见的技术栈,它们共同为构建动态、交互式的用户界面提供了强大的支持。下面将详细解释这些技术及其在登录示例中的应用。 Struts2是一个基于MVC(Model-View-Controller)...
Struts2、Ajax、EasyUI、JSON 和 DataGrid 是现代Web开发中常用的技术组合,用于构建功能丰富的交互式用户界面。下面将详细解释这些技术及其在实现增删改查、分页和排序功能中的作用。 **Struts2** 是一个基于MVC...
Struts、JSON与AJAX是Web开发中的三个关键概念,它们在构建动态、交互式的Web应用程序时发挥着重要作用。这篇文章将深入探讨这三个技术如何结合使用,以提高用户体验和服务器性能。 Struts是一个基于MVC(Model-...
在Web开发中,jQuery、Struts2、Ajax和JSON是常见的技术组合,它们协同工作以实现动态、异步的数据交互。本示例将探讨如何利用jQuery的Ajax功能向Struts2框架发送请求,并以JSON格式接收响应数据。下面我们将详细...
Struts、jQuery、Ajax以及JSON是Web开发中的四个关键技术,它们在构建动态、交互式的Web应用程序中发挥着重要作用。下面将分别介绍这些技术的核心概念及其在实际应用中的结合使用。 **Struts框架**:Struts是Apache...
总结起来,"Struts 2项目 ajax动态生成树形菜单"是一个结合了Struts2框架、AJAX技术和数据库操作的实践案例,它展示了如何通过前后端交互动态构建Web界面,提高了用户体验。在实际开发中,这样的设计模式可以应用于...
Struts2、JSON和Ajax是Web开发中的三个关键技术,它们共同构建了动态、交互式的用户界面,提高了用户体验。本文将详细解析这三个技术及其在实际应用中的整合。 **Struts2** 是一个开源的MVC(Model-View-Controller...
总结来说,"Struts2+Ajax实现的用户登录"是一个典型的Web开发场景,涉及到了前端的动态交互、后端的业务处理和持久化操作。Struts2提供了控制流程,Ajax实现了无刷新的用户交互,Sprint协助管理应用程序组件,而...
4. **Struts 2与AJAX的集成**:介绍如何在Struts 2应用中使用AJAX,可能包括XMLHttpRequest对象、JSON数据格式、以及Struts2-AJAX插件的使用。 5. **实战示例**:提供了一些实际的开发案例,如创建一个简单的Struts ...
通过研究这些文件,你可以深入理解如何将AJAX、Struts2和JSP结合,实现动态交互的Web应用。 总结来说,"ajax+struts2.0+jsp下拉列表级联"展示了如何利用现代Web技术提升用户体验。AJAX提供了无刷新的交互,Struts2...
"Struts2+JSON+jQuery实现Ajax数据的存取"就是一个典型的示例,它结合了强大的MVC框架Struts2、轻量级的数据交换格式JSON以及高效的前端库jQuery,以实现网页上的无刷新数据交互。下面将详细介绍这三个技术及其在...
Struts2、jQuery、Ajax 和 JSON 是Web开发中常见的技术栈,它们共同作用于构建动态、交互式的Web应用程序。在“Struts2 Jquery ajax Json实现的一个完整案例”中,这些技术结合使用,以提高用户体验并优化服务器通信...
在IT行业中,构建动态、交互性强的Web应用是常见的需求,而"联动(struts2+json+jquey)"就是一种实现这种需求的技术组合。这里我们将深入探讨Struts2、JSON和jQuery这三者如何协同工作,以及如何通过它们实现联动效果...
综上所述,"struts2 json例子 可执行"意味着提供了一个可以运行的示例,展示了如何在Struts2框架下配置和使用JSON,包括Action的配置、Model驱动、JSON数据的发送和接收,以及可能涉及到的前端JQuery和Ajax交互。...
在这个"struts2+jquery执行ajax并返回json类型数据"的示例中,我们将探讨如何通过Ajax技术在后台Struts2框架与前端jQuery库之间交换JSON格式的数据。 首先,Struts2是一个强大的MVC(Model-View-Controller)框架,...
- 使用Struts 2的JSON插件,使Action能够返回JSON格式的数据。 3. **JSON数据交换**: - JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 - 在...
总之,Struts2与Ajax的结合使得开发者能够创建更具交互性和动态性的Web应用,同时保持了Struts2的结构化和易于管理的特点。通过使用JSON插件,数据交换变得更加高效,减少了网络通信的开销。理解并熟练掌握Struts2的...