struts2+Srping+HSF,MVC模式

以下是我进入公司一周来所做的工作的大致流程,算是自己对工作的一个记录吧~~  /(0^◇^0)/


MVC模式:MVC架构是"Model-View-Controller"的缩写,MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。

1、模型(Model) 模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑.

2、视图(View)  视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。

3、控制器(controller) 控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。

MVC 式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性


HSF旨在为淘宝应用体用一个分布式的服务框架,HSF从分布式应用层以及统一的发布/调用方式层面为大家提供支持,从而可以很容易的开发分布式的应用以及提供给或使用公用功能模块,二不用考虑分布式领域中的各种细节技术。


一、MVN的使用
1.在命令行下输入命令:svn co URL ,作用是把一个project从仓库中导出
2.进入导入项目的文件夹下
3.运行命令:mvn eclipse:eclipse ,在eclipse中创建上面项目的执行环境
4.在eclipse中file->import->Maven->Existing Maven Projects,导入maven项目
5.tomcat端的配置:在conf文件夹的server.xml中的<host>的最后面添加 <Context path="" docBase="D:/项目目录/src/main/webapp"/>
6.编译 mvn war:inplace 导入所需的jar包

二、HSF的使用
1.在host文件中添加
  10.252.71.21  api1.configserver.hz1.koubei.com
  10.252.71.21  api2.configserver.hz1.koubei.com
2.修改src/main/webapp/WEB-INF/web.xml, 在SpringListen前增加
  <listener-class>
          com.taobao.hsf.thirdcontainer.independent.HSFLoaderListener
   </listener-class>
  <listener-class>
             org.springframework.web.context.ContextLoaderListener
    </listener-class>

3.添加HSF的插件包
  在config.properties文件中配置hsf.container.path=/usr/share/hsf(plugins所在的上级目录)
4.添加HSF的包依赖:在pom.xml中加入
 <dependency>
       <groupId>com.koubei.hsf</groupId>
       <artifactId>hsf.independent</artifactId>
       <version>1.0.0</version>
     </dependency>

    <dependency>
    <groupId>com.koubei</groupId>
    <artifactId>koubei-cc-api</artifactId>
    <version>1.2.0</version>
    </dependency>
5.配置Spring,在src/main/resources/applicationContext.xml中加入
  <beans>
     <import resource="classpath:cc-consumption.hsf.client.context.xml" />
  </beans>
  //注:cc-consumption.hsf.client.context.xml为koubei-cc-api-1.2.0/META-INF下的文件名

以上是基本的配置使用。

 

若想实现MVC模式,需要在struts.xml文件中进行配置,使action与相应的jsp页面相关联,配置方法如下:

<package name="com.koubei.example" namespace="/example" extends="struts-default">
        <action name="HelloWorld" class="com.koubei.example.HelloWorld">
            <result name="success">/example/HelloWorld.jsp</result>
        </action>
 </package>

action即为对用户请求的响应,action下可以有多个result,根据java页面返回的不同的结果跳转到不同的页面,其中result中的name属性即对应java页面的不同的返回值。


下面是我使用HSF服务时出现的问题及解决方法:

consumptionDetailService(是HSF中的一种服务)出现空指针,出现这个问题是因为,struts和HSF没有用Spring进行关联,解决方法是在struts.xml配置文件中加入
    <constant name="struts.objectFactory" value="spring" />
    <constant name="struts.objectFactory.spring.autoWire" value="name" />

这时又会出现另一个问题,提示信息如下:

Caused by: java.lang.NullPointerException
  at com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:209)
  at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyResultType

(XmlConfigurationProvider.java:519)
  at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addResultTypes

(XmlConfigurationProvider.java:490)
  at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage

(XmlConfigurationProvider.java:446)
  at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages

(XmlConfigurationProvider.java:264)
  at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
  at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:193)
  at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)

  at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:374)
  at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:418)
    ...

这时需要在pom.xml中加入
       <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-spring-plugin</artifactId>
            <version>2.2.1</version>
        </dependency>
其中版本查询方法在下面的这个链接里查询:

http://10.13.126.237:8081/nexus/index.html#nexus-search;gav~org.apache.struts~struts2-spring-plugin~~~~kw,versionexpand
到此以上的问题就解决了。

你可能感兴趣的:(eclipse,spring,mvc,struts,服务框架,分布式应用)