您的位置:首页 > 编程语言 > Java开发

Struts的MVC和简单流程

2005-01-20 22:36 204 查看
今天起的很晚,下午又停了一会电,真是◎#¥%……※×

,只好看看书了。总结了一下对Struts关于MVC的一些理解。把Struts标签和Form提交处理流程整理了一下。

Struts实现了Controler部分,就是那个ActionServlet类,一般使用Struts都把所有的.do的请求交给这个类处理,这个类根据struts-config.xml这个配置文件来处理请求由那个Action对象来处理。要让Struts的ActionServlet类正常工作要在Web.xml中声明,初始化Struts-config.xml
映射.do的请求
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
……
</servlet>

视图是一堆Jsp文件,可以使用Struts提供的标签库。
模型,要继承ActionForm,和网页中的Form对应,简单的模型就是set/get和验证validate。然后交给Action处理。不知道Action到底属于那个部分,好像都不算。这块还是不太明白。发布LoginAction需要struts-config.xml配置一下:一个示例
<action path="/login" type="mypack.LoginAction"
name="loginForm" scope="session"
input="/login.jsp"
validate="true">
<forward name="success" path="/hello.jsp" />
<forward name="failure" path="/loginerror.jsp" />
</action>

Tomcat装载流程。
使用了标签的表单:

从application.properties文件中读取文本,替换相应的标签代码
有<html:form>的标签则在session范围中查找对应的Form Bean,如果存在这样的实例,就吧From Bean中的属性映射到Form表单的输入文本框中。没有则忽略。

提交表单:

Servlet/Jsp容器在web.xml文件中找到*.do的servlet-mapping:action。
根据servlet-name在servlet元素中找到对应的ActionServlet类
根据struts-config.xml中的设置,ActionServlet创建对应的Form对象,把客户提交的表单数据传给Form对象,这个对象保存在session范围内
如果该Form有validate方法则调用

如果验证失败(这里是指格式长度等不合要求)validate方法返回一个ActionErrors对象,包含一个ActionError对象
ActionServlet从struts-config.xml中查找path属性符合的<action>元素,根据其中的input属性,返回该表单,如果该表单使用了<html:error>标签,则从application.properties中读出相应的错误信息。(参考上面的Action元素示例)

验证成功,validate方法返回的ActionError对象不包含任何ActionError对象。
ActionServlet从struts-config.xml中查找path属性符合的<action>元素,查找<action>中type属性中的Action实例,没有则创建一个,包含以上<action>元素配置信息的ActionMapping对象,然后调用LoginAction的execute方法。
execute中执行操作,再根据结果查找<action>中相应的<forward>子元素,获得ActionForward对象,返回给ActionServlet。这一步要通过自己来编码实现。
ActionServlet把客户请求转发到ActionForward对象指的页面中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: