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
正常的Controller請求也能夠正常訪問! app