spring MVC 配置多视图模块,多输出格式
springmvc可能要配置多个视图模式,比方说需求要求有jsp和freemarker2种输出文件格式。freemarker可以自己定制
xml|json|html等。
面对这样的需求,显然单纯的mvc的jsp视图模板是不够的,所以需要spring对freemarker进行支持。
对于这样的问题,有多种解决方案,就我用过的2中说说吧:
1:使用org.springframework.web.servlet.view.ResourceBundleViewResolver
直接上代码:
<!--配置一个ResourceBundleViewResolver 配置一个spring-views.properites 文件(必须在根目录) 加载的顺序是最优先 "order = 0" --> <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver"> <property name="basename" value="spring-views" /> <property name="order" value="0" /> </bean> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath"> <value>/WEB-INF/views/modules</value> </property> </bean> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean>
spring-views.properties:
articles.(class)=org.springframework.web.servlet.view.JstlView articles.url=articles.jsp module-content-articles.(class)=org.springframework.web.servlet.view.freemarker.FreeMarkerView module-content-articles.url=modules/content/html/articles.ftl
这里的class指定的是解析的视图类,url指定的是视图页面。
Controller类中请求方式:
return "module-content-articles";
我用的是另一种配置多视图的方式:
<!-- <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver"> <property name="basename" value="spring-views" /> <property name="order" value="0" /> </bean>--> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath"> <value>/WEB-INF/views/modules</value> </property> </bean> <bean id="xmlviewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="suffix" value=".xml.ftl" /> <property name="contentType" value="text/xml;charset=UTF-8"></property> </bean> <bean id="htmlviewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="suffix" value=".html.ftl" /> <property name="contentType" value="text/html;charset=UTF-8"></property> </bean> <bean id="jsonviewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="suffix" value=".json.ftl" /> <property name="contentType" value="application/text;charset=UTF-8"></property> </bean> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean>
这样就没有使用org.springframework.web.servlet.view.ResourceBundleViewResolver了,这样的话spring-views.properties文
件就没有存在的意义了。
Controller类:
return "content/"+format+"/articles";
目录结构
相关推荐
81314797 2020-11-18
89314493 2020-11-03
81941231 2020-09-17
thisisid 2020-09-09
如狼 2020-08-15
82384399 2020-06-16
86384798 2020-05-12
80183053 2020-05-02
86384798 2020-04-26
86384798 2020-04-11
rionchen 2020-04-09
86384798 2020-04-07
86384798 2020-04-04
80183053 2020-03-07
87201943 2020-03-06
83961233 2020-02-26