diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/\346\226\207\347\253\240\351\223\276\346\216\245_20170224.txt" "b/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/\346\226\207\347\253\240\351\223\276\346\216\245_20170224.txt"
deleted file mode 100644
index 1ecad55f85..0000000000
--- "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/\346\226\207\347\253\240\351\223\276\346\216\245_20170224.txt"
+++ /dev/null
@@ -1,5 +0,0 @@
-描述CPU,内存, 硬盘,指令之间的关系。
-
-文章链接:http://www.cnblogs.com/qingmaple/p/6437070.html
-
-QQ:1091149131 深圳-叶子
\ No newline at end of file
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/.classpath" b/group14/1091149131/2017JavaPro/.classpath
similarity index 83%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/.classpath"
rename to group14/1091149131/2017JavaPro/.classpath
index 373dce4005..0f6a65708e 100644
--- "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/.classpath"
+++ b/group14/1091149131/2017JavaPro/.classpath
@@ -3,5 +3,6 @@
+
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/.gitignore" b/group14/1091149131/2017JavaPro/.gitignore
similarity index 100%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/.gitignore"
rename to group14/1091149131/2017JavaPro/.gitignore
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/.project" b/group14/1091149131/2017JavaPro/.project
similarity index 91%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/.project"
rename to group14/1091149131/2017JavaPro/.project
index 194f47da7a..ab0a07b820 100644
--- "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/.project"
+++ b/group14/1091149131/2017JavaPro/.project
@@ -1,6 +1,6 @@
- basicstructuredemo
+ 2017JavaPro
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/.settings/org.eclipse.jdt.core.prefs" b/group14/1091149131/2017JavaPro/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/.settings/org.eclipse.jdt.core.prefs"
rename to group14/1091149131/2017JavaPro/.settings/org.eclipse.jdt.core.prefs
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/ArrayList.java" b/group14/1091149131/2017JavaPro/src/com/m0226/basic/ArrayList.java
similarity index 98%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/ArrayList.java"
rename to group14/1091149131/2017JavaPro/src/com/m0226/basic/ArrayList.java
index f6d3b4c44a..c04d7fe381 100644
--- "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/ArrayList.java"
+++ b/group14/1091149131/2017JavaPro/src/com/m0226/basic/ArrayList.java
@@ -1,4 +1,4 @@
-package com.maple.basic;
+package com.m0226.basic;
public class ArrayList implements List {
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/BinaryTree.java" b/group14/1091149131/2017JavaPro/src/com/m0226/basic/BinaryTree.java
similarity index 97%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/BinaryTree.java"
rename to group14/1091149131/2017JavaPro/src/com/m0226/basic/BinaryTree.java
index 5e63cf4d3c..962f73ea14 100644
--- "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/BinaryTree.java"
+++ b/group14/1091149131/2017JavaPro/src/com/m0226/basic/BinaryTree.java
@@ -1,4 +1,4 @@
-package com.maple.basic;
+package com.m0226.basic;
import org.omg.PortableInterceptor.ORBInitInfoPackage.DuplicateName;
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/BinaryTreeNode.java" b/group14/1091149131/2017JavaPro/src/com/m0226/basic/BinaryTreeNode.java
similarity index 98%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/BinaryTreeNode.java"
rename to group14/1091149131/2017JavaPro/src/com/m0226/basic/BinaryTreeNode.java
index f702d48922..105d3c4e94 100644
--- "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/BinaryTreeNode.java"
+++ b/group14/1091149131/2017JavaPro/src/com/m0226/basic/BinaryTreeNode.java
@@ -1,4 +1,4 @@
-package com.maple.basic;
+package com.m0226.basic;
import org.omg.PortableInterceptor.ORBInitInfoPackage.DuplicateName;
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/Iterator.java" b/group14/1091149131/2017JavaPro/src/com/m0226/basic/Iterator.java
similarity index 76%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/Iterator.java"
rename to group14/1091149131/2017JavaPro/src/com/m0226/basic/Iterator.java
index ac8ecd6050..f2cf7ea146 100644
--- "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/Iterator.java"
+++ b/group14/1091149131/2017JavaPro/src/com/m0226/basic/Iterator.java
@@ -1,4 +1,4 @@
-package com.maple.basic;
+package com.m0226.basic;
public interface Iterator {
public boolean hasNext();
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/LinkedList.java" b/group14/1091149131/2017JavaPro/src/com/m0226/basic/LinkedList.java
similarity index 99%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/LinkedList.java"
rename to group14/1091149131/2017JavaPro/src/com/m0226/basic/LinkedList.java
index d957f74bdc..4622986c31 100644
--- "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/LinkedList.java"
+++ b/group14/1091149131/2017JavaPro/src/com/m0226/basic/LinkedList.java
@@ -1,4 +1,4 @@
-package com.maple.basic;
+package com.m0226.basic;
import java.util.NoSuchElementException;
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/List.java" b/group14/1091149131/2017JavaPro/src/com/m0226/basic/List.java
similarity index 87%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/List.java"
rename to group14/1091149131/2017JavaPro/src/com/m0226/basic/List.java
index 99bed9d96b..f45e9ebc4f 100644
--- "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/List.java"
+++ b/group14/1091149131/2017JavaPro/src/com/m0226/basic/List.java
@@ -1,4 +1,4 @@
-package com.maple.basic;
+package com.m0226.basic;
public interface List {
public void add(Object o);
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/Queue.java" b/group14/1091149131/2017JavaPro/src/com/m0226/basic/Queue.java
similarity index 93%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/Queue.java"
rename to group14/1091149131/2017JavaPro/src/com/m0226/basic/Queue.java
index 278d3dba7f..51961056f7 100644
--- "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/Queue.java"
+++ b/group14/1091149131/2017JavaPro/src/com/m0226/basic/Queue.java
@@ -1,4 +1,4 @@
-package com.maple.basic;
+package com.m0226.basic;
public class Queue {
private LinkedList elementData=new LinkedList();
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/Stack.java" b/group14/1091149131/2017JavaPro/src/com/m0226/basic/Stack.java
similarity index 95%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/Stack.java"
rename to group14/1091149131/2017JavaPro/src/com/m0226/basic/Stack.java
index cec4599237..7de23aaff8 100644
--- "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/basic/Stack.java"
+++ b/group14/1091149131/2017JavaPro/src/com/m0226/basic/Stack.java
@@ -1,4 +1,4 @@
-package com.maple.basic;
+package com.m0226.basic;
public class Stack {
private ArrayList elementData = new ArrayList();
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/test/TestAPIDemo.java" b/group14/1091149131/2017JavaPro/src/com/m0226/test/TestAPIDemo.java
similarity index 97%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/test/TestAPIDemo.java"
rename to group14/1091149131/2017JavaPro/src/com/m0226/test/TestAPIDemo.java
index ee592fbb7b..eb3ada6da0 100644
--- "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/test/TestAPIDemo.java"
+++ b/group14/1091149131/2017JavaPro/src/com/m0226/test/TestAPIDemo.java
@@ -1,4 +1,4 @@
-package com.maple.test;
+package com.m0226.test;
import java.util.ArrayList;
import java.util.Iterator;
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/test/TestAll.java" b/group14/1091149131/2017JavaPro/src/com/m0226/test/TestAll.java
similarity index 84%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/test/TestAll.java"
rename to group14/1091149131/2017JavaPro/src/com/m0226/test/TestAll.java
index 9fd59e512e..9ff0f407ce 100644
--- "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/test/TestAll.java"
+++ b/group14/1091149131/2017JavaPro/src/com/m0226/test/TestAll.java
@@ -1,13 +1,13 @@
-package com.maple.test;
+package com.m0226.test;
import org.junit.Test;
-import com.maple.basic.ArrayList;
-import com.maple.basic.BinaryTree;
-import com.maple.basic.Iterator;
-import com.maple.basic.LinkedList;
-import com.maple.basic.Queue;
-import com.maple.basic.Stack;
+import com.m0226.basic.ArrayList;
+import com.m0226.basic.BinaryTree;
+import com.m0226.basic.Iterator;
+import com.m0226.basic.LinkedList;
+import com.m0226.basic.Queue;
+import com.m0226.basic.Stack;
public class TestAll {
@Test
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/test/TestArrayList.java" b/group14/1091149131/2017JavaPro/src/com/m0226/test/TestArrayList.java
similarity index 77%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/test/TestArrayList.java"
rename to group14/1091149131/2017JavaPro/src/com/m0226/test/TestArrayList.java
index 94ecec52f7..d9cc6e55be 100644
--- "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/test/TestArrayList.java"
+++ b/group14/1091149131/2017JavaPro/src/com/m0226/test/TestArrayList.java
@@ -1,9 +1,9 @@
-package com.maple.test;
+package com.m0226.test;
import org.junit.Test;
-import com.maple.basic.ArrayList;
-import com.maple.basic.Iterator;
+import com.m0226.basic.ArrayList;
+import com.m0226.basic.Iterator;
public class TestArrayList{
diff --git "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/test/TestMyDemo.java" b/group14/1091149131/2017JavaPro/src/com/m0226/test/TestMyDemo.java
similarity index 82%
rename from "group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/test/TestMyDemo.java"
rename to group14/1091149131/2017JavaPro/src/com/m0226/test/TestMyDemo.java
index 639aaa629b..855e84f04d 100644
--- "a/group14/1091149131/20170226_\344\275\234\344\270\2321_\346\225\260\346\215\256\347\273\223\346\236\204\345\217\212\346\226\207\347\253\240/basicstructuredemo/src/com/maple/test/TestMyDemo.java"
+++ b/group14/1091149131/2017JavaPro/src/com/m0226/test/TestMyDemo.java
@@ -1,12 +1,12 @@
-package com.maple.test;
+package com.m0226.test;
-import com.maple.basic.ArrayList;
-import com.maple.basic.BinaryTree;
-import com.maple.basic.BinaryTreeNode;
-import com.maple.basic.Iterator;
-import com.maple.basic.LinkedList;
-import com.maple.basic.Queue;
-import com.maple.basic.Stack;
+import com.m0226.basic.ArrayList;
+import com.m0226.basic.BinaryTree;
+import com.m0226.basic.BinaryTreeNode;
+import com.m0226.basic.Iterator;
+import com.m0226.basic.LinkedList;
+import com.m0226.basic.Queue;
+import com.m0226.basic.Stack;
/**
* 娴嬭瘯鑷繁鍐欑殑鏁版嵁缁撴瀯
diff --git a/group14/1091149131/2017JavaPro/src/com/m0305/array/ArrayUtil.java b/group14/1091149131/2017JavaPro/src/com/m0305/array/ArrayUtil.java
new file mode 100644
index 0000000000..05002d3561
--- /dev/null
+++ b/group14/1091149131/2017JavaPro/src/com/m0305/array/ArrayUtil.java
@@ -0,0 +1,237 @@
+package com.m0305.array;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+
+public class ArrayUtil {
+
+ /**
+ * 缁欏畾涓涓暣褰㈡暟缁刟 , 瀵硅鏁扮粍鐨勫艰繘琛岀疆鎹
+ 渚嬪锛 a = [7, 9 , 30, 3] , 缃崲鍚庝负 [3, 30, 9,7]
+ 濡傛灉 a = [7, 9, 30, 3, 4] , 缃崲鍚庝负 [4,3, 30 , 9,7]
+ * @param origin
+ * @return
+ */
+ public void reverseArray(int[] origin){
+ int len=origin.length;
+
+ //鏂规硶2锛岀敤鏂版暟鎹幓鍙栨棫鏁扮粍鐨勫
+ int[] src=new int[len];
+ long start=System.currentTimeMillis();
+ for(int i=0;i list=new ArrayList<>();
+ for(int i=0;i list=new ArrayList<>();
+ //i鎸囧悜arr1锛宩鎸囧悜arr2,
+ int i=0,j=0;
+ while(iarr2[j]){
+ list.add(arr2[j]);
+ j++;
+ }
+ }
+ if(i>=len1||j>=len2){
+ //濡傛灉鍏朵腑涓涓暟缁勫凡缁忛亶鍘嗗畬浜嗭紝鍒欏彟澶栦竴涓暟缁勭洿鎺ュ姞鍏ュ埌list涓
+ for(int k1=i;k1 list=new ArrayList<>();
+ if(max==1){
+ return new int[0];//??绌烘暟缁勶紵锛
+ }
+
+ int one=1;
+ int two=2;
+ list.add(one);
+ list.add(two);
+ int temp=one+two;
+ while(temp list=new ArrayList<>();
+ int j=2;
+ for(int i=2;i list=new ArrayList<>();
+ //1鏄畬鏁板悧
+ int sum=1;
+ for(int i=2;i list){
+ if(list==null) return null;
+ int[] descArr=new int[list.size()];
+ for(int i=0;i parameters){
+
+ /*
+
+ 0. 璇诲彇閰嶇疆鏂囦欢struts.xml
+
+ 1. 鏍规嵁actionName鎵惧埌鐩稿搴旂殑class 锛 渚嬪LoginAction, 閫氳繃鍙嶅皠瀹炰緥鍖栵紙鍒涘缓瀵硅薄锛
+ 鎹畃arameters涓殑鏁版嵁锛岃皟鐢ㄥ璞$殑setter鏂规硶锛 渚嬪parameters涓殑鏁版嵁鏄
+ ("name"="test" , "password"="1234") ,
+ 閭e氨搴旇璋冪敤 setName鍜宻etPassword鏂规硶
+
+ 2. 閫氳繃鍙嶅皠璋冪敤瀵硅薄鐨別xectue 鏂规硶锛 骞惰幏寰楄繑鍥炲硷紝渚嬪"success"
+
+ 3. 閫氳繃鍙嶅皠鎵惧埌瀵硅薄鐨勬墍鏈塯etter鏂规硶锛堜緥濡 getMessage锛,
+ 閫氳繃鍙嶅皠鏉ヨ皟鐢紝 鎶婂煎拰灞炴у舰鎴愪竴涓狧ashMap , 渚嬪 {"message": "鐧诲綍鎴愬姛"} ,
+ 鏀惧埌View瀵硅薄鐨刾arameters
+
+ 4. 鏍规嵁struts.xml涓殑 閰嶇疆,浠ュ強execute鐨勮繑鍥炲硷紝 纭畾鍝竴涓猨sp锛
+ 鏀惧埌View瀵硅薄鐨刯sp瀛楁涓
+
+ */
+ SAXReader reader=new SAXReader();
+ Document document=null;
+ try {
+ document = reader.read(Struts.class.getResource("struts.xml"));
+ } catch (DocumentException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ Element root=document.getRootElement();
+ /*
+ * 褰撳墠鑺傜偣鐨勫悕绉帮細struts
+ *
+ 褰撳墠鑺傜偣鐨勫悕绉帮細action
+ 灞炴ame:login
+ 灞炴lass:com.m0305.lisestruts.LoginAction
+
+ 褰撳墠鑺傜偣鐨勫悕绉帮細result
+ 灞炴ame:success
+ result锛/jsp/homepage.jsp
+
+ 褰撳墠鑺傜偣鐨勫悕绉帮細result
+ 灞炴ame:fail
+ result锛/jsp/showLogin.jsp
+
+
+
+ /jsp/homepage.jsp
+ /jsp/showLogin.jsp
+
+
+ /jsp/welcome.jsp
+ /jsp/error.jsp
+
+
+
+ */
+ String xpath = "//action[@name='" + actionName + "']/child::*";
+ String xpath1 = "//action[@name='" + actionName + "']";
+
+ List list1=root.selectNodes(xpath1);
+
+ String className=null;
+ String methodName=null;
+ if(!list1.isEmpty()){
+ Element elt = (Element) list1.get(0);
+ Attribute classattr=elt.attribute("class");
+ Attribute methodattr=elt.attribute("method");
+ className=classattr.getValue();
+ if(methodattr!=null){
+ methodName=methodattr.getValue();
+ }
+ }
+ Class clazz=null;
+ try {
+ clazz=Class.forName(className);
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ }
+ Object act=null;
+ try {
+ act=clazz.getConstructor().newInstance();
+ } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException
+ | NoSuchMethodException | SecurityException e) {
+ e.printStackTrace();
+ }
+ for(Entry s:parameters.entrySet()){
+ s.getKey();
+ try {
+ Method m1=clazz.getDeclaredMethod(param2methodname(s.getKey()), String.class);//???
+ m1.invoke(act, s.getValue());//璁剧疆鍙傛暟鐨勫
+
+ } catch (NoSuchMethodException | SecurityException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ } catch (InvocationTargetException e) {
+ e.printStackTrace();
+ }
+ }
+ //璋冪敤execute鏂规硶鍚庯紝璇诲彇鎵鏈塯etter鏂规硶锛屽皢鍊兼斁鍒皏iew鐨刾aram閲岄潰鍘
+ String jspkey=null;
+ View view=new View();
+ Map viewParams=new HashMap();
+ if(methodName==null){
+ methodName="execute";
+ }
+ try {
+ Method defaultmethod=clazz.getDeclaredMethod(methodName);
+ jspkey=defaultmethod.invoke(act).toString();//action杩斿洖鍊
+ } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ Method[] methods=clazz.getDeclaredMethods();
+ for(Method method:methods){
+ if(method.getName().startsWith("get")){
+ try {
+ viewParams.put(removeGet(method.getName()), method.invoke(act));
+ } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+ view.setParameters(viewParams);
+ //璇粁ml鏂囦欢閲岄潰鐨剅esult锛屾牴鎹繑鍥炲煎喅瀹氬摢涓猨sp锛屾斁鍒皏iew閲岄潰鐨刯sp涓
+
+
+ //璇籸esult閲岄潰鐨勫
+ List list=root.selectNodes(xpath);
+ Iterator it = list.iterator();
+ while (it.hasNext()) {
+ Element elt = (Element) it.next();
+ Attribute attr = elt.attribute("name");
+ if(jspkey.equals(attr.getValue())){
+ view.setJsp(elt.getStringValue());
+ break;
+ }
+ }
+ return view;
+ }
+ public static String param2methodname(String name){
+ //password change to setPassword
+
+ return "set"+name.substring(0, 1).toUpperCase() + name.substring(1);
+ }
+ public static String removeGet(String name){
+ String name1=name.substring(3);
+ String result=name1.substring(0, 1).toLowerCase()+name1.substring(1);
+ return result;
+ }
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/group14/1091149131/2017JavaPro/src/com/m0305/lisestruts/StrutsTest.java b/group14/1091149131/2017JavaPro/src/com/m0305/lisestruts/StrutsTest.java
new file mode 100644
index 0000000000..5438c50c88
--- /dev/null
+++ b/group14/1091149131/2017JavaPro/src/com/m0305/lisestruts/StrutsTest.java
@@ -0,0 +1,43 @@
+package com.m0305.lisestruts;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+
+
+
+
+public class StrutsTest {
+
+ @Test
+ public void testLoginActionSuccess() {
+
+ String actionName = "login";
+
+ Map params = new HashMap();
+ params.put("name","test");
+ params.put("password","1234");
+
+
+ View view = Struts.runAction(actionName,params);
+
+ Assert.assertEquals("/jsp/homepage.jsp", view.getJsp());
+ Assert.assertEquals("login successful", view.getParameters().get("message"));
+ }
+
+ @Test
+ public void testLoginActionFailed() {
+ String actionName = "login";
+ Map params = new HashMap();
+ params.put("name","test");
+ params.put("password","123456"); //瀵嗙爜鍜岄璁剧殑涓嶄竴鑷
+
+ View view = Struts.runAction(actionName,params);
+
+ Assert.assertEquals("/jsp/showLogin.jsp", view.getJsp());
+ Assert.assertEquals("login failed,please check your user/pwd", view.getParameters().get("message"));
+ }
+}
diff --git a/group14/1091149131/2017JavaPro/src/com/m0305/lisestruts/View.java b/group14/1091149131/2017JavaPro/src/com/m0305/lisestruts/View.java
new file mode 100644
index 0000000000..a5d0269d7f
--- /dev/null
+++ b/group14/1091149131/2017JavaPro/src/com/m0305/lisestruts/View.java
@@ -0,0 +1,23 @@
+package com.m0305.lisestruts;
+
+import java.util.Map;
+
+public class View {
+ private String jsp;
+ private Map parameters;
+
+ public String getJsp() {
+ return jsp;
+ }
+ public View setJsp(String jsp) {
+ this.jsp = jsp;
+ return this;
+ }
+ public Map getParameters() {
+ return parameters;
+ }
+ public View setParameters(Map parameters) {
+ this.parameters = parameters;
+ return this;
+ }
+}
diff --git a/group14/1091149131/2017JavaPro/src/com/m0305/lisestruts/struts.xml b/group14/1091149131/2017JavaPro/src/com/m0305/lisestruts/struts.xml
new file mode 100644
index 0000000000..6ca2757ed3
--- /dev/null
+++ b/group14/1091149131/2017JavaPro/src/com/m0305/lisestruts/struts.xml
@@ -0,0 +1,11 @@
+
+
+
+ /jsp/homepage.jsp
+ /jsp/showLogin.jsp
+
+
+ /jsp/welcome.jsp
+ /jsp/error.jsp
+
+
\ No newline at end of file
diff --git a/group14/1091149131/2017JavaPro/src/com/util/Dom4JforXML.java b/group14/1091149131/2017JavaPro/src/com/util/Dom4JforXML.java
new file mode 100644
index 0000000000..ddf81bffeb
--- /dev/null
+++ b/group14/1091149131/2017JavaPro/src/com/util/Dom4JforXML.java
@@ -0,0 +1,67 @@
+package com.util;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.dom4j.Attribute;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.junit.Test;
+
+public class Dom4JforXML {
+ @Test
+ public void test() throws Exception{
+ //鍒涘缓SAXReader瀵硅薄
+ SAXReader reader = new SAXReader();
+ //Dom4JforXML.class.getResourceAsStream("");
+ //璇诲彇鏂囦欢 杞崲鎴怐ocument
+ //System.out.println(this.getClass().getResource("/").getPath()+"struts.xml");
+ Document document = reader.read(Dom4JforXML.class.getResource("struts.xml"));
+ //鑾峰彇鏍硅妭鐐瑰厓绱犲璞
+ Element root = document.getRootElement();
+ String xpath1 = "//action[@name='login']";
+
+ List list1=root.selectNodes(xpath1);
+ Iterator it = list1.iterator();
+ while (it.hasNext()) {
+ Element elt = (Element) it.next();
+ Attribute attr = elt.attribute("name");
+
+ }
+ //閬嶅巻
+ //listNodes(root);
+ }
+ @Test
+ public void test2(){
+ //Dom4JforXML.class.getClass().getResourceAsStream("struts.xml");
+ String name="getName";
+ //name
+ String name1=name.substring(3);
+ String result=name1.substring(0, 1).toLowerCase()+name1.substring(1);
+ System.out.println(result);
+
+ }
+
+ //閬嶅巻褰撳墠鑺傜偣涓嬬殑鎵鏈夎妭鐐
+ public void listNodes(Element node){
+ System.out.println("褰撳墠鑺傜偣鐨勫悕绉帮細" + node.getName());
+ //棣栧厛鑾峰彇褰撳墠鑺傜偣鐨勬墍鏈夊睘鎬ц妭鐐
+ List list = node.attributes();
+ //閬嶅巻灞炴ц妭鐐
+ for(Attribute attribute : list){
+ System.out.println("灞炴"+attribute.getName() +":" + attribute.getValue());
+ }
+ //濡傛灉褰撳墠鑺傜偣鍐呭涓嶄负绌猴紝鍒欒緭鍑
+ if(!(node.getTextTrim().equals(""))){
+ System.out.println( node.getName() + "锛" + node.getText());
+ }
+ //鍚屾椂杩唬褰撳墠鑺傜偣涓嬮潰鐨勬墍鏈夊瓙鑺傜偣
+ //浣跨敤閫掑綊
+ Iterator iterator = node.elementIterator();
+ while(iterator.hasNext()){
+ Element e = iterator.next();
+ listNodes(e);
+ }
+ }
+}
diff --git a/group14/1091149131/2017JavaPro/src/com/util/struts.xml b/group14/1091149131/2017JavaPro/src/com/util/struts.xml
new file mode 100644
index 0000000000..6ca2757ed3
--- /dev/null
+++ b/group14/1091149131/2017JavaPro/src/com/util/struts.xml
@@ -0,0 +1,11 @@
+
+
+
+ /jsp/homepage.jsp
+ /jsp/showLogin.jsp
+
+
+ /jsp/welcome.jsp
+ /jsp/error.jsp
+
+
\ No newline at end of file
diff --git a/group14/1091149131/README.md b/group14/1091149131/README.md
new file mode 100644
index 0000000000..734ffcdc97
--- /dev/null
+++ b/group14/1091149131/README.md
@@ -0,0 +1,7 @@
+#浣滀笟璁板綍
+2017/2/26
+鍩烘湰鏁版嵁缁撴瀯浠g爜瀹炵幇锛屽叧浜嶤PU锛屽唴瀛樼瓑鐨勭‖浠惰鏄
+
+2017/3/5
+涓涓ぇ浣滀笟锛氳鍙杝truts.xml锛屽疄鐜皊truts
+ArrayUtil閲岄潰瀹炵幇鍑犱釜鍑芥暟