package cn.edu.bzu.controller;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.Enumeration;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.edu.bzu.action.Action;
/**
* Servlet implementation class CoreServlet核心控制器类
*/
public class CoreServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CoreServlet() {
super();
}
Properties actions = new Properties();
Properties mapping = new Properties();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String path = request.getServletPath();
System.out.println("path为:"+path);
String actionName = path.substring(1, path.lastIndexOf(".do"));
System.out.println("actionName==="+actionName);
Action action = null;
try {
action = (Action) Class.forName(actions.getProperty(actionName)).newInstance();
System.out.println("action的实例==="+action.getClass().toString());
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
Enumeration s=request.getParameterNames();
Method m;
while(s.hasMoreElements()){
String values= s.nextElement().toString();
//String []s1=request.getParameterValues(s.nextElement().toString());
String s1=request.getParameter(values);
String valuesChangeMethod=values.substring(0,1).toUpperCase()+values.substring(1);
try {
m=action.getClass().getMethod("set"+valuesChangeMethod, String.class);
m.invoke(action,s1 );
} catch (Exception e) {
e.printStackTrace();
}
}
String mapping1=action.execute();
String forward = mapping.getProperty(mapping1);
request.getRequestDispatcher(forward).forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
public void init() throws ServletException {
try {
System.out.println("getClass()==="+this.getClass());
actions.load(getClass().getResourceAsStream("/struts.properties"));
mapping.load(getClass().getResourceAsStream("/mapping.properties"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
//定义接口
package cn.edu.bzu.action;
public interface Action {
String execute();
}
//具体实现类
package cn.edu.bzu.action;
public class LoginAction implements Action {
private String name;
private String password;
@Override
public String execute() {
System.out.println("this.getName为:"+this.getName());
System.out.println("this.getName为:"+this.getPassword());
return "/index";
}
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;
}
}
//属性文件
mapping
/index=/toLogin.jsp
struts
login=cn.edu.bzu.action.LoginAction
描述文件(web.xml)
<servlet>
<description></description>
<display-name>CoreServlet</display-name>
<servlet-name>CoreServlet</servlet-name>
<servlet-class>cn.edu.bzu.controller.CoreServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CoreServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
FORM表单
<form action="login.do" method="post">
<input type="text" name="name"><br>
<input type="password" name="password"><br>
<input type="submit" value="submit"></form>