一、编写步骤:
1、新建类ActionMapping 用于保存配置文件(struts.xml) 中的action节点的信息 ----相当于javabean
2、新建类ResultMapping 用于保存配置文件(struts.xml) 中的result节点的信息 ----相当于javabean
3、新建类ActionMappingManager 主要用于加载配置文件 、对配置文件进行一些操作 ,主要方法getActionByName是通过action节点属性name的值进行查询
4、编写业务类 s实现加减乘除四则运算:CalBiz
5、编写action接口
6、实现action接口,实例化业务类执行操作 :AddAction、PlusAction、MulAction、DivAction
7、编写ActionManager 根据获得的全类名动态创建对象 ;主要方法是:createAction(String actionClass)
8、编写核心控制器ActionServlet
//初始化加载方法
public void init() throws ServletException {
actionMappingManager=new ActionMappingManager();
}
String uri=request.getRequestURI();//获得请求的uri地址
String actionName=uri.substring(uri.lastIndexOf("/")+1,uri.lastIndexOf("."));//截取所需要的字符串
ActionMapping actionMapping=actionMappingManager.getActionByName(actionName);//根据截取后的地址查找action节点相关信息
String actionClass=actionMapping.getActionClass();//全类名
Action action=ActionManger.createAction(actionClass);//动态创建实例化对象
String resultName=action.execute(request, response);//返回逻辑名称
ResultMapping resultMapping=actionMapping.getResultMap().get(resultName);//根据逻辑名称查询
String resultPath=resultMapping.getResultPa
v th();//得到跳转的路劲
request.getRequestDispatcher(resultPath).forward(request, response);//成功跳转
9、编写jsp文件 :index.jsp、success.jsp
10、运行测试
二、执行流程:
1、在地址栏输入--->http://localhost:8080/Struts2_Demo2/ 访问首页
2、再文框中输入值 num1和num2
3、执行跳转被Servlet拦截,Servlet初始化加载 ActionMappingManager ---->ActionMappingManager 调用无惨构造 加载xml文件
4、Servlet获取uri地址并截取相应的信息
5、根据得到的信息,调用方法活的需要加载的类的全类名称
6、执行action中的execute方法跳转的逻辑名称
7、根据逻辑名称调用方法获得跳转的路劲名称
8、执行跳转