SpringMVC整合Hessian

SpringMVC整合Hessian Spring整合Hessian的demo網上一堆,適用於Srping+Struts2+Mybatis。 可是SpirngMVC整合Hessina的也是很常見的,畢竟SpringMVC已經慢慢代替了Struts2。 那麼問題來了,由於已經在web.xml中配置了DispatcherServlet的Mapping。以下代碼:web

<servlet>
  	<servlet-name>dispatcher</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- 配置springMVC須要加載的配置文件
  		spring-dao.xml,spring-service.xml,spring-web.xml
  		mybatis  被整合-> spring 被整合->springMVC
  	-->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:spring/spring-*.xml</param-value>
  	</init-param>
  </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <!-- 默認匹配全部的請求-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

那麼如何再像Srping整合Hessian那樣再次使用DispatcherServlet並配置Mapping呢? 解決方案就是:再配置一個Mapping,也就是給DispatcherServlet配置兩個Mapping,Hessian的Maping以下代碼所示,spring

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>*.hessian</url-pattern>
</servlet-mapping>

還沒完,這樣SpringMVC怎麼映射你的URL請求呢?在Controller中是經過註解配置的,如今也須要相似的URL配置。對應配置以下:api

<!-- 下面和Spring整合Hessian同樣,暴露服務-->
	<bean id="helloService" class="org.hessian.ImportServiceImpl"/>
	<!-- 使用Spring的HessianServie作代理 -->
	<bean name="hessianService"
		  class="org.springframework.remoting.caucho.HessianServiceExporter">
		<!-- service引用具體的實現實體Bean-->
		<property name="service" ref="helloService" />
		<property name="serviceInterface" value="org.hessian.ImportService" />
	</bean>
       <!-- 關鍵點:在這裏配置hessian的url映射,以下seckill替換爲你的工程名--> 
	<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<value>
				/seckill.hessian=hessianService
			</value>
		</property>
	</bean>

整合完成。mybatis

GET請求訪問Hessian的報錯

正常的Controller請求也能夠正常訪問! 普通Controller請求app

相關文章
相關標籤/搜索