作者 朱兆平

优化取META节点的方法,适应根节点名不为MSG的情况

Manifest-Version: 1.0
Class-Path: ribbon-transport-2.3.0.jar spring-boot-starter-tomcat-2.2.
0.BUILD-20181221.162141-59.jar tomcat-embed-core-9.0.14.jar jackson-a
nnotations-2.9.0.jar commons-math-2.2.jar netflix-statistics-0.1.1.ja
r spring-boot-starter-aop-2.2.0.BUILD-20181221.162119-59.jar rxnetty-
0.4.9.jar hystrix-core-1.5.18.jar eureka-client-1.9.8.jar spring-secu
rity-crypto-5.1.3.BUILD-20181227.072951-43.jar ribbon-core-2.3.0.jar
tomcat-embed-websocket-9.0.14.jar spring-webmvc-5.1.4.BUILD-20181226.
140909-39.jar jersey-core-1.19.1.jar spring-jcl-5.1.4.BUILD-20181226.
140909-39.jar servo-core-0.12.21.jar spring-boot-autoconfigure-2.2.0.
BUILD-20181221.162052-59.jar xmlbeans-2.4.0.jar mybatis-spring-boot-s
tarter-1.3.2.jar archaius-core-0.7.6.jar ribbon-loadbalancer-2.3.0.ja
r jettison-1.3.7.jar spring-cloud-starter-netflix-eureka-client-2.1.0
.BUILD-20181228.020430-1172.jar spring-tx-5.1.4.BUILD-20181226.140909
-39.jar commons-configuration-1.8.jar bcprov-jdk15on-1.60.jar jackson
-datatype-jdk8-2.9.8.jar spring-cloud-netflix-ribbon-2.1.0.BUILD-2018
1228.020108-1232.jar jboss-logging-3.3.2.Final.jar spring-cloud-netfl
ix-archaius-2.1.0.BUILD-20181228.020040-1241.jar spring-cloud-starter
-netflix-ribbon-2.1.0.BUILD-20181228.020424-1172.jar spring-beans-5.1
.4.BUILD-20181226.140909-39.jar spring-cloud-starter-2.1.0.BUILD-2018
1227.235921-1180.jar jackson-datatype-jsr310-2.9.8.jar jaxen-1.1.6.ja
r commons-lang-2.6.jar log4j-to-slf4j-2.11.1.jar hibernate-validator-
6.0.13.Final.jar HdrHistogram-2.1.9.jar dom4j-2.1.0.jar gson-2.8.5.ja
r xpp3_min-1.1.4c.jar druid-1.1.9.jar commons-jxpath-1.3.jar xstream-
1.4.10.jar commons-collections-3.2.2.jar spring-cloud-starter-netflix
-archaius-2.1.0.BUILD-20181228.020417-1172.jar stringtemplate-3.2.1.j
ar javax.annotation-api-1.3.2.jar spring-boot-starter-2.2.0.BUILD-201
81221.162144-59.jar spring-web-5.1.4.BUILD-20181226.140909-39.jar com
mons-io-2.6.jar guava-16.0.jar httpcore-4.4.10.jar spring-core-5.1.4.
BUILD-20181226.140909-39.jar HikariCP-3.2.0.jar rxjava-1.3.8.jar jers
ey-apache-client4-1.19.1.jar druid-spring-boot-starter-1.1.9.jar log4
j-1.2.16.jar tomcat-embed-el-9.0.14.jar bcpkix-jdk15on-1.60.jar mybat
is-3.4.6.jar antlr-2.7.7.jar ojdbc6-11.2.0.4.0-atlassian-hosted.jar s
nakeyaml-1.23.jar netflix-commons-util-0.3.0.jar spring-aop-5.1.4.BUI
LD-20181226.140909-39.jar ribbon-2.3.0.jar spring-jdbc-5.1.4.BUILD-20
181226.140909-39.jar jackson-module-parameter-names-2.9.8.jar spring-
cloud-netflix-eureka-client-2.1.0.BUILD-20181228.020404-1172.jar stax
-api-1.0.1.jar spring-cloud-netflix-hystrix-2.1.0.BUILD-20181228.0201
46-564.jar netflix-eventbus-0.3.0.jar jul-to-slf4j-1.7.25.jar javax.i
nject-1.jar spring-boot-starter-logging-2.2.0.BUILD-20181221.162136-5
9.jar stax2-api-3.1.4.jar rxnetty-contexts-0.4.9.jar antlr-runtime-3.
4.jar spring-expression-5.1.4.BUILD-20181226.140909-39.jar jsr311-api
-1.1.1.jar ribbon-eureka-2.3.0.jar compactmap-1.2.1.jar spring-boot-2
.2.0.BUILD-20181221.162149-59.jar commons-codec-1.11.jar log4j-api-2.
11.1.jar spring-cloud-context-2.1.0.BUILD-20181227.235814-1191.jar je
rsey-client-1.19.1.jar rxnetty-servo-0.4.9.jar slf4j-api-1.6.1.jar sp
ring-boot-starter-json-2.2.0.BUILD-20181221.162134-59.jar spring-secu
rity-rsa-1.0.7.RELEASE.jar jackson-databind-2.9.8.jar spring-context-
5.1.4.BUILD-20181226.140909-39.jar httpclient-4.5.6.jar ribbon-httpcl
ient-2.3.0.jar woodstox-core-asl-4.4.1.jar eureka-core-1.9.8.jar logb
ack-core-1.2.3.jar stax-api-1.0-2.jar mybatis-spring-1.3.2.jar dexx-c
ollections-0.2.jar xmlpull-1.1.3.1.jar classmate-1.4.0.jar validation
-api-2.0.1.Final.jar aopalliance-1.0.jar netflix-infix-0.3.0.jar spri
ng-boot-starter-web-2.2.0.BUILD-20181221.162143-59.jar spring-cloud-c
ommons-2.1.0.BUILD-20181227.235904-1180.jar joda-time-2.10.1.jar aspe
ctjweaver-1.9.2.jar jackson-core-2.9.8.jar spring-boot-starter-jdbc-2
.2.0.BUILD-20181221.162131-59.jar IMFClient.1.0.0.jar mybatis-spring-
boot-autoconfigure-1.3.2.jar logback-classic-1.2.3.jar guice-4.1.0.ja
r
Class-Path: connector.jar druid-spring-boot-starter-1.1.9.jar spring-b
oot-2.2.0.BUILD-20190111.143007-84.jar xmlbeans-2.4.0.jar spring-boot
-starter-aop-2.2.0.BUILD-20190111.142939-84.jar guice-4.1.0.jar eurek
a-core-1.9.8.jar thymeleaf-3.0.11.RELEASE.jar httpcore-4.4.10.jar CL3
Export.jar jackson-databind-2.9.8.jar geronimo-stax-api_1.0_spec-1.0.
1.jar ribbon-httpclient-2.3.0.jar rxnetty-servo-0.4.9.jar snakeyaml-1
.23.jar druid-1.1.9.jar spring-boot-starter-json-2.2.0.BUILD-20190111
.142952-84.jar ribbon-2.3.0.jar ribbon-transport-2.3.0.jar jersey-apa
che-client4-1.19.1.jar mybatis-spring-1.3.2.jar spring-cloud-context-
2.1.0.BUILD-20190114.055139-1334.jar spring-security-crypto-5.1.3.REL
EASE.jar spring-cloud-starter-netflix-archaius-2.1.0.BUILD-20190114.0
50403-1317.jar com.ibm.mq.commonservices.jar com.ibm.mq.jms.Nojndi.ja
r gson-2.8.5.jar com.ibm.mqetclient.jar commons-collections-3.2.2.jar
com.ibm.mqjms.jar imfmsg.jar spring-jdbc-5.1.4.RELEASE.jar validatio
n-api-2.0.1.Final.jar rxnetty-contexts-0.4.9.jar cxf-xjc-boolean-3.2.
3.jar cxf-manifest.jar spring-boot-starter-thymeleaf-2.2.0.BUILD-2019
0111.142958-84.jar logback-classic-1.2.3.jar rxnetty-0.4.9.jar spring
-boot-starter-websocket-2.2.0.BUILD-20190111.143002-84.jar spring-boo
t-starter-tomcat-2.2.0.BUILD-20190111.142959-84.jar classmate-1.4.0.j
ar cxf-xjc-ts-2.3.2.jar slf4j-api-1.6.1.jar spring-websocket-5.1.4.RE
LEASE.jar spring-boot-starter-2.2.0.BUILD-20190111.143002-84.jar myba
tis-3.4.6.jar mybatis-spring-boot-autoconfigure-1.3.2.jar commons-io-
2.6.jar com.ibm.mq.defaultconfig.jar spring-cloud-starter-2.1.0.BUILD
-20190114.055247-1323.jar javax.annotation-api-1.3.2.jar ribbon-eurek
a-2.3.0.jar spring-context-5.1.4.RELEASE.jar xstream-1.4.10.jar commo
ns-lang-2.6.jar com.ibm.mq.tools.ras.jar spring-expression-5.1.4.RELE
ASE.jar spring-boot-starter-jdbc-2.2.0.BUILD-20190111.142950-84.jar u
nbescape-1.1.6.RELEASE.jar ProcessService.jar thymeleaf-extras-java8t
ime-3.0.2.RELEASE.jar axiom-api-1.2.7.jar archaius-core-0.7.6.jar jac
kson-annotations-2.9.0.jar javax.inject-1.jar spring-security-config-
5.1.3.RELEASE.jar cxf-xjc-bug671-2.3.2.jar ribbon-loadbalancer-2.3.0.
jar woodstox-core-asl-4.4.1.jar commons-jxpath-1.3.jar geronimo-activ
ation_1.1_spec-1.0.1.jar log4j-1.2.16.jar netflix-infix-0.3.0.jar com
.ibm.mq.pcf.jar spring-cloud-netflix-ribbon-2.1.0.BUILD-20190114.0500
56-1377.jar tomcat-embed-core-9.0.14.jar attoparser-2.0.5.RELEASE.jar
rxjava-1.3.8.jar commons-math-2.2.jar log4j-api-2.11.1.jar xmlpull-1
.1.3.1.jar ojdbc6-11.2.0.4.0-atlassian-hosted.jar aopalliance-1.0.jar
dom4j-2.1.0.jar spring-messaging-5.1.4.RELEASE.jar spring-cloud-star
ter-netflix-ribbon-2.1.0.BUILD-20190114.050410-1317.jar spring-cloud-
starter-netflix-eureka-client-2.1.0.BUILD-20190114.050416-1317.jar co
m.ibm.mq.fta.jar HdrHistogram-2.1.9.jar bcpkix-jdk15on-1.60.jar bcpro
v-jdk15on-1.60.jar spring-security-web-5.1.3.RELEASE.jar com.ibm.mq.j
ar hystrix-core-1.5.18.jar jettison-1.3.7.jar HeartbeatService.jar sp
ring-boot-starter-security-2.2.0.BUILD-20190111.142957-84.jar UploadS
ervice.jar commons-codec-1.11.jar netflix-statistics-0.1.1.jar XmlSch
ema-1.4.7.jar httpclient-4.5.6.jar sigar.jar jackson-datatype-jdk8-2.
9.8.jar spring-cloud-commons-2.1.0.BUILD-20190114.055231-1323.jar spr
ing-aop-5.1.4.RELEASE.jar commons-logging-1.1.1.jar spring-tx-5.1.4.R
ELEASE.jar dexx-collections-0.2.jar spring-webmvc-5.1.4.RELEASE.jar g
uava-16.0.jar spring-web-5.1.4.RELEASE.jar jackson-core-2.9.8.jar ret
urnXml.jar tomcat-embed-el-9.0.14.jar jackson-datatype-jsr310-2.9.8.j
ar HikariCP-3.3.0.jar geronimo-javamail_1.4_spec-1.2.jar netflix-even
tbus-0.3.0.jar thymeleaf-spring5-3.0.11.RELEASE.jar cxf-2.3.2.jar spr
ing-jcl-5.1.4.RELEASE.jar jboss-logging-3.3.2.Final.jar tomcat-embed-
websocket-9.0.14.jar xmlsec-1.4.4.jar spring-boot-autoconfigure-2.2.0
.BUILD-20190111.142917-84.jar spring-boot-starter-web-2.2.0.BUILD-201
90111.143001-84.jar stax2-api-3.1.4.jar com.ibm.mq.axis2.jar antlr-2.
7.7.jar ribbon-core-2.3.0.jar stringtemplate-3.2.1.jar cxf-xjc-dv-2.3
.2.jar jackson-module-parameter-names-2.9.8.jar com.ibm.mq.postcard.j
ar jul-to-slf4j-1.7.25.jar logback-core-1.2.3.jar jaxen-1.1.6.jar axi
om-impl-1.2.7.jar CL3Nonexport.jar stax-api-1.0-2.jar xml-apis-1.4.01
.jar spring-security-core-5.1.3.RELEASE.jar spring-cloud-netflix-hyst
rix-2.1.0.BUILD-20190114.050134-709.jar log4j-to-slf4j-2.11.1.jar ant
lr-runtime-3.4.jar neethi-2.0.4.jar stax-api-1.0.1.jar apiConfig.jar
aspectjweaver-1.9.2.jar com.ibm.mq.soap.jar mybatis-spring-boot-start
er-1.3.2.jar wsdl4j-1.6.2.jar netflix-commons-util-0.3.0.jar hibernat
e-validator-6.0.14.Final.jar xpp3_min-1.1.4c.jar com.ibm.mq.headers.j
ar jersey-core-1.19.1.jar spring-boot-starter-logging-2.2.0.BUILD-201
90111.142954-84.jar servo-core-0.12.21.jar wstx-asl-3.2.4.jar commons
-configuration-1.8.jar spring-cloud-netflix-eureka-client-2.1.0.BUILD
-20190114.050350-1317.jar IMFClient.1.0.0.jar jsr311-api-1.1.1.jar sp
ring-security-rsa-1.0.7.RELEASE.jar spring-cloud-netflix-archaius-2.1
.0.BUILD-20190114.050029-1386.jar jersey-client-1.19.1.jar joda-time-
2.10.1.jar com.ibm.mq.jmqi.jar eureka-client-1.9.8.jar compactmap-1.2
.1.jar spring-core-5.1.4.RELEASE.jar spring-beans-5.1.4.RELEASE.jar
Main-Class: com.tianbo.warehouse.WarehouseApplication
... ...
#登录账号
loginname = SJCK
loginname = NMMS
#登录密码
loginpass = SJCK_P
loginpass = NMMS
#发送报文目录,相对程序目录
readDirectory = /Users/mrz/Downloads/1.woowo
#接收存储报文目录
... ...
... ... @@ -34,6 +34,12 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
... ... @@ -43,22 +49,30 @@
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--security-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-web</artifactId>-->
<!--<exclusions>-->
<!--<exclusion>-->
<!--<groupId>ch.qos.logback</groupId>-->
<!--<artifactId>logback-classic</artifactId>-->
<!--</exclusion>-->
<!--</exclusions>-->
<!--<groupId>org.thymeleaf.extras</groupId>-->
<!--<artifactId>thymeleaf-extras-springsecurity4</artifactId>-->
<!--</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--spring boot-->
<!-- alibaba的druid数据库连接池 -->
<dependency>
... ...
package com.tianbo.warehouse.controller;
import com.tianbo.warehouse.model.PERMISSION;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class ImfLog {
... ... @@ -10,5 +13,26 @@ public class ImfLog {
public String IMFlog(){
return "log/imf";
}
@RequestMapping("/home")
public String Home(Model model){
PERMISSION msg = new PERMISSION();
msg.setDescription("权限描述");
msg.setPermissionName("权限名称");
msg.setPermissionSign("权限路径");
model.addAttribute("msg", msg);
return "home";
}
@RequestMapping("/admin")
@ResponseBody
public String Admin(){
return "hello admin";
}
@RequestMapping("/login")
public String login(){
return "login";
}
}
... ...
... ... @@ -14,4 +14,6 @@ public class IndexController {
return "数据仓库接收,落地报文给新舱单";
}
}
... ...
... ... @@ -5,7 +5,7 @@ import com.tianbo.warehouse.service.T_ETL_MESSAGEService;
import com.tianbo.warehouse.util.Date.DateUtil;
import com.tianbo.warehouse.util.IO.FileTool;
import com.tianbo.warehouse.util.XML.XMLXPath;
import com.tianbo.warehouse.util.XML.XML2ENTITY;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
... ... @@ -14,6 +14,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.Date;
import java.util.Map;
/**
* 存储IMF过来的原始报文到数据仓库T_ELT_MESSAGE原始报文表中
... ... @@ -26,18 +27,6 @@ public class IMFSaveHandle {
private static IMFSaveHandle saveHandle;
public final static String SNDR = "//MSG/META/SNDR";
public final static String RCVR = "//MSG/META/RCVR";
public final static String DDTM = "//MSG/META/DDTM";
public final static String TYPE = "//MSG/META/TYPE";
public final static String STYP = "//MSG/META/STYP";
public final static String SEQN = "//MSG/META/SEQN";
protected static final Logger logger = Logger.getLogger(IMFSaveHandle.class);
@PostConstruct
... ... @@ -49,16 +38,22 @@ public class IMFSaveHandle {
public void handle(String xmlmessage){
try {
//有人发报文头部不按规范发
xmlmessage = xmlmessage.replace("<Msg>","<MSG>")
.replace("<msg>","<MSG>")
.replace("</Msg>","</MSG>")
.replace("</msg>","</MSG>");
// xmlmessage = xmlmessage.replace("<Msg>","<MSG>")
// .replace("<msg>","<MSG>")
// .replace("</Msg>","</MSG>")
// .replace("</msg>","</MSG>");
Document document = DocumentHelper.parseText(xmlmessage);
XML2ENTITY xml2ENTITY =new XML2ENTITY();
Map xmlMap = xml2ENTITY.Dom2Map(document);
Map meta = (Map) xmlMap.get("META");
T_ETL_MESSAGE message = new T_ETL_MESSAGE();
String sndrm = XMLXPath.getSingleValueByPath(document,SNDR);
String typem = XMLXPath.getSingleValueByPath(document,TYPE);
String stypm = XMLXPath.getSingleValueByPath(document,STYP);
String sndrm = meta.get("SNDR").toString();
String stypm = meta.get("STYP").toString();
if ("TXD".equals(sndrm)){
if("EDEP".equals(stypm)
... ... @@ -76,15 +71,21 @@ public class IMFSaveHandle {
}
}
String typem = meta.get("TYPE").toString();
String rcvr = XML2ENTITY.getMap(meta,"RCVR").toString();
String ddtm = meta.get("DDTM").toString();
String seqn = meta.get("SEQN").toString();
message.setSndr(sndrm);
message.setRcvr(XMLXPath.getSingleValueByPath(document,RCVR));
message.setRcvr(rcvr);
message.setType(typem);
message.setStyp(stypm);
message.setSeqn(XMLXPath.getSingleValueByPath(document,SEQN));
message.setSeqn(seqn);
String ddtm = XMLXPath.getSingleValueByPath(document,DDTM);
Date ddtmDate = DateUtil.formatByyyyyMMddHHmmss(ddtm);
message.setDdtm(ddtmDate);
message.setSntm(ddtmDate);
... ...
... ... @@ -26,7 +26,7 @@ public class IMF_Reader extends Thread{
IMFSaveHandle imfSaveHandle = new IMFSaveHandle();
imfSaveHandle.handle(message);
}
logger.info("当前读取线程:"+Thread.currentThread().getName());
} else {
//logger.info("***");
}
... ...
... ... @@ -24,7 +24,7 @@ public class IMF_Task {
public static String isNeedSend = "N";
//@Scheduled(fixedRate = 5000)
@Scheduled(fixedRate = 5000)
private static void start() throws Exception {
PropertyConfigurator.configure("config/log4j.properties");
client = IMFClientFactory.createInstance();
... ...
... ... @@ -17,16 +17,17 @@ public class XML2ENTITY {
*/
public Map<String, Object> Dom2Map(Document doc){
Map<String, Object> map = new HashMap<String, Object>();
if(doc == null)
if(doc == null){
return map;
}
Element root = doc.getRootElement();
for (Iterator iterator = root.elementIterator(); iterator.hasNext();) {
Element e = (Element) iterator.next();
List list = e.elements();
if(list.size() > 0){
map.put(e.getName(), Dom2Map(e));
}else
map.put(e.getName(), e.getText());
}else{
map.put(e.getName(), e.getText());}
}
return map;
}
... ... @@ -53,8 +54,8 @@ public class XML2ENTITY {
mapList.add(m);
}
map.put(iter.getName(), mapList);
}else
map.put(iter.getName(), m);
}else{
map.put(iter.getName(), m);}
}
else{
if(map.get(iter.getName()) != null){
... ... @@ -69,12 +70,12 @@ public class XML2ENTITY {
mapList.add(iter.getText());
}
map.put(iter.getName(), mapList);
}else
map.put(iter.getName(), iter.getText());
}else{
map.put(iter.getName(), iter.getText());}
}
}
}else
map.put(e.getName(), e.getText());
}else{
map.put(e.getName(), e.getText());}
return map;
}
... ... @@ -96,8 +97,9 @@ public class XML2ENTITY {
*/
public Map<String, Object> Dom2Map_propety(Document doc){
Map<String, Object> map = new HashMap<String, Object>();
if(doc == null)
if(doc == null) {
return map;
}
Element root = doc.getRootElement();
for (Iterator iterator = root.elementIterator(); iterator.hasNext();) {
Element e = (Element) iterator.next();
... ... @@ -133,8 +135,9 @@ public class XML2ENTITY {
mapList.add(m);
}
map.put(iter.getName(), mapList);
}else
}else {
map.put(iter.getName(), m);
}
}
else{
if(map.get(iter.getName()) != null){
... ... @@ -170,10 +173,10 @@ public class XML2ENTITY {
*/
public static Object getMap(Map map, String key){
if(map!=null && map.containsKey(key)){
if(map!=null && key!=null && !key.isEmpty() && map.containsKey(key)){
return map.get(key);
} else {
return null;
return "";
}
}
... ...
... ... @@ -42,6 +42,6 @@
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<table tableName="T_ETL_MESSAGE" domainObjectName="T_ETL_MESSAGE" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
<table tableName="PERMISSION" domainObjectName="PERMISSION" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
\ No newline at end of file
... ...
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
<head>
<meta content="text/html;charset=UTF-8"/>
<title sec:authentication="name"></title>
<link rel="stylesheet" th:href="@{css/bootstrap.min.css}" />
<style type="text/css">
body {
padding-top: 50px;
}
.starter-template {
padding: 40px 15px;
text-align: center;
}
</style>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#">Spring Security演示</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a th:href="@{/home}"> 首页 </a></li>
<li><a th:href="@{/admin}"> admin </a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<div class="container">
<div class="starter-template">
<h1 th:text="${msg.description}"></h1>
<p class="bg-primary" th:text="${msg.content}"></p>
<div sec:authorize="hasRole('ROLE_HOME')"> <!-- 用户类型为ROLE_ADMIN 显示 -->
<p class="bg-info" th:text="${msg.etraInfo}"></p>
</div>
<div sec:authorize="hasRole('ROLE_ADMIN')"> <!-- 用户类型为ROLE_ADMIN 显示 -->
<p class="bg-info">恭喜您,您有 ROLE_ADMIN 权限 </p>
</div>
<form th:action="@{/logout}" method="post">
<input type="submit" class="btn btn-primary" value="注销"/>
</form>
</div>
</div>
</body>
</html>
\ No newline at end of file
... ...
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta content="text/html;charset=UTF-8"/>
<title>登录页面</title>
<link rel="stylesheet" th:href="@{css/bootstrap.min.css}"/>
<style type="text/css">
body {
padding-top: 50px;
}
.starter-template {
padding: 40px 15px;
text-align: center;
}
</style>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#">Spring Security演示</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a th:href="@{/}"> 首页 </a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<div class="container">
<div class="starter-template">
<p th:if="${param.logout}" class="bg-warning">已成功注销</p><!-- 1 -->
<p th:if="${param.error}" class="bg-danger">有错误,请重试</p> <!-- 2 -->
<h2>使用账号密码登录</h2>
<form name="form" th:action="@{/login}" action="/login" method="POST"> <!-- 3 -->
<div class="form-group">
<label for="username">账号</label>
<input type="text" class="form-control" name="username" value="" placeholder="账号" />
</div>
<div class="form-group">
<label for="password">密码</label>
<input type="password" class="form-control" name="password" placeholder="密码" />
</div>
<input type="submit" id="login" value="Login" class="btn btn-primary" />
</form>
</div>
</div>
</body>
</html>
\ No newline at end of file
... ...
package com.tianbo.warehouse;
import com.tianbo.warehouse.util.XML.XML2ENTITY;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import java.util.Map;
public class xml2EntityTest {
private static String xml = "<DTC_Message><META><SNDR>HDK4</SNDR><RCVR /><DDTM>20190111191059</DDTM><TYPE>DFME</TYPE><STYP>IS1</STYP><SEQN>5414447</SEQN></META><MessageHead><MessageType>IS1</MessageType><MessageId>410191445620190111191077105914</MessageId><MessageTime>2019-01-11T19:10:59</MessageTime><SenderId>RE29STOCK</SenderId><SenderAddress>RE29STOCK@KG.COM</SenderAddress><ReceiverId>RE29</ReceiverId><ReceiverAddress>RE29@KG.COM</ReceiverAddress><PlatFormNo>4101914456</PlatFormNo><CustomCode>4604</CustomCode></MessageHead><MessageBody><DTCFlow><AIRONE_IM_STOCK><WORK_NO>77105914</WORK_NO><IN_STOCK_NO /><VOYAGE_NO>KA740</VOYAGE_NO><VOYAGE_NAME /><IE_DATE>2019-01-11</IE_DATE><TRAF_MODE>4</TRAF_MODE><IE_FLAG>I</IE_FLAG><IS_TRANSFER>0</IS_TRANSFER><IM_TYPE>IT01</IM_TYPE><HAWB_NO>DIM017344077</HAWB_NO><MAWB_NO>04380583263</MAWB_NO><OWNER_NAME /><OWNER_CODE /><SEAL_NO /><ARR_DATE>2019-01-11T19:10:59</ARR_DATE><G_NAME>METAL HOLDER NO</G_NAME><CNT>6</CNT><WT>30</WT><VOL /><CONSIGNOR /><LOADING_PORT /><DESTINATION_PORT /><DISCHARGE_PLACE /><MARK_CONTR /><CURR_CODE /><CURR_VALUE /><APP_MAN /><IN_MAN /><STATUS>IS1100100</STATUS><REMARK /><COP_CODE>4604RE2901002</COP_CODE><COP_NAME>郑州新郑国际货运</COP_NAME><CUSTOMS_CODE>4604</CUSTOMS_CODE><OP_ID>SYS</OP_ID><OP_MAN /><OP_TIME>2019-01-11T19:10:59</OP_TIME><TRADE_CODE>4101914456</TRADE_CODE><COMP_RESULT /><LAST_NUM>0.0</LAST_NUM><LAST_WT /><GOODS_TYPE /><PKG_INFO>纸箱</PKG_INFO><DAMAGE_INFO /><FLAG1 /><FLAG2 /><FLAG3 /><FLAG4>D01</FLAG4><FLAG5>AWBH</FLAG5><REMARK1 /><REMARK2 /><REMARK3 /><REMARK4 /><REMARK5 /><AREA_CODE>RE29</AREA_CODE><SUP_CODE>AIM02</SUP_CODE><SUP_NAME>到达库</SUP_NAME><INPUT_CODE>4101914456</INPUT_CODE><DECLARE_CODE>4101914456</DECLARE_CODE><OP_FLAG /><IM_REASON>AIM03</IM_REASON><TRANSFER_COP /><ISGENERAL /><ISSAMPLE /><ISIPPC /><ISDANGEROUS /><GROSSUNIT /></AIRONE_IM_STOCK></DTCFlow></MessageBody></DTC_Message>";
public static void main(String[] args) {
try {
Document document = DocumentHelper.parseText(xml);
XML2ENTITY xml2ENTITY =new XML2ENTITY();
Map xmlMap = xml2ENTITY.Dom2Map(document);
Map meta = (Map) xmlMap.get("META");
String sndrm = meta.get("SNDR").toString();
String typem = meta.get("TYPE").toString();
String stypm = meta.get("STYP").toString();
String rcvr = meta.get("RCVR").toString();
String ddtm = meta.get("DDTM").toString();
String seqn = meta.get("SEQN").toString();
}catch (DocumentException e){
e.printStackTrace();
}
}
}
... ...