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

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+spring+hibernate整合示例

    2 将struts2 整合进去, 这次在struts.xml中我们使用通配符的方式配置action。 a 加入支持 : 添加struts2.3.15 必需包 以及 struts json包(ajax要用到),spring整合struts2包,spring web 包,在src目录下建立...

    Struts2的struts.xml配置详细介绍

    配置常量,可以改变Struts 2框架的一些行为 name属性表示常量名称,value属性表示常量值 package元素: 包的作用:简化维护工作,提高重用性 包可以“继承”已定义的包,并可以添加自己包的配置 name属性为必须去且...

    使用Struts的Action来对数据库进行增、删、改、查四项操作(源码)

    使用Struts的Action来对数据库进行增、删、改、查四项操作 &lt;br/&gt;1、数据库MySQL,创建数据库 Pagination MySQL.sql用来创建表结构 &lt;br/&gt;连接方式有两种,一种直接JDBC,一种通过连接池,代码中有说明...

    struts2学习教程

    struts2学习教程包括:第一个Struts2程序,处理一个form多个submit,struts.xml常用配置解析,使用validate方法验证数据,使用Validation框架验证数据,在Action类中获得HttpServletResponse对象的四种方法,上传...

    Android远程访问Struts2服务器程序(用到Json解析数据)

    服务器端采用Struts2编码,Android客户端采用Json解析它的数据 服务器端程序为ServerProject(用MyEclipse建立此项目),Android客户端程序代码为:AndroidHttpJSONActivity 注意Android客户端代码中,有一个ip地址,...

    Struts课堂笔记.rar--struts2的struts.properties配置文件详解

    专为multipart请求信息使用的org.apache.struts2.dispatcher.multipart.MultiPartRequest解析器接口(文件上传用) struts.multipart.saveDir The directory to use for storing uploaded files 设置存储上传...

    Servlet简单模拟Struts2

    用sevrlet模拟Struts2的简单功能。从拦截请求、解析自定义xml数据文件以及动态生成action的代理去执行目标方法,并实现了简单的日志拦截【interceptor】

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    11.4.7 编写Struts的配置文件struts-config.xml 11.4.8 编写Spring的配置文件spring-config.xml 11.4.9 配置web.xml 11.4.10 启动Tomcat运行示例 11.5 小结 第十二章 使用Hibernate快速实现持久层处理 12.1 ...

    struts2.2学习笔记

    struts2.2学习笔记总结,action,拦截器,过滤器,国际化,struts.xml解析等的总结。

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    11.4.7 编写Struts的配置文件struts-config.xml 11.4.8 编写Spring的配置文件spring-config.xml 11.4.9 配置web.xml 11.4.10 启动Tomcat运行示例 11.5 小结 第十二章 使用Hibernate快速实现持久层处理 12.1 ...

    SSH的jar包.rar

    2.由hibernate.cfg.xml中的&lt;mapping resource="com/xx/User.hbm.xml"/&gt;读取并解析映射信息 3.通过config.buildSessionFactory();//创建SessionFactory 4.sessionFactory.openSession();//打开Sesssion 5.session....

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    11.4.7 编写Struts的配置文件struts-config.xml 11.4.8 编写Spring的配置文件spring-config.xml 11.4.9 配置web.xml 11.4.10 启动Tomcat运行示例 11.5 小结 第十二章 使用Hibernate快速实现持久层处理 12.1 ...

    达内java培训目录

    Struts2 Struts2核心控制流程、Ognl、Action、Interceptor、Result、FreeMarker、Struts2标记库、Struts2扩展、Struts2应用技巧(输入验证、消息国际化、文件上传和下载、防止重复提交等)。 熟练掌握Struts2核心...

    java命名规范 开发规范

    2. Action类相应方法使用封装好的HttpClient相关工具类,准备好HTTP请求的相关参数header参数和body参数并以xml的方式提交HTTP请求; 3. 解析该HTTP请求返回值(XML或JSON); 4. 响应结果; 5. 测试; 备注: 开发...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e...

    Java通用代码生成实用程序XDoclet(源码包)

    目前的版本可以为web(web.xml)、ejb、struts(struts-config.xml)、webwork、hibernate (mapping file)、jdo、jmx等等生成描述文件、源码等,XDoclet提供了ant的任务target支持,完全通过ant来完成任务。 我们只须...

    spring in action英文版

     10.1.2 实现知晓Spring的Struts action  10.1.3 委托action  10.2 使用Tapestry  10.2.1 替换Tapestry引擎  10.2.2 装载Spring Bean至Tapestry页面中  10.3 集成JavaServer Faces  10.3.1 解析...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    11.4.7 编写Struts的配置文件struts-config.xml 11.4.8 编写Spring的配置文件spring-config.xml 11.4.9 配置web.xml 11.4.10 启动Tomcat运行示例 11.5 小结 第十二章 使用Hibernate快速实现持久层处理 12.1 ...

    JAVA源码 代码一键自动生成工具

    代码一键自动生成工具 可生成Action、JavaBean实体类、Dao及实现类、service及实现类、spring.xml、struts.xml、mybatis.xml *该工具目前支持3种数据源的生成方式,分别是:JDBC、.table、PDM *JDBC:选择JDBC是只...

    Spring面试题

    用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的 Validate()验证后选择将...

Global site tag (gtag.js) - Google Analytics