Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions group17/116665530/myStruts/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.coding</groupId>
<artifactId>myStruts</artifactId>
<version>1.0-SNAPSHOT</version>

<dependencies>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6</version>
</dependency>
</dependencies>
</project>
41 changes: 41 additions & 0 deletions group17/116665530/myStruts/src/main/java/reflex/LoginAction.java
Original file line number Diff line number Diff line change
@@ -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";
}
}
75 changes: 75 additions & 0 deletions group17/116665530/myStruts/src/main/java/reflex/Struts.java
Original file line number Diff line number Diff line change
@@ -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<String,String> 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<String,String> map =new HashMap<String, String>();
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<Element> 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<String,String> parameter){
try {
Class c = Class.forName(name);
Object o = c.newInstance();
Set<String> 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<Element> list = node.elements();
for(Element element:list){
if(element.attribute("class").getValue().equals(calssName)){
List<Element> list1 = element.elements();
for(Element element1:list1){
if(element1.attribute("name").getValue().equals(result)){
return element1.getStringValue();
}
}
}
}
return null;
}
}
24 changes: 24 additions & 0 deletions group17/116665530/myStruts/src/main/java/reflex/View.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package reflex;

import java.util.Map;

public class View {
private String jsp;
private Map<String,String> parameters;

public String getJsp() {
return jsp;
}

public void setJsp(String jsp) {
this.jsp = jsp;
}

public Map<String, String> getParameters() {
return parameters;
}

public void setParameters(Map<String, String> parameters) {
this.parameters = parameters;
}
}
11 changes: 11 additions & 0 deletions group17/116665530/myStruts/src/main/java/reflex/struts.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<strus>
<action name="login" class="reflex.LoginAction">
<result name="sucess">/jsp/homepage.jsp</result>
<result name="fail">/jsp/showLogin.jsp</result>
</action>
<action name="logout" class="reflex.LogoutAction">
<result name="sucess">/jsp/welcom.jsp</result>
<result name="error">/jsp/error.jsp</result>
</action>
</strus>
15 changes: 15 additions & 0 deletions group17/116665530/myStruts/src/test/java/MyStrutsTest.java
Original file line number Diff line number Diff line change
@@ -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<String,String> map = new HashMap<String, String>();
map.put("passWord","123");
map.put("name","admin");
View view= Struts.runAction("login",map);
System.out.println(view.getJsp());
}
}