`
Luob.
  • 浏览: 1588812 次
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2 Action 解析提交的XML

阅读更多
package com.bjdata.bjsearch.presentation.action.thirdinter;

import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletInputStream;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

import com.bjdata.bjsearch.persistence.stroremanage.order.dao.impl.BiOrderProd;
import com.bjdata.bjsearch.persistence.stroremanage.order.service.IOrderService;
import com.bjdata.bjsearch.presentation.action.BaseAction;
import com.bjdata.bjsearch.util.Misc;
import com.bjdata.bjsearch.util.Util;
import com.bjdata.util.SecurityUtils;

public class DianpingInter extends BaseAction{
    private static final String LEAGUETYPE = "dianping";
    private static final Long STOREID = 4672143L;
    private static final double PERCENT=0.04;
    private String result;

    public String execute() {
        IOrderService orderService = (IOrderService) this.getServiceBean("orderService");
        //成功
        result = "succ";
        try {
            //解析xml
        	ServletInputStream in = this.getRequest().getInputStream();
            BiOrderProd prod = new BiOrderProd();
            prod.setStoreid(STOREID);
            prod.setPmid(String.valueOf(STOREID));
            prod.setProductcode("1");
            prod.setProductid("-1");
            prod.setUserid(0l);
            prod.setLeaguetype(LEAGUETYPE);
            prod.setTaskid("0");
            prod.setGetway("1");
            prod.setStatus("0");
            
            //解析 xml后 将值 给prod 了
            readXML(in,prod);
            // prod.setAmount(1);
            // prod.setOrderid(orderid);
            // prod.setOrdertime(Misc.convertString2Date(orderdate.trim(), "yyyy-MM-dd HH:mm:ss"));
            // prod.setMoney(dprice);
            // prod.setUserinfo(ouid);
            prod.setPrice(prod.getMoney()/prod.getAmount());
            prod.setCommision(prod.getMoney() * PERCENT);
            orderService.saveBiOrderProd(prod);
            String ordertime=Misc.convertTimestamp2StringTime(prod.getOrdertime(), "yyyy-MM-dd20%HH:mm:ss");
            StringBuffer urlBuffer = new StringBuffer("http://192.168.0.88:8080/myweb/orderback.jhtml?ordergetFlag=0&bid=502990&leagueflag=");
            urlBuffer.append(LEAGUETYPE).append("&cost=").append(prod.getMoney()).append("&oid=").append(prod.getOrderid()).append("&ordertime=");
            urlBuffer.append(ordertime).append("&uid=").append(prod.getUserinfo()).append("&cback=").append(prod.getCommision());
            urlBuffer.append("&mcode=").append(SecurityUtils.md5ByHex(prod.getUserinfo() + prod.getOrderid()));
            //send
            String re = Util.getHTMLByUrl(urlBuffer.toString(), 30000, "utf-8");
            if(!"0".equals(re))
                result = "0";
            
        } catch (Exception e) {
            e.printStackTrace();
            result = "3";
        }
        return HINT;
    }
    
    private void readXML(ServletInputStream in,BiOrderProd prod){
    	SAXReader saxReader=new SAXReader();
		try {
			Document document=saxReader.read(new InputStreamReader(in,"UTF-8"));
			List<Element> list=document.selectNodes("/order");
			System.out.println(list.size());
			Iterator<Element> iter=list.iterator();
			if(iter.hasNext()) {
				Element root=iter.next();
				//订单号
				Node oid=root.selectSingleNode("/order/id");
				prod.setOrderid(oid.getText());
				//下单时间
				Node otime=root.selectSingleNode("/order/order_time");
				prod.setOrdertime(Misc.convertString2Date(otime.getText(), "yyyy-MM-dd HH:mm:ss"));
				//商品数
				Node pnums=root.selectSingleNode("/order/number");
				prod.setAmount(Integer.parseInt(pnums.getText().trim()));
				//订单总金额
				Node amount=root.selectSingleNode("/order/cost/total_amount");
				prod.setMoney(Double.parseDouble(amount.getText().trim()));
				//跟单uid
				Node uid=root.selectSingleNode("/order/user/trackingcode");
				prod.setUserinfo(uid.getText());
			}
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		}
    }
    

    public String getResult() {
        return result;
    }

    public void setResult(String result) {
        this.result = result;
    }

}

<order>
<id>1234563</id>
<user>
<channelcode>{例如baidu_wap}</channelcode>
<trackingcode>{例如uid=123456}</trackingcode>
</user>

<product>
<deal>{123142}</deal>
</product>

<order_time>yyyy-MM-dd HH:mm:ss</order_time>
<pay_time>{yyyy-MM-dd HH:mm:ss|}</pay_time>
<status>{ORDER|PAID}</status>
<number>2</number>

<cost>
<total_amount>120.2</total_amount>
</cost>

</order>

分享到:
评论

相关推荐

    Struts2中struts_xml的Action配置详解

    本文将深入解析`struts.xml`中的Action配置,帮助开发者更好地理解和运用这一关键组件。 首先,Action配置是Struts2中定义业务逻辑入口的关键,它将HTTP请求映射到特定的Java类方法上。在`struts.xml`中,一个...

    Dom4j解析struts2框架的struts.xml

    本篇文章将深入探讨如何使用Dom4j这个XML处理库来解析`struts.xml`,以便自定义和配置Struts2框架。 Dom4j是一个灵活且功能丰富的Java库,专门用于处理XML文档。它提供了全面的API,可以方便地读取、写入、修改和...

    struts2 jquery xml

    在Struts2中,XML配置文件用于定义Action、结果类型、拦截器栈等。例如,`struts.xml`文件通常用于配置Struts2的核心设置。XML配置文件的好处是清晰、可读性强,但也可能导致配置文件过于庞大,不易维护。 **整合...

    struts2 action跳转action传参数

    在Struts2中,Action之间的跳转主要通过配置文件(通常为struts.xml)来实现。下面将具体介绍两种常见的跳转方式及其参数传递的方法: 1. **使用`chain`类型的结果** 在struts.xml配置文件中,可以通过设置结果...

    去掉.action去掉.do字样 隐藏struts2 URL地址action, strus1的扩展名do也是同理.zip

    为了去掉这个.action,我们需要配置Struts2的配置文件,通常是struts.xml。在该文件中,我们可以定义一个全局结果类型(global result type)来处理所有请求的后缀: ```xml &lt;constant name="struts.action....

    struts2一个action处理多个请求 struts2实例

    在Struts2的配置文件(通常为struts.xml或struts.properties)中,我们定义Action的映射规则,包括请求路径、方法调用以及结果视图等。默认情况下,一个Action类对应一个请求URL,但通过特定配置,可以让一个Action...

    struts.xml常用配置解析

    需要注意的是,被引用的XML文件必须是完整的Struts2配置文件,`&lt;include&gt;` 标签不会将它们合并到主配置文件中,而是独立解析每个文件。这意味着每个包含的XML文件应该符合Struts2的配置规范。 接下来,我们讨论...

    struts2 使用注解现在零配置不需要在使用struts.xml配置文件,可以直接跑

    在Struts2中,注解的引入使得开发者可以摆脱繁琐的`struts.xml`配置文件,实现“零配置”运行。 首先,让我们了解什么是注解(Annotation)。注解是Java提供的一种元数据机制,允许在源代码中嵌入信息,这些信息...

    Struts struts-config.xml配置

    通过对`struts-config.xml`配置文件的详细解析,我们可以了解到如何通过不同的元素和属性来配置数据源、表单Bean以及全局异常处理等内容。这对于理解和使用Struts框架来说至关重要。希望本文能帮助读者更好地掌握...

    struts2解析文件

    - **配置文件**: Struts2的配置文件通常包括struts.xml,用于定义Action、结果类型、拦截器等。配置文件可以声明式地控制应用的行为。 - **ModelDriven接口**: 这是一个常用的Action实现接口,用于将模型对象绑定到...

    Struts2防止重复提交解决方案

    在Web开发中,尤其是使用Struts2框架时,防止重复提交是一个重要的问题,因为它可能导致数据的不一致性或者服务器资源的浪费。Struts2提供了一种通过拦截器来解决这个问题的方法,即`token`拦截器。本文将深入探讨...

    struts2 result转向到action

    ### Struts2 Result 转向到 Action 的深入解析 #### 一、基本概念与应用场景 **Struts2** 是一款流行的 Java Web 开发框架,它支持多种开发模式(如 MVC),并提供了一系列用于简化 Web 应用程序开发的功能。在 ...

    Struts2 技术内幕——深入解析Struts2架构设计与实现原理

    - Struts2框架在启动时会读取配置文件(如struts.xml),解析出配置信息,并创建相应的对象实例。 - 初始化拦截器、配置等组件。 2. **请求处理阶段**: - 当用户向服务器发送请求时,Struts2的前端控制器...

    struts2的struts.xml文件的元素结构

    这篇博文主要探讨了`struts.xml`文件的元素结构,下面我们将详细解析这些关键元素。 首先,`struts.xml`文件通常位于项目的`src/main/resources`或`WEB-INF/classes`目录下,以便于在应用启动时自动加载。它是XML...

    struts1.2 from表单提交包含list的对象

    在Struts1.2中,这个请求会被Struts的ActionServlet捕获,ActionServlet会根据配置的Struts配置文件(struts-config.xml)来决定调用哪个Action类来处理请求。 对于包含列表的表单,用户可能需要在页面上输入多条...

    Struts 2实战 Struts 2 in action 的中文版

    根据提供的信息,我们可以推断出这是一本关于Struts 2框架的书籍——《Struts 2实战 Struts 2 in action 的中文版》。本书主要介绍了Struts 2框架的相关概念、工作原理以及实际应用案例等内容。接下来,我们将根据...

    dom4j解析struts.xml需要的包装类

    总结起来,`dom4j`是解析XML文件的强大工具,而`ActionWrapper`、`PackageWrapper`和`ResultWrapper`则是对`struts.xml`配置信息的抽象,它们有助于简化和优化Struts2应用的配置管理。通过使用这些包装类,我们可以...

    Struts2实战(Struts2 In Action中文版)

    《Struts2 In Action》是一本专为Java开发者设计的实战指南,旨在深入解析Struts2框架的使用与实践。Struts2作为一款强大的MVC(Model-View-Controller)框架,极大地简化了Java Web应用的开发流程,提高了开发效率...

    struts2 action 返回json方法(一)源码

    在Struts2的配置文件(struts.xml或struts-default.xml)中,为Action定义一个`json`结果。例如: ```xml &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;action name="myAction" class=...

Global site tag (gtag.js) - Google Analytics