使命
改进和提高JSP,servlet,标签库和面向对象的技术水准
减少程序开发时间,提高复用率和开发效率
描述
提供了大量的标签
提供了一个总控制器
提供了一些类库的实现,如JDBC,国际化标准库,xml分析,下载机制等功能
MVC
- 视图(view)
JSP页面。
struts提供了标签库,来帮助用户解决显示逻辑。
ActionForm封装了用户提交的表单信息,ActionForm本质是一个JavaBean。 - 控制器(Controller)
struts提供了一个控制器组件ActionServlet,它继承自HttpServlet,并重载了HttpServlet的doGet(),doPost()方法,可以接受HTTP的响应,并根据ActionMapping(映射)进行转发,并根据配置生成ActionForm。 - 模型(Model)
struts提供Action对象,来实现业务逻辑处理,根据ActionForm信息,进行业务处理。
处理流程
- ActionServlet接收用户请求,根据请求URL匹配ActionMapping对象,如果匹配失败,说明用户请求的URL路径信息有误,返回请求路径无效的信息;
- 当ActionServlet匹配到ActionMapping对象时,会根据ActionMapping中的映射信息判断对应的ActionForm对象是否存在,如果不存在对应的ActionForm对象就创建一个新的ActionForm对象,并把用户提交的表单信息保存到这个ActionForm对象中;
ActionForm中的validate()方法对用户输入的表单进行验证;(可配置)
其中,如果需要验证,ActionForm的validate()方法返回ActionErrors对象时,则表明验证失败,ActionServlet把这个页面返回到用户输入的界面,提示用户重新输入;如果方法的返回值为null,就表明验证已经通过。
ActionServlet可以根据ActionMapping转发请求到具体Action,如果对应的Action对象不存在,就创建这个对象,并调用这个Action的excute()方法;execute()方法会返回一个ActionForward对象,ActionServlet把处理的结果转发到ActionForward对象指定的JSP页面;
- ActionForward对象指定的JSP页面,根据返回的处理结果,生成页面文档,并转发给用户。