p>
这样我们就可以读取配置文件来进行相应的操作。每个action对应着一些信息,它的class,执行成功以及执行失败的配置。我们在读取配置文件的时候可以把这些放到Map对象中。代码如下所示。
ActionMapping
{
private String path;
private String type;
Map forwardMap;
}
forwardMap
{
key="success";
value="/del_success.jsp"
key="error";
value="/del_error.jsp";
}
Map map = new HashMap();
map.put("/servlet/delUser",);
map.put("/servlet/addUser",);
map.put("/servlet/modifyUser",);
map.put("/servlet/queryUser",);
//如果是删除的ActionMapping存储如下:
actionMapping
{
path="/servlet/delUser";
type="com.bjpowernode.servlet.DelUserAction";
forwardMap
{
key="success",value="/del_success.jsp";
key="error",value="/del_error.jsp";
}
}
String path ="/servlet/delUser";
//根据截取的URL请求,到Map中取得本次请求对应的Action。
ActionMapping actionMapping =(ActionMappint)map.get(path);
// 取得本次请求对应的Action类的完成路径。
String type =actionMappint.getType();//com.bjpowernode.servlet.DelUserAction
//通过反射动态实例化Action
Aciton action =(Action)class.forName(type).newInstance();
//取得action后传递过去。动态调用ACtion中的execute方法。
String forward =action.execute(request,response);
//根据路径完成转向。
request.getRequestDispatcher(forward).forward(request,response);
我们用时序图来描述上述调用过程(如图4.2)。

图4.2
Struts就是采用上述思路。Struts框架是把上图中前端控制器servlet进行了封装,我们只要继承struts的Action去调用业务逻辑和转向。读取配置文件的工作也是封装到了struts框架中。前篇讲解了struts框架的应用实例,我们可以进行对比。
版本五 采用struts框架
采用struts框架完成登录示例。
这样我们对struts由来,以及struts封装了哪些东西从而方便了程序员,不再重复的写重复的代码。下一篇