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 。
但我却没有用在开发中,我只是想,尽管如此,我还会全力以赴,在今后的开发中可是以防万一。
分享到:
相关推荐
Grails是一种基于Groovy语言的开源Web应用框架,它结合了模型-视图-控制器(MVC)架构模式,旨在提高开发效率,降低复杂性。这份中文文档将带你深入理解Grails的核心特性,包括它的配置、插件、数据库集成、服务层、...
在Spring MVC中,控制器负责接收请求,调用服务层,并将结果返回给客户端: ```java @RestController @RequestMapping("/users") class UserController { private final UserService userService UserController...
在Grails框架中,Groovy用于编写控制器、服务、领域类等组件。 3. **领域模型(Domain Model)** 在Grails中,领域模型是应用程序的核心,它代表了业务数据和逻辑。通过定义Groovy类并使用Grails的GORM(Grails ...
它还包含了Groovy Server Pages(GSP),这是一种基于Groovy的模板引擎,它允许开发者在页面中使用Groovy脚本。GSP标签库丰富,涵盖了数据绑定、表单处理、页面布局等多个方面。Grails的URL映射系统使得可以灵活地将...
《Grails1.1中文文档》是Grails 1.1版本的官方中文指南,包含了框架的详细介绍、安装指南、基本概念、MVC模式的应用、GORM的使用、服务层、控制器、视图、国际化、测试等方面的内容。通过阅读这份文档,开发者可以...
基于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 本章小结
例如,`grails create-app` 用于创建新的 Grails 应用,`grails run-app` 用于启动应用,`grails generate-controller` 可以自动生成控制器代码。这些命令大大提高了开发效率,让开发者能专注于业务逻辑而非基础架构...
- **GRAILS插件系统**: 允许开发者扩展框架功能,提供预定义的服务、控制器和视图,例如,Spring Security插件用于身份验证和授权。 - **自动化脚手架**: Grails提供了一套自动生成常见CRUD(创建、读取、更新、...
基于Spring MVC的控制器层 构建于Gant 上的命令行脚本运行环境 内置Jetty服务器,不用重新启动服务器就可以进行重新加载 利用内置的Spring 容器实现依赖注入 基于Spring的MessageSource核心概念,提供了对国际化...
- **基于Spring MVC的控制器层**:利用Spring框架的功能实现灵活的控制器逻辑。 - **命令行脚本运行环境**:通过Gant提供了一个方便的命令行接口,用于自动化常见的开发任务。 - **内置Jetty服务器**:允许开发者在...
- Grails 提供了一套强大的命令行工具,用于快速生成应用结构、控制器、服务、域类等。 - `grails create-app` 创建新应用,`generate-controller` 生成控制器,`generate-domain-class` 生成领域模型。 5. **...
Grails提供了一套强大的命令行工具,用于快速创建项目、生成控制器、领域类、服务等。例如,`grails create-app` 创建新应用,`generate-controller` 生成控制器,`generate-domain-class` 生成领域类。 四、GORM...
易于使用的基于Hibernate的对象-关系映射(ORM)层称为Groovy Server Pages (GSP)的表现层技术基于Spring MVC的控制器层构建于Gant 上的命令行脚本运行环境内置Jetty服务器,不用重新启动服务器就可以进行重新加载利用...
易于使用的基于Hibernate的对象-关系映射(ORM)层称为Groovy Server Pages (GSP)的表现层技术基于Spring MVC的控制器层构建于Gant 上的命令行脚本运行环境内置Jetty服务器,不用重新启动服务器就可以进行重新加载利用...
同时,通过实践创建简单的Grails应用,了解控制器、服务、领域模型的创建和交互,以及插件的使用。此外,深入研究URL映射和GSP标签库,能让你更好地利用Grails构建高效、可维护的Web应用。 通过阅读《Grails1.1中文...
Grails遵循模型-视图-控制器(Model-View-Controller,MVC)设计模式,将应用程序的不同部分分离,提高了代码的可维护性和可重用性。Grails的Controller处理用户请求,Domain Class代表业务模型,Service提供业务...
6. **Controllers与Views**:控制器如何处理HTTP请求,生成响应,以及视图如何展示数据,理解MVC模式在Grails中的实现。 7. **Services**:服务层的创建和使用,通常用于业务逻辑处理,可以脱离特定请求上下文。 8...