关于springmvc配置html和jsp两种视图解析器所出现的问题

springmvc的视图解析器怎么配置?

当然是真么配置了(举个栗子):

没毛病吧,跳转页面(jsp)嗖嗖的。

那要是html页面怎么配置呢?想都不用想,当然是这么配置(举个橘子):

运行一下(html),没毛病!

问题:

那要是既要有jsp视图,又要有html视图呢?这么办呗(举个柿子):

是不是跟你想到一块去了呢?那么来运行一下:

就是要访问的是jsp页面的时候,会加上jsp视图的前缀和后缀,,但是,如果还想访问html页面时,还是会加上jsp视图的前缀和后缀,然后就404了;把html的视图解析放在上面,情况则会相反,,各种设置优先级也无济于事.....

解决

如果你也遇到了同样的问题,那么刚好,我已经找到了解决的方法,供您参考:

<!-- 配置html视图解析器 -->
	<!-- html视图解析器 必须先配置freemarkerConfig,注意html是没有prefix前缀属性的-->  
    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">    
       <property name="templateLoaderPath">    
           <value>/html/</value>    
       </property>    
    </bean>    
    <bean id="htmlviewResolver"    
       class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">    
       <property name="suffix" value=".html" />   
       <property name="order" value="0"></property>   
       <property name="contentType" value="text/html;charset=UTF-8"></property>           
   </bean>   
	
	<!-- jsp视图解析器 -->
	<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> -->
		<!-- 如果配置的有html视图解析器,不能用jstl的那个 -->
		<property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView"/> 
		<property name="prefix" value="/jsp/" />   <!-- jsp前缀 -->
		<property name="suffix" value=".jsp" />		<!-- jsp后缀 -->
		<property name="contentType" value="text/html;charset=UTF-8"/>
		<property name="order" value="0" />		<!-- 配置优先等级,越小优先级越高 -->
	</bean>	<!-- html视图解析器 必须先配置freemarkerConfig,注意html是没有prefix前缀属性的-->  
    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">    
       <property name="templateLoaderPath">    
           <value>/html/</value>    
       </property>    
    </bean>    
    <bean id="htmlviewResolver"    
       class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">    
       <property name="suffix" value=".html" />   
       <property name="order" value="0"></property>   
       <property name="contentType" value="text/html;charset=UTF-8"></property>           
   </bean>   
	
	<!-- jsp视图解析器 -->
	<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> -->
		<!-- 如果配置的有html视图解析器,不能用jstl的那个 -->
		<property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView"/> 
		<property name="prefix" value="/jsp/" />   <!-- jsp前缀 -->
		<property name="suffix" value=".jsp" />		<!-- jsp后缀 -->
		<property name="contentType" value="text/html;charset=UTF-8"/>
		<property name="order" value="0" />		<!-- 配置优先等级,越小优先级越高 -->
	</bean>

这么配置就OK了,注解已经写得很清楚

不过我当时配置的时候还遇上了这么一个异常:

找不到FreeMarkerConfigurationFactory类,明显是少导包了。如果你也遇到了这个异常,那么添加一个依赖就可以了

大功告成,美滋滋

java就像一盒巧克力,你永远不知道,ta还爆出什么bug....

以上内容均为个人所述,如有不妥,欢迎指正,谢谢

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值