是否对传统的Java MVC框架如Struts,WebWork感到失望?大量的XML配置文件,*.do的映射方式导致不得不编写很多FormBean来传递页面参数?强迫实现的Action接口导致一个类只能处理一个请求,十分不便。
流行的Web站点早已实现了REST风格的URL,例如豆瓣的URL,显示一本书不是subject.do?id=xxx,而是很自然的http://www.douban.com/subject/2129650/之类。
也许你会说,通过Apache的RewriteMod或者自己写一个UrlRewriteFilter也能实现这个目标,不过,为什么不能从MVC框架设计本身就实现这种模式呢?
Express-Wind框架的设计目标就是提供一种非常自然的URL映射,并且不限定处理URL的方法接口。
你可以通过一个简单的@Mapping告诉框架一个方法需要处理的URL:
public class MyPage {
@Mapping("/hello")
public String hello() {
return "<h1>Hello, world</h1>";
}
@Mapping("/hello/$1")
public String hello(String name) {
return "<h1>Hello, " + name + "</h1>";
}
}
URL中的参数通过$1,$2……指定,并且会自动传入到方法参数中。
你会得到以下显示效果,根据URL的不同而不同:
方法的返回值可以是String,例如一小段HTML,可以是void,表示你已经自己处理了HttpServletResponse对象,作为DEMO,用来演示时,以上代码工作地很好,不过,作为实际应用,我们需要一个模板系统来渲染页面,此时,应当返回一个TemplateRenderer对象:
@Mapping("/")
public Renderer index() {
Map<String, Object> model = new HashMap<String, Object>();
return new TemplateRenderer("/index.jsp", model);
}
你不需要知道页面是如何渲染的,只需传入模板文件路径和一个Map作为Model即可。无需任何配置,Express-Wind默认使用JSP作为模板,当然,还可以配置Velocity作为模板。
如何与IoC框架集成?
现在,几乎没有项目不使用IoC框架的,Express-Wind支持并且只支持与IoC框架集成使用,也就是说,不使用IoC框架就无法使用Express-Wind。你需要做的是两件事:
1. 把包含@Mapping的class放到IoC框架里(Spring的XML配置文件或Guice的Module)
2. 告诉Express-Wind你使用的是Spring还是Guice还是其他IoC容器,然后Express-Wind自动扫描IoC容器中所有的Bean,取出那些标记有@Mapping的bean的方法,因此,整个URL是0配置。如果一个URL映射没有起作用,多半是因为你忘记了把这个Bean放到IoC容器里了。
如果你想了解关于Express-Wind的更多信息,请参考:
http://code.google.com/p/express-me/wiki/ExpressWind
分享到:
相关推荐
#### REST风格的MVC框架设计原理 在设计REST风格的MVC框架时,关键在于如何将URL直接映射到具体的控制器方法上,而不是像传统框架那样映射到整个控制器类。这要求框架具备解析URL的能力,以及动态调用相应方法的...
Spring MVC框架中的`@Controller`注解就是用来标记控制器类的。 在Java MVC编程中,Spring框架是一个常用的选择,它提供了强大的MVC支持,包括依赖注入、AOP(面向切面编程)、数据绑定和异常处理等功能。开发者...
总之,Java MVC框架,特别是Spring MVC,是企业级Web开发的强大工具,它使得开发者能够高效地构建出结构清晰、易于维护的Web应用。通过实际项目训练,可以深入理解并掌握其工作原理和最佳实践,提升个人的编程技能和...
- REST格式MVC:REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,强调通过HTTP协议来操作资源。在MVC框架中,支持RESTful API可以使服务更加符合Web标准,便于构建分布式、无状态...
在Java MVC框架中,如Spring MVC,模型通常由JavaBeans或领域对象类构成,它们持有数据并提供方法来操作这些数据。 **视图(View)**是用户看到和交互的部分,负责展示数据。在Java Web应用中,视图通常由JSP(Java...
在本示例中,我们将深入探讨如何利用Spring MVC框架构建RESTful API,主要涉及`employeeDS.java`这个可能的数据服务类以及与`rest_spring_mvc`、`spring_mvc`和`spring_rest`相关的概念。`spring-rest.rar`是一个...
【标题】"mavin spring4 mvc mybatis 整合 带事务,REST风格" 涉及到的是一个基于Java技术栈的Web应用程序开发,整合了Maven、Spring4 MVC、MyBatis框架,并且实现了RESTful API设计以及事务管理。下面将对这些关键...
Spring MVC 是一个强大的Java框架,用于构建Web应用程序,而REST(Representational State Transfer)是一种软件架构风格,常用于创建Web服务。"Spring MVC REST Demo"是一个示例项目,旨在展示如何在Spring MVC框架...
在本章中,我们将深入探讨Spring MVC框架中的RESTful风格URL设计以及如何处理静态资源。REST(Representational State Transfer)是一种软件架构风格,常用于Web服务设计,它强调通过HTTP方法(如GET、POST、PUT、...
在Java中,我们通常使用Spring MVC框架来实现这一模式,它为开发者提供了强大的功能和灵活性。 **模型(Model)**: 模型是应用程序的核心,负责管理业务逻辑和数据。在Java MVC中,模型对象通常由Java beans或POJO...
* MVC应用程序模型:Java PLAY框架采用了MVC(Model-View-Controller)模式, 将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这种模式使得应用程序的逻辑分离,提高了开发效率...
REST风格的架构是一种基于HTTP协议,使用统一的接口来交互数据和实现功能的软件设计模式。在Web服务领域,REST(Representational State Transfer,表述性状态转移)已经成为构建可伸缩、高性能网络应用的重要选择。...
【标题】"mavin spring4 mvc mybatis 整合 带REST风格"涉及到的知识点主要涵盖了Java Web开发中的三大核心框架:Maven、Spring 4 MVC以及MyBatis,以及RESTful服务的设计和实现。以下是这些技术的详细介绍: 1. ...
6. RESTful API设计:在现代Web服务中,使用REST(Representational State Transfer)风格设计API已经成为标准。Java框架如Spring提供了一系列工具支持RESTful服务的开发,包括HTTP方法、资源URI和JSON数据交换格式...
REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以JSON或XML格式传输数据。在Spring Boot中,我们可以轻松地创建RESTful Web服务。 **Spring MVC** Spring MVC是...
SSM框架整合及Rest风格接口实现涉及到的技术领域主要包括Spring、SpringMVC、Mybatis三大流行Java框架的整合以及基于RESTful风格的接口设计与实现。 首先,Spring、SpringMVC、Mybatis是Java后端开发中经常组合使用...
在Spring MVC框架中,REST(Representational State Transfer)风格是一种设计Web服务的常见方式,它强调资源的概念,并通过HTTP协议中的方法(GET、POST、PUT、DELETE)来操作这些资源。本教程主要针对初学者,讲解...
毕业设计管理系统是一个典型的Java Web应用,它利用Spring MVC框架来构建服务端逻辑。Spring MVC是Spring框架的一个模块,专门用于处理Web应用程序的请求-响应模型。这个系统可能包含了用户管理、项目分配、进度跟踪...