Groovy是慢于java,有时是戏剧性的慢。实际上,这已影响不大,对一个web应用来说,响应时间是较容易受数据库和网络等待时间的影响,相比较这种慢来说有点太过戏剧性,但是Groovy和Grails的优点已远远超过了这些忧虑。并且Grails依然快于Rails。
但话说回来,我不知道如何使用一个常用的Java
Spring MVC控制器和JSP,而非一个Grails控制器和GSP(均采用Groovy) 。原来,这实在是太容易:
1、注册传统的Spring调度的Servlet在
web.xml中(你需要有运行Grails安装模板(
install-templates))。在这个例子中,name属性( springmvc )不是重要的,使用任何你想要做的,我选择了映射*.action的URL ,以这种控制器,让grails处理:
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
2、产生web-app/web-inf/springmvc-servlet.xml :
<?xml version='1.0' encoding='UTF-8'?>
<beans xmlns='http://www.springframework.org/schema/beans'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:p='http://www.springframework.org/schema/p'
xmlns:lang='http://www.springframework.org/schema/lang'
xsi:schemaLocation='
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/lang
http://www.springframework.org/schema/lang/spring-lang-2.5.xsd'>
<bean id='mvcHandlerMapping'
class='org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping'
p:order='1'>
<property name='interceptors'>
<list>
<ref bean='openSessionInViewInterceptor' />
<ref bean='localeChangeInterceptor' />
</list>
</property>
</bean>
<bean id='mvcViewResolver'
class='org.springframework.web.servlet.view.UrlBasedViewResolver'
p:viewClass='org.springframework.web.servlet.view.InternalResourceView'
p:order='1'
p:prefix='/WEB-INF/jsp/'
p:suffix='.jsp'
/>
<bean name='baseSimpleController' abstract='true' p:cacheSeconds='0'/>
<bean name='jspController'
class='com.foo.spring.controller.JspController'
parent='baseSimpleController'
abstract='true'
/>
<!-- actions -->
<bean name='/test.action'
class='com.foo.spring.controller.TestController'
parent='baseSimpleController'
p:successView='test'
/>
<bean name='/other.action' parent='jspController' p:successView='other' />
</beans>
就是这样。一些注释:
1、处理程序映射使用的ID
mvcHandlerMapping自Grails将创造一个使用标准名称
handlerMapping ;
2、由于处理器映射在默认情况下是自动寻找到的,您需要设置该命令属性的东西低于Grails映射的(即使用默认值
Integer.MAX_VALUE) ,使这个映射是第一次访问;
3、该
HandlerInterceptors配置为Grails映射(
OpenSessionInView, LocaleChange)将不会被自动提供给这个映射,但它是简单借用他们,因为他们正在登记为beans,你也可以添加其他定制拦截器在该份名单;
4、我已经创造了一个可选的抽象父控制器 bean (
baseSimpleController)为简单的控制器(单页,即不是表单或精灵(
wizard)控制器);
5、我还创造了一个简单的控制器,只显示JSP的-这是非常有用没有任何控制器的逻辑的页面:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
public class JspController extends AbstractController {
private String _successView;
@Override
protected ModelAndView handleRequestInternal(
final HttpServletRequest request,
final HttpServletResponse response) {
return new ModelAndView(_successView);
}
public void setSuccessView(final String view) {
_successView = view;
}
}
我已经制定了两个样品的URL -
/test.action,即用一个控制器和
/other.action,即用
JspController只显示
other.jsp。
注意,使用带有Grails的JSP是可能的; Grails期待一个GSP的指定名称,但如果找不到,他也会去找一个JSP的(在
/ WEB-INF/grails-app/views /下 ) 使用如果存在的话。所以另一种选择是使用grails控制器和JSP 。
但我却没有用在开发中,我只是想,尽管如此,我还会全力以赴,在今后的开发中可是以防万一。
分享到:
相关推荐
基于Spring MVC的控制器层 构建于Gant 上的命令行脚本运行环境 内置Jetty服务器,不用重新启动服务器就可以进行重新加载 利用内置的Spring 容器实现依赖注入 基于Spring的MessageSource核心概念,提供了对国际化...
基于Spring MVC的控制器层 构建于Gant 上的命令行脚本运行环境 内置Jetty服务器,不用重新启动服务器就可以进行重新加载 利用内置的Spring 容器实现依赖注入 基于Spring的MessageSource核心概念,提供了对国际化...
第1章 寻找grails之旅 1.1 java的困惑 1.2 webc2.0时代 1.3 java的力量 ... 11.4 在grails中使用spring控制器 11.5 在grails中使用acegi 11.6 使用xfire创建soap服务 11.7 本章小结
基于Spring MVC的控制器层 构建于Gant 上的命令行脚本运行环境 内置Jetty服务器,不用重新启动服务器就可以进行重新加载 利用内置的Spring 容器实现依赖注入 基于Spring的MessageSource核心概念,提供了对国际化...
易于使用的基于Hibernate的对象-关系映射(ORM)层称为Groovy Server Pages (GSP)的表现层技术基于Spring MVC的控制器层构建于Gant 上的命令行脚本运行环境内置Jetty服务器,不用重新启动服务器就可以进行重新加载利用...
易于使用的基于Hibernate的对象-关系映射(ORM)层称为Groovy Server Pages (GSP)的表现层技术基于Spring MVC的控制器层构建于Gant 上的命令行脚本运行环境内置Jetty服务器,不用重新启动服务器就可以进行重新加载利用...
基于Spring MVC的控制器层 构建于Gant 上的命令行脚本运行环境 内置Jetty服务器,不用重新启动服务器就可以进行重新加载 利用内置的Spring 容器实现依赖注入 基于Spring的MessageSource核心概念,提供了对国际化...
第6章 在Spring Boot中使用Grails 93 6.1 使用GORM进行数据持久化 93 6.2 使用Groovy Server Pages定义视图 98 6.3 结合Spring Boot与Grails 3 100 6.3.1 创建新的Grails项目 100 6.3.2 定义领域...
第6章 在Spring Boot中使用Grails 93 6.1 使用GORM进行数据持久化 93 6.2 使用Groovy Server Pages定义视图 98 6.3 结合Spring Boot与Grails 3 100 6.3.1 创建新的Grails项目 100 6.3.2 定义领域模型 ...
基于Spring MVC的控制器层 构建于Gant 上的命令行脚本运行环境 内置Jetty服务器,不用重新启动服务器就可以进行重新加载 利用内置的Spring 容器实现依赖注入 基于Spring的MessageSource核心概念,提供了对...
6.2 在你的Servlet和过滤器中使用Spring 214 6.2.1 问题 214 6.2.2 解决方案 215 6.2.3 工作原理 215 6.3 将Spring与Struts 1.x集成 220 6.3.1 问题 220 6.3.2 解决方案 220 6.3.3 工作原理 220 6.4...
6.2 在你的Servlet和过滤器中使用Spring 214 6.2.1 问题 214 6.2.2 解决方案 215 6.2.3 工作原理 215 6.3 将Spring与Struts 1.x集成 220 6.3.1 问题 220 6.3.2 解决方案 220 6.3.3 工作原理 220 6.4...
一个基于Spring MVC的控制器层 一个基于Gradle的交互式命令行环境 一个内嵌的且已配置为热部署的Tomcat服务器 Spring的依赖注入技术 使用Spring的MessageSource实现国际化(i18n) 一个基于Spring事务抽象的事务层 ...
第 6 章 在 Spring Boot 中使用 Grails ...... 93 6.1 使用 GORM 进行数据持久化 ................. 93 6.2 使用 Groovy Server Pages 定义视图 ....... 98 6.3 结合 Spring Boot 与 Grails 3 ................. 100...
6 章 在 Spring Boot 中使用 Grails ......936.1 使用 GORM 进行数据持久化 .................932 目 录6.2 使用 Groovy Server Pages 定义视图 .......986.3 结合 Spring Boot 与 Grails 3 .................1006.3...
第 6 章 在 Spring Boot 中使用 Grails ...... 93 6.1 使用 GORM 进行数据持久化 ................. 93 2 目 录 6.2 使用 Groovy Server Pages 定义视图 ....... 98 6.3 结合 Spring Boot 与 Grails 3 ................