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