Struts1配置及调用过程实例详解 (三)

2014-11-24 09:44:12 · 作者: · 浏览: 3
ion {

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

LoginActionForm laf = (LoginActionForm)form;
String username = laf.getUsername();
String password = laf.getPassword();
if("admin".equals(username) && "admin".equals(password)){
//登录成功
return mapping.findForward("success");
}else{
//登录失败
return mapping.findForward("error");
}
}
}

最后是客户端代码:


[html]
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>




Insert title here



用户:

密码:





<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>




Insert title here



用户:

密码:






在客户端中我们指定的action是“login.do”,以“.do”结尾的页面就是我们在web.xml文件中规定的哪些请求会被提交到ActionServlet上。在上文中空谈了很多Struts的执行机制大家可能还不能很好的理解,下面以这个登录例子为例我们来具体解释下Struts到底是怎样一个执行流程。

1. 当Tomcat启动的时候根据配置文件中的标签中的值,ActionServlet伴随着Tomcat的启动而被实例化。

2. ActionServlet被实例化后会加载struts-config.xml文件,将该文件中的配置信息以键值对的形式读到内存中。


3. 当login页面被提交的时候由于该页面的action结尾是以.do结束的(也就说它符合在web.xml文件中规定的受struts规范的条件,该条件简单的来说就是只要请求是以.do结尾的就都受struts约束),该请求会被提交到ActionServlet。

4. 请求被提交到ActionServlet后,ActionServlet会首先对该URL进行截取(将.do去掉),然后根据截取后的path在已经加载到内存中的struts-config.xml找到对应的path,同时实例化配置文件中配置好的具体的ActionForm对象和RealAction对象,同时将表单信息赋给ActionForm对象。

5.根据配置文件中的type属性找到真正的请求类LoginAction后,由该类完成业务逻辑的各种操作,最后返回ActionForward对象给ActionServlet,最后ActionServlet根据返回情况从struts-config.xml文件中找到对应的跳转页面实现页面导航的统一控制。