@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"%>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
在客户端中我们指定的action是“login.do”,以“.do”结尾的页面就是我们在web.xml文件中规定的哪些请求会被提交到ActionServlet上。在上文中空谈了很多Struts的执行机制大家可能还不能很好的理解,下面以这个登录例子为例我们来具体解释下Struts到底是怎样一个执行流程。
1. 当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文件中找到对应的跳转页面实现页面导航的统一控制。