1.首先浏览器向服务器Tomcat发送一个Http://localhost:8080/Struts/index.jsp请求。
2.服务器(Tomcat)解析这个请求。处理过程大致分为以下几个步骤:
第一步:在服务器的webapp找到这个项目。
第二步:找个这个项目的web.xml(项目的映射文件)。
第三步:找到web.xml中的filter(拦截器),里面具体的执行步骤是从下往上执行,先过滤所有请求(Url)地址,再调用拦截器(调用Filter-class节点里面的StrutsPrepareAndExecuteFilter), 接着Struts核心控制器会通过 ActionMapper获取Action信息,接下来Struts核心控制器调用一个Struts代理ActionProxy,这个代理进行读取struts.xml信息(主要是读取action和Interceptor栈的信息),接着Action代理会把请求传递给Action实例,这个实例会去调用action,匹配有没有符合条件的 action(dept_*)
<action name="dept_*"class="org.svse.action.DeptAction" method="{1}">
<result name="show">/dept/all.jsp</result>
<result name="getOne">/dept/update.jsp</result>
</action>,如果存在匹配的action,判断action中是否有class类属性,接着会继续判断ActionMapper中的映 射信息对应的ActionForm是否存在,如果不存在,则创建一个ActionForm,并保存提交的表单信息进行下一步处理,根据ActionMapper对象判断查找用户请求转发的控制器(如果对应的Action对象不存在,则创建这个对象并执行Execute方法,执行完成后会返回一个ActionForword对象),再次经过过滤器
第四步,AcitonServlet会把这个处理结果转发给ActionForm对象指定的jsp页面。同样会返回一个String类型的字符串.如果没有,返回请求的信息(404/500/400),将结果 Result信息返回给ActionInvocation产生一个HttpServletResponse响应,产生的响应行为发送给客服端。