diff --git a/group17/116665530/myStruts/pom.xml b/group17/116665530/myStruts/pom.xml
new file mode 100644
index 0000000000..8d4b2ccc10
--- /dev/null
+++ b/group17/116665530/myStruts/pom.xml
@@ -0,0 +1,18 @@
+
+
+ 4.0.0
+
+ com.coding
+ myStruts
+ 1.0-SNAPSHOT
+
+
+
+ dom4j
+ dom4j
+ 1.6
+
+
+
\ No newline at end of file
diff --git a/group17/116665530/myStruts/src/main/java/reflex/LoginAction.java b/group17/116665530/myStruts/src/main/java/reflex/LoginAction.java
new file mode 100644
index 0000000000..1dc6d5aeb4
--- /dev/null
+++ b/group17/116665530/myStruts/src/main/java/reflex/LoginAction.java
@@ -0,0 +1,41 @@
+package reflex;
+
+public class LoginAction {
+ private String name;
+ private String passWord;
+ private String result;
+ private String message;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getPassWord() {
+ return passWord;
+ }
+
+ public void setPassWord(String passWord) {
+ this.passWord = passWord;
+ }
+
+ public String getResult() {
+ return result;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public String exectue(){
+ if(this.getName().equals("admin")&&this.getPassWord().equals("123")){
+ this.message="登录成功";
+ return "sucess";
+ }
+ this.message="登录失败";
+ return "fail";
+ }
+}
diff --git a/group17/116665530/myStruts/src/main/java/reflex/Struts.java b/group17/116665530/myStruts/src/main/java/reflex/Struts.java
new file mode 100644
index 0000000000..f55cc46222
--- /dev/null
+++ b/group17/116665530/myStruts/src/main/java/reflex/Struts.java
@@ -0,0 +1,75 @@
+package reflex;
+
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
+import java.io.File;
+import java.util.*;
+
+public class Struts {
+ public static View runAction(String actionName,Map parameters){
+ //读取配置文件
+ File myXML = new File("src/main/java/reflex/struts.xml");
+ SAXReader sr = new SAXReader();
+ try {
+ Document doc = sr.read(myXML);
+ Element root = doc.getRootElement();
+ String className=findByActionName(root,actionName);
+ java.lang.Object o = findByClassName(className,parameters);
+ Class c = o.getClass();
+ String result =(String) c.getMethod("exectue").invoke(o);
+ String message = (String) c.getMethod("getMessage").invoke(o);
+ Map map =new HashMap();
+ map.put("message",message);
+ View view = new View();
+ view.setParameters(map);
+ String jsp = findJspByResult(root,className,result);
+ view.setJsp(jsp);
+ return view;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ private static String findByActionName(Element node,String actionName) {
+ List list = node.elements();
+ for(Element element:list){
+ if(element.attribute("name").getValue().equals(actionName)){
+ return element.attribute("class").getValue();
+ }
+ }
+ return null;
+ }
+ private static java.lang.Object findByClassName(String name, Map parameter){
+ try {
+ Class c = Class.forName(name);
+ Object o = c.newInstance();
+ Set keys = parameter.keySet();
+ for (String key:keys){
+ String methodName = "set"+key.substring(0,1).toUpperCase()+key.substring(1);
+ c.getMethod(methodName,String.class).invoke(o,parameter.get(key));
+ }
+ return o;
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+ private static String findJspByResult(Element node,String calssName,String result){
+ List list = node.elements();
+ for(Element element:list){
+ if(element.attribute("class").getValue().equals(calssName)){
+ List list1 = element.elements();
+ for(Element element1:list1){
+ if(element1.attribute("name").getValue().equals(result)){
+ return element1.getStringValue();
+ }
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/group17/116665530/myStruts/src/main/java/reflex/View.java b/group17/116665530/myStruts/src/main/java/reflex/View.java
new file mode 100644
index 0000000000..195cc1be50
--- /dev/null
+++ b/group17/116665530/myStruts/src/main/java/reflex/View.java
@@ -0,0 +1,24 @@
+package reflex;
+
+import java.util.Map;
+
+public class View {
+ private String jsp;
+ private Map parameters;
+
+ public String getJsp() {
+ return jsp;
+ }
+
+ public void setJsp(String jsp) {
+ this.jsp = jsp;
+ }
+
+ public Map getParameters() {
+ return parameters;
+ }
+
+ public void setParameters(Map parameters) {
+ this.parameters = parameters;
+ }
+}
diff --git a/group17/116665530/myStruts/src/main/java/reflex/struts.xml b/group17/116665530/myStruts/src/main/java/reflex/struts.xml
new file mode 100644
index 0000000000..0d133f7b84
--- /dev/null
+++ b/group17/116665530/myStruts/src/main/java/reflex/struts.xml
@@ -0,0 +1,11 @@
+
+
+
+ /jsp/homepage.jsp
+ /jsp/showLogin.jsp
+
+
+ /jsp/welcom.jsp
+ /jsp/error.jsp
+
+
\ No newline at end of file
diff --git a/group17/116665530/myStruts/src/test/java/MyStrutsTest.java b/group17/116665530/myStruts/src/test/java/MyStrutsTest.java
new file mode 100644
index 0000000000..f258e081b4
--- /dev/null
+++ b/group17/116665530/myStruts/src/test/java/MyStrutsTest.java
@@ -0,0 +1,15 @@
+import reflex.Struts;
+import reflex.View;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class MyStrutsTest {
+ public static void main(String[] args) {
+ Map map = new HashMap();
+ map.put("passWord","123");
+ map.put("name","admin");
+ View view= Struts.runAction("login",map);
+ System.out.println(view.getJsp());
+ }
+}