} public void init(FilterConfig arg0) throws ServletException { System.out.println("容器启动"); try{ new ParseXML(); } catch (Exception e){ e.printStackTrace(); } } }
我是通过过滤器来截获请求的,这是前台页面 <%@ page pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>首页</title> </head>
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mvc.one.util.ActionFactory;
import com.mvc.one.util.parse.ParseXML;
import com.mvc.one.util.reflex.ReflexClass;public class StrutsFilter implements Filter{ public void destroy() {
System.out.println("容器销毁");
} public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
//获得用户请求的地址
String rquestURL = request.getServletPath().substring(1);
// map 存储enume集合中的属性
Map <String,String> map = new HashMap <String,String>();
//判断用户请求的地址是否在我们的核心过滤器中
ActionFactory af = (ActionFactory) ParseXML.map.get(rquestURL);
//如果核心过滤器中存在用户请求的utl则开始获得前台提交的属性
if(af != null){
//获取前台属性的集合
Enumeration <?> enume = request.getParameterNames();
//循环取出enume中的属性
while(enume.hasMoreElements()){
//获得前台属性的name
String name = enume.nextElement().toString();
//获得前台提交属性name对应的value
String value = request.getParameter(name);
//将实行的name对应的value放入map
map.put(name, value);
System.out.println(name+""+value);
}//while结束
//如果核心过滤器中不存在用户请求的utl则直接重新定向到前台
}else{
response.sendRedirect("/index.jsp");
}//if结束
try{
//获得处理后返回的结果集
String resultName = new ReflexClass().resultString(af.getTargetClass(),af.getMethod(),map);
System.out.println(resultName);
//通过结果集去Map中找到对应的url
String result = af.getResultMap().get(resultName);
//转发到结果页面
request.getRequestDispatcher(result).forward(request, response);
}catch(Exception e){
e.printStackTrace();
}
} public void init(FilterConfig arg0) throws ServletException {
System.out.println("容器启动");
try{
new ParseXML();
} catch (Exception e){
e.printStackTrace();
}
}
}
<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>首页</title>
</head>
<body>
<form action="LoginAction" method="post">
用户名:<input type="text" name="users.username" /><br/>
密 码:<input type="password" name="users.password"/><br/>
<input type="submit" value="登 陆"/>
</form>
</body>
</html>