说明:
1) SimpleUrlHandlerMapping:可以配置/item/*.htm这样的url地址全部都交
给/item /item_detail.htm地址对应的
Controller(/item/ItemDetailController.java)来处理。 2) UrlBuilderModuleConfigurer:可以配置以模块为单位的url地址映射规则,
并加入序号,如:
在上面这段配置中,我们可以配置一个item模块的url地址规则为:/item/{id}.htm
在freemarker页面中,如果想使用上面规则的地址,则使用url内置函数:${url(\
在上面这个函数中,item:代表模块名,param是freemarker的内置函数,返回为map类型的数据,key=id, value=1
如果大家细点一点,会发现上面有一个人seq的一个参数,这个是干什么用的呢?因为有时候,一个item模块可能会有很多的模版规则,如/item/c{category}.htm
上面这个模版的意思是,查到一个item某类目下面的详细信息,这样的话我们可以将seq设置成2
页面上可以做这样的使用:${url(\--> 其中的\就是seq的值,是让url函数调用url模版的时候,只调用seq=2的那个模版。当然,也可以不写(默认会调用第一个配置的url模版, 即seq=1的模版)。
所以,url地址规则:${url(\--> /item/1.htm;
3) 提取url中的参数,上面的例子只是提到了规则url地址的生成,但是如何
将这些url中的参数提取出来呢?那么我们就要看一下,我们url对应处理的 Controller,如下: publicclassItemDetailControllerextendsAbstractController
{
@Override
protectedModelAndViewhandleRequestInternal(HttpServletRequestrequest,
HttpServletResponseresponse) throws Exception {
UrlBuilderModuleurlBuilderModule = (UrlBuilderModule)request .getAttribute(UrlBuilderModule.URL_BUILDER); UrlBuilderBeanDefinitionurlBuilderBean = urlBuilderModule .matchUrlBuilderBean();
// 如果在访问detail页面时,没有找查到相对应的url规则直接返回到/login.htm页面
if (urlBuilderBean == null || !urlBuilderBean.isMatched()) {
returnnewModelAndView(\); } //
Map
urlBuilderBean.getUriTemplateVariables(); try
{
String id = map.get(\);
// 在这里可以写一些业务逻辑,比如在DB中查找到item信息收直接显示detail页面,否则返回到/login.htm页面 Long.valueOf(id); }
catch (Exception e) {
returnnewModelAndView(\); } //
returnnewModelAndView(\, map); } }
Spring MVC业务层的整合
Summercool controller与service层的整合
在spring配置文件中配置相关配置,如healthcloud-service.xml所示:
xmlns:context=\ xmlns:util=\ xmlns:tx=\ xsi:schemaLocation=\ http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd\> destroy-method=\> aliyuncs.com:3306/auth_db_test\/> class=\> value=\/> class=\anager\> 众所周知,在SpringMVC中,常用的业务层的构成是controller->service->dao, 由于引入了Summercool框架,并且Summercool框架controller层不支持使用注解方式自动注入service,所以我们需要从应用上下文中获取构建的service或者dao。如下所示: @SuppressWarnings(\) publicstatic getBeanFromContext(ApplicationContextapplicationContext, Class return (T) applicationContext.getBean(arg0.getSimpleName()); } 说明: ApplicationContext为应用上下文,arg0参数为服务接口的class。如下所示: LoginServiceloginService= BeanUtils.getBeanFromContext(getApplicationContext(), LoginService.class); Dao层代码自动生成工具 具体使用参考com.maobang.platform.tools.create类,执行main方法即可。 Config.properties配置,如下: Author:生成代码的作者 bean_package:生成bean的目录 pack_service:生成service的目录 package_dao:生成dao的目录 package_mapper:生成mybatis mapper文件目录 driverClassName:数据库驱动名称 url:数据库url username:数据库账号 password:数据库密码