分享

Struts第一天

 liuyang_inf 2014-08-26

今天,吴老给我们讲了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所封装的地址。
应该是这个样子。参考资料来自网上!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多