spring mvc & freemarker 版ROR

实现COC原则无配置自动映射
[quote]http://localhost:8080/jpetstore/index/index.html --> IndexController.index() --> /WEB-INF/ftl/index/index.flt [/quote]


今天晚上试验了一下想象中的配置 成功了。

SPRING MVC + FREEMARKER 实现类似ROR的 URL 自动路由 COTROLLER 处理结果 根据URL 自动映射到 URL 对应的 FTL 模板文件。

下面我把配置文件贴出来看看。

修改了jpetstore的部分文件。包括 web.xml 将 .html的请求映射到spring mvc上。

修改 petstore-servlet.xml 当然还要改一改你的build.xml才能将新的ftl一起部署过去。
[quote]

<beans>


<!-- ========================= VIEW DEFINITIONS ========================= -->

<bean id="viewNameTranslator"
class="org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator"/>
<!-- -->
<!-- freemarker config -->
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/ftl/"/>
</bean>

<bean id="viewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="cache" value="true"/>
[b]<property name="prefix" value=""/>[/b]
<!--prefix这个属性要注意,一开始我写成了/WEB-INF/ftl/找了半天告诉我找不到模板,原来是这里写错了。。-->

<property name="suffix" value=".ftl"/>
<!-- 如果你需要使用Spring 对 FreeMarker 宏命令的支持, 将这个属性设为true -->
<property name="exposeSpringMacroHelpers" value="true"/>
</bean>


<!-- ========================= DEFINITIONS OF PUBLIC CONTROLLERS ========================= -->

<bean
class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping "/>


<bean id="index"
class="org.springframework.samples.jpetstore.web.spring.IndexController">
</bean>


</beans>

[/quote]

这个配置就可以实现我刚才说的映射渲染模板的方式了。效果还不错。

[quote]org.springframework.samples.jpetstore.web.spring.IndexController[/quote]
这个CONTROLLER 继承 MultiActionController 这样就可以实现

http://localhost:8080/jpetstore/index/index.html --> IndexController.index方法上。

http://localhost:8080/jpetstore/index/list.html --> IndexController.list方法上。

MultiActionController的子类写法有些特殊要求,需要小心。参考API可以看到它的方法签名需要是

[quote]public (ModelAndView | Map | String | void) actionName(HttpServletRequest request, HttpServletResponse response);[/quote]

我一开始把它的签名写成protected 就出错了。后台提示无法找到handler。具体用法请参考API


同时ftl模板的位置相应的是/WEB-INF/ftl/index/index.html以及 /WEB-INF/ftl/index/list.html


[b]是不是舒服多了?其实用SPRING MVC 也能体验ROR一样的COC的。让那些无聊的配置文件走开![/b]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值