From 71b9b4c64120e0e70dc016f80d34c6252ce2593f Mon Sep 17 00:00:00 2001 From: MrXingmf Date: Tue, 7 Mar 2017 23:42:19 +0800 Subject: [PATCH] MyStruts --- group17/116665530/myStruts/pom.xml | 18 +++++ .../src/main/java/reflex/LoginAction.java | 41 ++++++++++ .../myStruts/src/main/java/reflex/Struts.java | 75 +++++++++++++++++++ .../myStruts/src/main/java/reflex/View.java | 24 ++++++ .../myStruts/src/main/java/reflex/struts.xml | 11 +++ .../myStruts/src/test/java/MyStrutsTest.java | 15 ++++ 6 files changed, 184 insertions(+) create mode 100644 group17/116665530/myStruts/pom.xml create mode 100644 group17/116665530/myStruts/src/main/java/reflex/LoginAction.java create mode 100644 group17/116665530/myStruts/src/main/java/reflex/Struts.java create mode 100644 group17/116665530/myStruts/src/main/java/reflex/View.java create mode 100644 group17/116665530/myStruts/src/main/java/reflex/struts.xml create mode 100644 group17/116665530/myStruts/src/test/java/MyStrutsTest.java 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()); + } +}