作用:struts 负责 web层.
要理解Struts-config.xml文件,弄清楚struts处理页面的过程。
下面为客户点击或提交form到服务器端处理,得到响应的过程
如提交×××Action.do后
[color=red]1)查找servlet[/color]
Servlet容器在web..xml文件中寻找url-pattern属性为*.do的<servlet-mapping>元素:
servlet容器根据<servlet-mapping>元素的name属性,在web..xml文件中找到相应的servlet。
[color=red]2)找到相应action [/color]
servlet容器把请求转发给ActionServlet,这个servlet根据请求路径,在struts的配置文件里按照这个路径找到相应的XXXaction,(其实ActionServlet检索的是ActionMapping对象,在容器启动的时候,初始化Actionservlet会加载struts-config.Xml文件,把配置信息放到相应的配置类实例里,如Action的配置信息就放在ActionMapping对象中,里面是个map,每个action元素可以有多个forward子元素,每个forward子元素配置信息放在一个ActionForward对象里)
[color=red]3)给form赋值 [/color]
ActionServlet根据action元素的name属性,创建一个form对象,把客户从页面提交的表单数据传给form对象,一般是request范围内有效(我经常用动态formbean,struts把提交的数据组装成对象放到form里,挺好用的)。
[color=red]4)表单验证 [/color]
如果validate属性为true,ActionServlet会调用form对象的validate方法进行表达验证。此方法返回ActionErros对象,里面包含ActionMessage对象,封装了错误消息。如果没有ActionMessage对象表示验证成功,并放在request范围内。
用struts的表单验证也比较好用,需求加两个文件validation.xml,validator-rules.xml。关于这个东东,我在单独写她怎么用
[color=red]5)action进行真正的业务处理[/color]
ActionServlet查找XXXaction实例是否存在,不存在就创建一个实例,然后调用他的excute方法。
在这里可以调用service的一些方法,进行crud操作。
[color=red]6)返回forward,转到客户端[/color]
最后调用mapping.findForward(“forward”)方法,从action元素中查找name为XXXActin的forward子元素,然后返回ActionForward对象。其实就是查找ActionMapping本身的HashMap。
Excute()方法把ActionForward对象返回给ActionServlet,ActionServlet根据这个forward把响应转到具体页面。
到此对一个请求的处理完毕。里面贯穿了struts的运行过程。
要理解Struts-config.xml文件,弄清楚struts处理页面的过程。
下面为客户点击或提交form到服务器端处理,得到响应的过程
如提交×××Action.do后
[color=red]1)查找servlet[/color]
Servlet容器在web..xml文件中寻找url-pattern属性为*.do的<servlet-mapping>元素:
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
servlet容器根据<servlet-mapping>元素的name属性,在web..xml文件中找到相应的servlet。
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
[color=red]2)找到相应action [/color]
servlet容器把请求转发给ActionServlet,这个servlet根据请求路径,在struts的配置文件里按照这个路径找到相应的XXXaction,(其实ActionServlet检索的是ActionMapping对象,在容器启动的时候,初始化Actionservlet会加载struts-config.Xml文件,把配置信息放到相应的配置类实例里,如Action的配置信息就放在ActionMapping对象中,里面是个map,每个action元素可以有多个forward子元素,每个forward子元素配置信息放在一个ActionForward对象里)
[color=red]3)给form赋值 [/color]
ActionServlet根据action元素的name属性,创建一个form对象,把客户从页面提交的表单数据传给form对象,一般是request范围内有效(我经常用动态formbean,struts把提交的数据组装成对象放到form里,挺好用的)。
[color=red]4)表单验证 [/color]
如果validate属性为true,ActionServlet会调用form对象的validate方法进行表达验证。此方法返回ActionErros对象,里面包含ActionMessage对象,封装了错误消息。如果没有ActionMessage对象表示验证成功,并放在request范围内。
用struts的表单验证也比较好用,需求加两个文件validation.xml,validator-rules.xml。关于这个东东,我在单独写她怎么用
[color=red]5)action进行真正的业务处理[/color]
ActionServlet查找XXXaction实例是否存在,不存在就创建一个实例,然后调用他的excute方法。
在这里可以调用service的一些方法,进行crud操作。
[color=red]6)返回forward,转到客户端[/color]
最后调用mapping.findForward(“forward”)方法,从action元素中查找name为XXXActin的forward子元素,然后返回ActionForward对象。其实就是查找ActionMapping本身的HashMap。
Excute()方法把ActionForward对象返回给ActionServlet,ActionServlet根据这个forward把响应转到具体页面。
到此对一个请求的处理完毕。里面贯穿了struts的运行过程。