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

相关文章
相关标签/搜索