今天,吴老给我们讲了Struts的第一节课,感觉还是不错的,顺便总结下!
Struts的简介
Struts是建立在MVC框架上面的更深层的封装,要是说到MVC就要提下什么是MVC了!
MVC是模型二,也是一个设计模式,M代表了Model 模型层,View是视图层 Control 控制器
而在我们前段时间所做的网上书城项目,就是Struts的一个雏形,如果,那个框架的原理知道了,我想Struts对你来说也是很简单的!那么,唯一几点不同的呢!
1.以前我们所写的路径映射文件是在一个txt文件里面的,而现在把它放到了xml文档里面来了,我想在这里我就不再说xml文档对于我们来说有什么优势了吧!
2.出现了formbean替代了我们以前所写的vo对象了,而且,struts在这里也为我们封装了form对象,也就是说vo对象的所有值我们不用去管,只要我们的配置文件写对了,那么我们的formbean对象会自动的封装。
3.出现了action拆分了service,以前我们的获取数据和操作业务都是在service里面来做的,但是我们现在要改变一个观念,就是我们不能在action里面写业务了,业务要提取出来放到service里面来,action的职责就是传输数据的,当然我们的form对象也只能传到service,不能将form对象传到我们的持久层。这也就是一个典型的失血模型了,业务对象只做业务,实体对象只有属性和get、set方法。
那么,我们来看看我们的struts的核心配置文件吧
struts-config.xml介绍
<?xml version="1.0"
encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software
Foundation//DTD Struts Configuration 1.2//EN" "http://struts./dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources
/>
<form-beans>
<form-bean
name="login" type="com.lovo.form.LoginForm">
name随便起个名字,type是指具体是那个form类
</form-bean>
</form-beans>
<global-exceptions
/>
<global-forwards
/>
<action-mappings>
<action
path="/login" type="com.lovo.action.LoginAction" name="login"
scope="request">
path是请求路径,type是指具体的哪个action,name是指关联那个form对象,scope是指作用域的范围
<forward
name="success"
path="/index.jsp"></forward>
<forward
name="error"
path="/login.jsp"></forward>
name是指,action所返回的name字符串,path是指要跳转的页面
</action>
</action-mappings>
<message-resources
parameter="com.lovo.struts.ApplicationResources" />
国际化文件
</struts-config>
还有一个重要的东西,就是Struts的执行流程,这个如果你想了解Struts的实现机制的话,我想这个东西你是必须知道的!
那么,我们来看下,Struts的执行步骤,它的执行过程又是如何?
1.web容器加载web.xml文件,并把Struts-config对象加载到内存中。
2.所有形如*.do的请求(根据web.xml中的相关配置)将提交给ActionServlet,最终将调用其process方法。process方法的主要工作
有三:根据请求信息获知所请求的模块名称,从ServletContext中获得与请求模块对应的的ModuleConfig对象,并存储到request中。
根据模块信息获得相应的RequestProcessor对象,一个模块对应一个RequestProcessor对象,RequestProcessor对象将关联与所属
模块对应的ModuleConfig对象。调用RequestProcessor对象的process方法,将request和response作为参数传递给它。
3.调用自己的 processPreprocess(request,
response)方法,该方法不进行任何操作,用于子类重写扩展其功能。
获得与请求地址所匹配的ActionMapping对象,AcionMapping对象用于封装一个特定acion的配置信息。
根据ActionMapping中的配置信息获得Action对象和ActionForm对象(该对象将缓存到request或session中),并将表单数据填充到ActionForm中,
然后根据ActionMapping的配置决定是否验证ActionForm,如果验证,将调用ActionForm的validate方法,若其返回的ActionErros
对象中包含ActionMessage对象则表示验证失败,将转向action配置信息input属性所指示的地址。如果ActionForm无需验证或验证
4.通过将创建并缓存与请求地址匹配的Action对象,将ActionMapping对象、ActionForm对象、request和response作为参数调用其
execute方法。根据Action对象的execute方法返回的ActionForward对象,将请求转发或重定向到该ActionForward所封装的地址。
应该是这个样子。参考资料来自网上!
|