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>
分享到:
相关推荐
本文将深入解析`struts.xml`中的Action配置,帮助开发者更好地理解和运用这一关键组件。 首先,Action配置是Struts2中定义业务逻辑入口的关键,它将HTTP请求映射到特定的Java类方法上。在`struts.xml`中,一个...
本篇文章将深入探讨如何使用Dom4j这个XML处理库来解析`struts.xml`,以便自定义和配置Struts2框架。 Dom4j是一个灵活且功能丰富的Java库,专门用于处理XML文档。它提供了全面的API,可以方便地读取、写入、修改和...
在Struts2中,XML配置文件用于定义Action、结果类型、拦截器栈等。例如,`struts.xml`文件通常用于配置Struts2的核心设置。XML配置文件的好处是清晰、可读性强,但也可能导致配置文件过于庞大,不易维护。 **整合...
在Struts2中,Action之间的跳转主要通过配置文件(通常为struts.xml)来实现。下面将具体介绍两种常见的跳转方式及其参数传递的方法: 1. **使用`chain`类型的结果** 在struts.xml配置文件中,可以通过设置结果...
为了去掉这个.action,我们需要配置Struts2的配置文件,通常是struts.xml。在该文件中,我们可以定义一个全局结果类型(global result type)来处理所有请求的后缀: ```xml <constant name="struts.action....
在Struts2的配置文件(通常为struts.xml或struts.properties)中,我们定义Action的映射规则,包括请求路径、方法调用以及结果视图等。默认情况下,一个Action类对应一个请求URL,但通过特定配置,可以让一个Action...
需要注意的是,被引用的XML文件必须是完整的Struts2配置文件,`<include>` 标签不会将它们合并到主配置文件中,而是独立解析每个文件。这意味着每个包含的XML文件应该符合Struts2的配置规范。 接下来,我们讨论...
在Struts2中,注解的引入使得开发者可以摆脱繁琐的`struts.xml`配置文件,实现“零配置”运行。 首先,让我们了解什么是注解(Annotation)。注解是Java提供的一种元数据机制,允许在源代码中嵌入信息,这些信息...
通过对`struts-config.xml`配置文件的详细解析,我们可以了解到如何通过不同的元素和属性来配置数据源、表单Bean以及全局异常处理等内容。这对于理解和使用Struts框架来说至关重要。希望本文能帮助读者更好地掌握...
- **配置文件**: Struts2的配置文件通常包括struts.xml,用于定义Action、结果类型、拦截器等。配置文件可以声明式地控制应用的行为。 - **ModelDriven接口**: 这是一个常用的Action实现接口,用于将模型对象绑定到...
在Web开发中,尤其是使用Struts2框架时,防止重复提交是一个重要的问题,因为它可能导致数据的不一致性或者服务器资源的浪费。Struts2提供了一种通过拦截器来解决这个问题的方法,即`token`拦截器。本文将深入探讨...
### Struts2 Result 转向到 Action 的深入解析 #### 一、基本概念与应用场景 **Struts2** 是一款流行的 Java Web 开发框架,它支持多种开发模式(如 MVC),并提供了一系列用于简化 Web 应用程序开发的功能。在 ...
- Struts2框架在启动时会读取配置文件(如struts.xml),解析出配置信息,并创建相应的对象实例。 - 初始化拦截器、配置等组件。 2. **请求处理阶段**: - 当用户向服务器发送请求时,Struts2的前端控制器...
这篇博文主要探讨了`struts.xml`文件的元素结构,下面我们将详细解析这些关键元素。 首先,`struts.xml`文件通常位于项目的`src/main/resources`或`WEB-INF/classes`目录下,以便于在应用启动时自动加载。它是XML...
在Struts1.2中,这个请求会被Struts的ActionServlet捕获,ActionServlet会根据配置的Struts配置文件(struts-config.xml)来决定调用哪个Action类来处理请求。 对于包含列表的表单,用户可能需要在页面上输入多条...
根据提供的信息,我们可以推断出这是一本关于Struts 2框架的书籍——《Struts 2实战 Struts 2 in action 的中文版》。本书主要介绍了Struts 2框架的相关概念、工作原理以及实际应用案例等内容。接下来,我们将根据...
总结起来,`dom4j`是解析XML文件的强大工具,而`ActionWrapper`、`PackageWrapper`和`ResultWrapper`则是对`struts.xml`配置信息的抽象,它们有助于简化和优化Struts2应用的配置管理。通过使用这些包装类,我们可以...
《Struts2 In Action》是一本专为Java开发者设计的实战指南,旨在深入解析Struts2框架的使用与实践。Struts2作为一款强大的MVC(Model-View-Controller)框架,极大地简化了Java Web应用的开发流程,提高了开发效率...
在Struts2的配置文件(struts.xml或struts-default.xml)中,为Action定义一个`json`结果。例如: ```xml <package name="default" namespace="/" extends="struts-default"> <action name="myAction" class=...