struts入门
一、struts简介
struts是开源的java web框架,他很好的实现了MVC模式,通过一个配置文件,把各个层面的应用组件联系起来,使组件在程序层面上联系较少,耦合度较低,这就大大提高了应用程序的可维护性和扩展性。
1、
包名 | 说明 |
action | 包含控制器类ActionForm及ActionMessage,以及其他几个必要的框架组件 |
actions | 包含立即可用out-of-box的Action类,诸如DispatchAction,允许你的应用程序使用或扩展 |
config | 包含配置configuration类,可用来在内存中存储struts配置文件的内容 |
taglib | 包含标记处理类tag handler类,处理的对象是struts标记库 |
tiles | 包含tiles框架所使用的类 |
upload | 所包含的允许浏览器从本地文件系统上载或下载文件 |
util | 包含整个框架都用到的通用工具类 |
validator | 包含struts特有的扩展类,可供struts部署验证器validator时使用,实际的validator类和接口独立于struts之外,被放在commons包中 |
二、struts的基本原理
struts应用程序启动时,它首先从struts-config.xml中读取相关信息。根据这些信息,它的控制器ActionServlet知道把视图中的请求转发给哪个业务逻辑组件处理。视图组件、控制器与业务逻辑组件之间没有代码上的联系,他们之间的关系在struts-config.xml中声明,这样大大提高了web应用程序的可移植性和可维护性。
三、struts的核心组件
struts的控制器组件
1、struts的ActionServlet类
ActionServlet类扩展了javax.servlet.http.HttpServlet类,其职责是把HTTP消息打包起来并路由传送到框架中合适的处理器。ActionServlet类并非抽象类,因此应用程序可把他作为具体的控制器来使用。它必须在web应用程序所使用的部署描述文件中配置。
2、Action类
struts框架中的org.apache.struts.action.Action类是控制器组件的一个扩展。他可以把客户端用户的动作与一个业务操作连接起来。Action类可以使客户请求和业务模型松散耦合,这种松散耦合让用户请求和action类之间不再只限于一对一的对应关系。Action类在调用业务操作之前,也可以完成其他功能,诸如认证、日志记录和会话验证。
Action类中的重要的execute()方法
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response response)throws Exception;
3、struts配置文件struts-config.xml
struts应用的各个组件及其关系均在该文件中声明。
4、ActionMapping
当控制器收到一个请求时,它通过查看请求信息并使用一举动作映射对象(ActionMapping)来做出决定。动作映射(ActionMapping)是struts架构中一个特有对象,他封装了配置文件struts-config.xml中的action mapping元素所包含的配置信息。这个配置文件会在启动时加载到内存,让struts能够在运行时加以利用。
5、ActionForward类
ActionForward类所表示的是一个目标,也就是在Action完成后,控制器呀转交控制权的地方。以声明的方式把某个动作的转发映射与JSP页面相关联,然后再整个应用程序中使用哪个ActionForward对象。实际上,ActionForward对象封装在了配置文件struts-config.xml中forward元素所包含的信息。
struts的视图组件
struts应用程序的常见视图组件如下:
- JSP页面
- ActionForm
- Struts标记
- Java资源包
1、ActionForm类
ActionForm对象用来在用户和业务层之间传输客户的输入数据。ActionForm也叫FormBean.Struts会自动从请求中输入数据,在将这些数据交给一个使用formbean的action对象,接着FormBean可以再交给业务层。
ActionForm类最重要的两个方法reset()和validate(),这两个方法默认实现不完成任何默认的逻辑。必须在自己的ActionForm类中覆盖着两个方法。
控制器把请求中的表单数据填入ActionForm实例之前,会先调用reset()方法。reset()会将ActionForm性质重新设置回原来的默认状态。当请求数据插入ActionForm实例后,控制器会调用validate()方法,ActionForm应该对输入数据完成相应的必要验证工作,然后向控制器返回所检测到的任何错误。
2、struts标记库
struts框架定义的标记库有HTML标记库,Bean标记库,Logic标记库、Nested标记库、Template标记库、以及tiles标记库
要在应用程序中使用这些标记库,必须在web.xml文件中向web应用程序注册这些标记库。
3、使用消息资源包
对于你想支持的每种语言必须提供一个相应的资源包。类名或者属性文件名都必须遵循javadocs对java.util.ResourceBundle类所列的原则来命名。
struts的模型组件
struts框架在模型组件上没有太多支持,struts的模型组件可用javabeans或EJB