From 4dd832cef6647baf94adaa39eec774bde46204b4 Mon Sep 17 00:00:00 2001 From: sjlv <1258890344@qq.com> Date: Sun, 19 Mar 2017 12:18:12 +0800 Subject: [PATCH] =?UTF-8?q?ArrayUtil=E5=92=8CStruts=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/coderising/array/ArrayUtil.java | 209 ++++++++++++++++++ .../com/coderising/array/ArrayUtilTest.java | 88 ++++++++ .../coderising/litestruts/LoginAction.java | 39 ++++ .../src/com/coderising/litestruts/Struts.java | 136 ++++++++++++ .../com/coderising/litestruts/StrutsTest.java | 47 ++++ .../src/com/coderising/litestruts/View.java | 23 ++ .../src/com/coderising/litestruts/struts.xml | 11 + 7 files changed, 553 insertions(+) create mode 100644 group22/1258890344/src/com/coderising/array/ArrayUtil.java create mode 100644 group22/1258890344/src/com/coderising/array/ArrayUtilTest.java create mode 100644 group22/1258890344/src/com/coderising/litestruts/LoginAction.java create mode 100644 group22/1258890344/src/com/coderising/litestruts/Struts.java create mode 100644 group22/1258890344/src/com/coderising/litestruts/StrutsTest.java create mode 100644 group22/1258890344/src/com/coderising/litestruts/View.java create mode 100644 group22/1258890344/src/com/coderising/litestruts/struts.xml diff --git a/group22/1258890344/src/com/coderising/array/ArrayUtil.java b/group22/1258890344/src/com/coderising/array/ArrayUtil.java new file mode 100644 index 0000000000..773b66ffb7 --- /dev/null +++ b/group22/1258890344/src/com/coderising/array/ArrayUtil.java @@ -0,0 +1,209 @@ +package com.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; + int value=0; + for(int i=0;i<(length/2);i++){ + value=origin[i]; + origin[i]=origin[length-1-i]; + origin[length-1-i]=value; + + } + } + + /** + * 现在有如下的一个数组: 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 length=oldArray.length; + int[] newArray = new int[length]; + int j=0; + for(int i=0;iarray2[j]){ + for(int k=length1;k>i;k--){ + array3[k]=array3[k-1]; + } + array3[i]=array2[j]; + j++; + if(j1){ + array[0]=1; + array[1]=1; + for(int i=2;i>1;i++){ + array[i]=array[i-1]+array[i-2]; + if(array[i]>=max){ + array[i]=0; + return array; + } + } + } + return array; + + + } + + /** + * 返回小于给定最大值max的所有素数数组 + * 例如max = 23, 返回的数组为[2,3,5,7,11,13,17,19] + * @param max + * @return + */ + public int[] getPrimes(int max){ + + int[] array=new int[max]; + int k=0; + if(max==2){ + array[0]=2; + } + for(int i=3;i parameters) { + + /* + + 0. 读取配置文件struts.xml + + 1. 根据actionName找到相对应的class , 例如LoginAction, 通过反射实例化(创建对象) + 据parameters中的数据,调用对象的setter方法, 例如parameters中的数据是 + ("name"="test" , "password"="1234") , + 那就应该调用 setName和setPassword方法 + + 2. 通过反射调用对象的exectue 方法, 并获得返回值,例如"success" + + 3. 通过反射找到对象的所有getter方法(例如 getMessage), + 通过反射来调用, 把值和属性形成一个HashMap , 例如 {"message": "登录成功"} , + 放到View对象的parameters + + 4. 根据struts.xml中的 配置,以及execute的返回值, 确定哪一个jsp, + 放到View对象的jsp字段中。 + + */ + View view=new View(); + try { + SAXReader reader=new SAXReader(); + Document doc=reader.read("./src/com/coderising/litestruts/struts.xml"); + Element root=doc.getRootElement(); + List list=root.elements();//将所有元素放到集合中 + List> listMap=getElements(list); + int size=listmap.size(); + listMap.remove(size-1); + System.out.println(listMap.toString()); + + String pathName=""; + int index=0; + String name=parameters.get("name"); + String password=parameters.get("password"); + + Map parameter=new HashMap<>(); + + for(int i=0;i> listmap = new ArrayList>(); + private static Map map=new LinkedHashMap(); + private static List> getElements(List list){ + + for(Iterator itera1=list.iterator();itera1.hasNext();){ + String key=""; + String value=""; + //获取action、result + Element element=itera1.next(); + if(element.getName()=="action"){ + map = new LinkedHashMap(); + } + if(element.getText().trim()!=null){ + value=element.getText(); + } + List attributes=element.attributes(); + + + //获取action、result里的属性名和值 + for(Iterator itera2=attributes.iterator();itera2.hasNext();){ + Attribute attr=itera2.next(); + + if(attr.getName().equals("name")){ + key=attr.getValue(); + } + if(attr.getName().equals("class")){ + value=attr.getValue(); + + } + if(!key.trim().isEmpty()&&!value.trim().isEmpty()){ + map.put(key, value); + } + } + + List subList=element.elements(); + //递归action的的子元素们 + if(subList.size()!=0){ + getElements(subList); + } + } + listmap.add(map); + return listmap; + } +} diff --git a/group22/1258890344/src/com/coderising/litestruts/StrutsTest.java b/group22/1258890344/src/com/coderising/litestruts/StrutsTest.java new file mode 100644 index 0000000000..ff10b5dd33 --- /dev/null +++ b/group22/1258890344/src/com/coderising/litestruts/StrutsTest.java @@ -0,0 +1,47 @@ +package com.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); + System.out.println( view.getJsp()); + System.out.println( view.getParameters().get("message")); + +// 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); + +// System.out.println( view.getJsp()); +// System.out.println( view.getParameters().get("message")); + Assert.assertEquals("/jsp/showLogin.jsp", view.getJsp()); + Assert.assertEquals("login failed,please check your user/pwd", view.getParameters().get("message")); + } +} diff --git a/group22/1258890344/src/com/coderising/litestruts/View.java b/group22/1258890344/src/com/coderising/litestruts/View.java new file mode 100644 index 0000000000..07df2a5dab --- /dev/null +++ b/group22/1258890344/src/com/coderising/litestruts/View.java @@ -0,0 +1,23 @@ +package com.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/group22/1258890344/src/com/coderising/litestruts/struts.xml b/group22/1258890344/src/com/coderising/litestruts/struts.xml new file mode 100644 index 0000000000..171848ecd1 --- /dev/null +++ b/group22/1258890344/src/com/coderising/litestruts/struts.xml @@ -0,0 +1,11 @@ + + + + /jsp/homepage.jsp + /jsp/showLogin.jsp + + + /jsp/welcome.jsp + /jsp/error.jsp + +