关于Struts框架-简单应用及原理

来源:互联网 发布:淘宝女装卖家自制影棚 编辑:程序博客网 时间:2024/05/21 11:10

Struts是Apache基金组织中Jakarta项目组的一个开源项目,主要实现MVC模式,其操作的本质依然是jsp、servlet、javabean等技术的应用。

关于Struts的配置

首先下载开发包:

解压缩,然后

<message-resource/>指定的资源文件是错误信息资源文件,ActionMessage构造方法就是根据相关key去读取资源文件中的错误内容。


配置xml的意义是,此时设置的url-pattern是*.do,所以以*.do的形式去访问时,就会先进入到Struts开发包的ActionServlet中。

ActionServlet就相当于一个总的分发器,当一个请求发起时,首先会在xml中查找是否存在此path,如果存在就会进入ActionServlet,ActionServlet会根据表单的action信息去选择相应的ActionForm。

<action></action>标签里的属性path指定的路径会被ActionServlet拿来和表单中指定的action比较,如果不一样则会报错。如果相同,那么会根据attribute、name去加载相应的ActionForm(在前面的<form-bean>里定义的,名字必须一致),至于为什么要指定name,又要指定attribute呢?因为为了性能,Struts在实例化ActionForm的时候会先根据attribute去内存中寻找,如果有直接取回使用,如果没有则创建,假如没有设置attribute,此时就会根据name属性去创建ActionForm实例。

找到ActionForm后,ActionServlet会把表单提交的参数传递给此ActionForm,到这里ActionServlet就完成了他的全部工作(分发)。

接下来就是ActinForm的任务了:

先说一下reset的作用,当加载一个和ActionForm相关联的jsp页面时会调用reset方法,用来重新刷新表单的数据。

最重要的是validate方法,当ActionServlet把参数传递给ActionForm后,这个方法就会执行,这个方法主要是判断提交的参数是否出错,这里判断的是提交的数据是否为空,如果出错,ActionErrors负责收集错误信息,那每一个错误信息就由ActionMessage来封装,前面说到了,ActionMessage是根据key去<struts-config>中<message-resource>指定的资源文件中去拿到相关的错误信息,最后把ActionErrors对象返回即可。

此时如果ActionErrors对象里面的内容不为空则说明有错误,那么会根据前面配置的action里面的input属性指定的去加载错误显示页,怎么输出错误信息呢,只需要使用标签<html:errors/>即可输出(当有错误的时候自动显示)。


如果validate方法返回null或者ActionErrors的内容为空,那么说明没有错误,那么会根据action标签里的type属性指定的java类(包.类名)去实例化相应的Action,Action就是负责处理业务逻辑的,

可以看出,ActionForm并不会自动把参数传递给Action,此时需要通过execute的形参ActionForm来获取参数,然后通过request.setAttribute("属性名",参数值)来设值要传递的参数,如果需要根据参数去进行数据库Dao层操作,那么就在这里完成,最后通过ActionMapping对象的findForward("action标签里的<forward>标签中name属性的值")加载相应的结果显示页。

至此就完成了一次Struts的应用。





0 0
原创粉丝点击