第一章 认识Struts2
1.1什么是Web框架
最早的web应用主要是静态页面的浏览(如新闻的浏览),这些页面是用html语言来编写的。
目前应用得较多的三种服务器端页面编写技术就是:
ASP,JSP,PHP。
为了分离页面的表现逻辑和业务逻辑,使程序各部分的职责更加清晰,增强代码可维护.SUN公司在JSP的早期 规范中制定了2种JSP开发模型,分别是模型1(Model1)和模型2(Model2)
1.1.1模型1
(Jsp+JavaBeans)技术 将页面显示和业务逻辑处理分开。
JavaBean 对象用来承载数据和实现业务逻辑。
看一个按照模型1 的结构实现的登录案例
1.1.2 模型2 和 MVC
模型2符合MVC架构模式,MVC即模型-视图-控制器
MVC架构:
提供了一种按功能对各种对象进行分割的方法(这些对象是用来维护和表现数据的),
目的:将各对象间的耦合程度降到最低
M模型:代表应用程序的数据以及用于访问控制和修改这些数据的业务规则。
V视图:用来组织模型的内容
C控制器:定义了应用程序的行为。
模型2的架构:
Servlet充当控制器角色。
接受请求 将他们分发给页面开产生响应。
关于模型2的登录案例。
需要在 login.jsp 增加隐藏输入域
<input type=“hidden” name="action" value="login">
ControllerSerlvet类充当控制器,她接收用户的请求,根据请求的不同进行相应 的处理。并选择对应 的视图呈现给用户。
模型1:适合小型公司
模型2:应用比较复杂
1.1.3Web框架的诞生
MVC架构与Web应用程序相同处:调用流程:
1.所有的请求直接访问控制器,由控制器对请求进行分发。
2.控制器实例化JavaBean对象,由JavaBean对象处理业务逻辑,以及承载数据。
3.控制器根据请求的结果,向用户呈现相应的视图。
不同之处:
1.用户请求的URL的不同对应了不同的处理的单元。
2.不同表单提交的数据需要不同 的javaBean对象来保存数据。
3.请求处理结果的不同导致控制器向用户呈现视图的不同。
1.<form-bean>元素用于配置保存表单数据的JavaBean类
2.<action>配置用户请求进行处理的Action类,path属性指定一个相对的URI,当用户访问该uri时,请求将被转交给这个Action进行 处理。
3.type:指定对“/login”请求进行处理的Action类
4.name属性指定用于保存登录表达信息的form bean 的名字。
5.《forward》指定请求处理后导向 的页面
这些 只需要我们 编写页面,,实现from bean 和Action并在配置文件中进行配置的 就是Web项目开发。
Web开发优点
:
减轻程序负担,提高开发 效率,降低维护成本。
第一个提交的 web框架就是Struts 经过1年的 研究 Struts1出来了
是不是很厉害。
我们分析一下图中的控制器,模型和视图部分。
1.控制器
由2部分组成:1ActionServlet,这个类继承自HttpServlet,
由Strut1提供,作为中央控制器,他根据用户请求选择相应的action类对请求进行处理,并预先为Action类准备好保存了表单数据的 form bean对象;另一部分是Action类,负责创建业务组件(可以是不同的Javabean对象,或者EJB组件),
Struts1提供了Action基类,开发人员编写的Action类 需要从Action基类继承,
2.模型
模型分为2部分:一部分是Struts1框架规定的 form bena对象,赋值保存提交的表单数据,他实际上机试充当数据载体的JavaBean对象,只不过Struts1框架要求所有的form bean 类必须继承自ActionForm 类
以便于对表单数据做初始化和验证。
另一部分 开发人员为完成本系统的业务逻辑而编写的业务组件类。
3.视图
Struts1支持的页面:jsp jstl ,jsf velocity xslt等。。。
请求响应 流程:
1.所有的请求首先由ActionServlet 截获
2.ActionServlet 分局请求的uri 通过配置信息查找是否有对应的form bean,如果有,创建,并将请求数据组装到form bean 对象中
3.ActionServlet 分局请求的uri 通过配置信息查找是否有对应的action,如果有,创建,然后调用action类的特定的方法
execute(),并向action 传递form bean对象。
4.action 从form bean 对象中取出用户提交的数据,创建业务组件对象,实现业务逻辑,并根据完成结果的成功与否向ActionServlet 返回代表结果页面ActionForward对象
5.Action Servlet根据ActionForward对象的信息向用户呈现指定 页面。
1.2 从Struts1---Struts2
1.2.1 其他Web 框架
1.WebWork
2.Tapestry
3.SpringMVC
1.2.2 Struts1缺点
2个:1.令人头疼的ActionForm
2.单元测试困难