diff --git a/group24/626451284/pom.xml b/group24/626451284/pom.xml
index 534ff39232..507953adce 100644
--- a/group24/626451284/pom.xml
+++ b/group24/626451284/pom.xml
@@ -7,6 +7,4 @@
com.github.wdn
coding2017
1.0-SNAPSHOT
-
-
\ No newline at end of file
diff --git a/group24/626451284/src/main/java/com/github/wdn/coding2017/coderising/array/ArrayUtil.java b/group24/626451284/src/main/java/com/github/wdn/coding2017/coderising/array/ArrayUtil.java
new file mode 100644
index 0000000000..76a6cb326e
--- /dev/null
+++ b/group24/626451284/src/main/java/com/github/wdn/coding2017/coderising/array/ArrayUtil.java
@@ -0,0 +1,230 @@
+package com.github.wdn.coding2017.coderising.array;
+
+import java.util.Arrays;
+
+public class ArrayUtil {
+ /**
+ * 给定一个整形数组a , 对该数组的值进行置换
+ 例如: 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 length = origin.length;
+ for (int i = 0; i < length/2; i++) {
+ origin[i]=origin[i]+origin[length-1-i];
+ origin[length-1-i] = origin[i]-origin[length-1-i];
+ origin[i] = origin[i]-origin[length-1-i];
+ }
+ }
+ /**
+ * 现在有如下的一个数组: int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}
+ * 要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为:
+ * {1,3,4,5,6,6,5,4,7,6,7,5}
+ * @param oldArray
+ * @return
+ */
+
+ public int[] removeZero(int[] oldArray){
+ int[] result = new int[oldArray.length];
+ int resultSize=0;
+ for (int i = 0; i < oldArray.length; i++) {
+ int item = oldArray[i];
+ if (item!=0){
+ result[resultSize]=item;
+ resultSize++;
+ }
+ }
+ if(resultSize=array1.length && array2Index>=array2.length){
+ break;
+ }
+ int array1Value = array1Index < array1.length ? array1[array1Index] : array2[array2Index];
+ int array2Value = array2Index < array2.length ? array2[array2Index] : array1[array1Index];
+ if (array1Value > array2Value) {
+ mergeArr[i] = array2Value;
+ array2Index++;
+ } else if (array1Value < array2Value) {
+ mergeArr[i] = array1Value;
+ array1Index++;
+ }else{
+ mergeArr[i] = array1Value;
+ array1Index++;
+ array2Index++;
+ }
+ mergeArrIndex++;
+ }
+ return Arrays.copyOfRange(mergeArr,0,mergeArrIndex);
+ */
+ }
+ /**
+ * 把一个已经存满数据的数组 oldArray的容量进行扩展, 扩展后的新数据大小为oldArray.length + size
+ * 注意,老数组的元素在新数组中需要保持
+ * 例如 oldArray = [2,3,6] , size = 3,则返回的新数组为
+ * [2,3,6,0,0,0]
+ * @param oldArray
+ * @param size
+ * @return
+ */
+ public int[] grow(int [] oldArray, int size){
+ if (size<0 || oldArray.length+size>Integer.MAX_VALUE){
+ throw new IndexOutOfBoundsException();
+ }
+
+ // 方法一:使用jdk自带方法
+ //return Arrays.copyOf(oldArray,oldArray.length+size);
+
+ // 方法二:遍历
+ int[] growArr = new int[oldArray.length+size];
+ for (int i = 0; i < oldArray.length; i++) {
+ growArr[i] = oldArray[i];
+ }
+ return growArr;
+ }
+
+ /**
+ * 斐波那契数列为:1,1,2,3,5,8,13,21...... ,给定一个最大值, 返回小于该值的数列
+ * 例如, max = 15 , 则返回的数组应该为 [1,1,2,3,5,8,13]
+ * max = 1, 则返回空数组 []
+ * @param max
+ * @return
+ */
+ public int[] fibonacci(int max){
+ if(max<1 || max>Integer.MAX_VALUE){
+ throw new IllegalArgumentException();
+ }
+ int[] initArr = new int[]{1, 1};
+ if(max<=2){
+ return initArr;
+ }
+ int aIndex = 0;
+ int bIndex = 1;
+ int[] fibonacciArr = Arrays.copyOf(initArr,max);
+ int index = 2;
+ while(fibonacciArr[aIndex]+fibonacciArr[bIndex]> strutsMap = s.readStrutsXml();
+ System.out.println(strutsMap);
+ }
+ public static View runAction(String actionName, Map parameters) {
+ Map> strutsMap = readStrutsXml();
+ View view = new View();
+ if(actionName.contains(actionName)){
+ Map actionMap = strutsMap.get(actionName);
+ Map resultMap = (Map) actionMap.get("result");
+ String actionClassName = actionMap.get("class").toString();
+ System.out.println(actionClassName);
+ try {
+ Class c = Class.forName(actionClassName);
+ // 创建实例
+ Object instance = c.newInstance();
+ // 根据parameters调用setter方法
+ for(Map.Entry entry:parameters.entrySet()){
+ String key = entry.getKey();
+ String value = entry.getValue();
+ Method setter = c.getMethod("set"+key.substring(0, 1).toUpperCase() + key.substring(1),String.class);
+ if(setter!=null){
+ setter.invoke(instance, value);
+ }
+ }
+ Method executeMethod = c.getMethod("execute");
+ Object result = executeMethod.invoke(instance,null);
+ view.setJsp(resultMap.get(result));
+
+ Map paramters = new HashMap();
+ Method[] methods = c.getMethods();
+ for (Method m:methods) {
+ String methodName = m.getName();
+ if(methodName.startsWith("get")){
+ String key = methodName.replace("get","").toLowerCase();
+ paramters.put(key,m.invoke(instance,null).toString());
+ }
+ }
+ view.setParameters(paramters);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }else{
+ try {
+ throw new ClassNotFoundException();
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+ return view;
+ }
+ public static Map> readStrutsXml(){
+ SAXReader reader = new SAXReader();
+ Map> strutsMap = new HashMap>();
+ try {
+ String path = System.getProperty("user.dir");
+ Document document = reader.read(new File(path+"\\src\\main\\java\\com\\github\\wdn\\coding2017\\coderising\\litestruts\\struts.xml"));
+ Element root = document.getRootElement();
+ for (Iterator i = root.elementIterator(); i.hasNext(); ) {
+ Map actionMap = new HashMap();
+ Element actionElement = (Element) i.next();
+ if(actionElement.getName().equals("action")){
+ actionMap.put("name",actionElement.attributeValue("name"));
+ actionMap.put("class",actionElement.attributeValue("class"));
+ }
+ Map resultMap = new HashMap();
+ for (Iterator j=actionElement.elementIterator();j.hasNext();){
+ Element resultElement = (Element)j.next();
+ resultMap.put(resultElement.attributeValue("name"), resultElement.getText());
+ actionMap.put("result", resultMap);
+ }
+ strutsMap.put(actionElement.attributeValue("name"),actionMap);
+ }
+ } catch (DocumentException e) {
+ e.printStackTrace();
+ }
+ return strutsMap;
+ }
+}
diff --git a/group24/626451284/src/main/java/com/github/wdn/coding2017/coderising/litestruts/StrutsTest.java b/group24/626451284/src/main/java/com/github/wdn/coding2017/coderising/litestruts/StrutsTest.java
new file mode 100644
index 0000000000..9fee464283
--- /dev/null
+++ b/group24/626451284/src/main/java/com/github/wdn/coding2017/coderising/litestruts/StrutsTest.java
@@ -0,0 +1,43 @@
+package com.github.wdn.coding2017.coderising.litestruts;
+
+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/group24/626451284/src/main/java/com/github/wdn/coding2017/coderising/litestruts/View.java b/group24/626451284/src/main/java/com/github/wdn/coding2017/coderising/litestruts/View.java
new file mode 100644
index 0000000000..31e1805dc7
--- /dev/null
+++ b/group24/626451284/src/main/java/com/github/wdn/coding2017/coderising/litestruts/View.java
@@ -0,0 +1,23 @@
+package com.github.wdn.coding2017.coderising.litestruts;
+
+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/group24/626451284/src/main/java/com/github/wdn/coding2017/coderising/litestruts/struts.xml b/group24/626451284/src/main/java/com/github/wdn/coding2017/coderising/litestruts/struts.xml
new file mode 100644
index 0000000000..fb12bdc239
--- /dev/null
+++ b/group24/626451284/src/main/java/com/github/wdn/coding2017/coderising/litestruts/struts.xml
@@ -0,0 +1,11 @@
+
+
+
+ /jsp/homepage.jsp
+ /jsp/showLogin.jsp
+
+
+ /jsp/welcome.jsp
+ /jsp/error.jsp
+
+