对servlet进行重构
重构解决以下几个问题:
1、在web.xml中不能配置很多servlet,最好用filter转发用户的请求
2、异常机制怎么样做到统一的处理
3、动态调用service的方法
以下是对问题解决的一个时序图:
这里的核心类是ServiceFilter方法:主要用于初始化系统的基本信息,如得到用户配置的action生产类等信息。
其中dofilter方法的作用是为每次请求创建一个对应的action对象
主要代码如下:
// /userAction.do?method='add'
// 因为主要为了实现一个想法,因此,没有采用配置文件的形式,将method和userAction两者进行存储
publicvoid doFilter(ServletRequestsrq, ServletResponse srp,
FilterChainchain) throwsIOException, ServletException {
//得到HttpServletRequest和HttpServletResponse对象
HttpServletRequestrequest = (HttpServletRequest) srq;
HttpServletResponseresponse = (HttpServletResponse) srp;
//根据request对象创建ServiceAction对象
ServiceActionaction = factory.buildServiceAction(request);
try {
//动态调用action的方法,此方法为url中的method指定的方法
action.service(request,response);
}catch(Exception e) {
//异常的处理,没做实现
System.out.println("错误处理");
}
}
/**
* 初始化方法,加载系统文件配置信息
*/
publicvoid init(FilterConfigfConfig)throwsServ