`
asklxf
  • 浏览: 37531 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计REST风格的Java MVC框架

    博客分类:
  • Java
阅读更多

是否对传统的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

2
1
分享到:
评论

相关推荐

    设计 REST 风格的 MVC 框架

    #### REST风格的MVC框架设计原理 在设计REST风格的MVC框架时,关键在于如何将URL直接映射到具体的控制器方法上,而不是像传统框架那样映射到整个控制器类。这要求框架具备解析URL的能力,以及动态调用相应方法的...

    Java MVC编程入门详解

    Spring MVC框架中的`@Controller`注解就是用来标记控制器类的。 在Java MVC编程中,Spring框架是一个常用的选择,它提供了强大的MVC支持,包括依赖注入、AOP(面向切面编程)、数据绑定和异常处理等功能。开发者...

    JAVA MVC +实例

    总之,Java MVC框架,特别是Spring MVC,是企业级Web开发的强大工具,它使得开发者能够高效地构建出结构清晰、易于维护的Web应用。通过实际项目训练,可以深入理解并掌握其工作原理和最佳实践,提升个人的编程技能和...

    开源mvc框架源码

    - REST格式MVC:REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,强调通过HTTP协议来操作资源。在MVC框架中,支持RESTful API可以使服务更加符合Web标准,便于构建分布式、无状态...

    mvc框架代码

    在Java MVC框架中,如Spring MVC,模型通常由JavaBeans或领域对象类构成,它们持有数据并提供方法来操作这些数据。 **视图(View)**是用户看到和交互的部分,负责展示数据。在Java Web应用中,视图通常由JSP(Java...

    spring-rest.rar_DEMO_employeeDS.java_rest spring mvc_spring mvc_

    在本示例中,我们将深入探讨如何利用Spring MVC框架构建RESTful API,主要涉及`employeeDS.java`这个可能的数据服务类以及与`rest_spring_mvc`、`spring_mvc`和`spring_rest`相关的概念。`spring-rest.rar`是一个...

    mavin spring4 mvc mybatis 整合 带事务,REST风格

    【标题】"mavin spring4 mvc mybatis 整合 带事务,REST风格" 涉及到的是一个基于Java技术栈的Web应用程序开发,整合了Maven、Spring4 MVC、MyBatis框架,并且实现了RESTful API设计以及事务管理。下面将对这些关键...

    Spring MVC REST Demo

    Spring MVC 是一个强大的Java框架,用于构建Web应用程序,而REST(Representational State Transfer)是一种软件架构风格,常用于创建Web服务。"Spring MVC REST Demo"是一个示例项目,旨在展示如何在Spring MVC框架...

    第四章 Spring MVC Rest风格的url、静态资源标签

    在本章中,我们将深入探讨Spring MVC框架中的RESTful风格URL设计以及如何处理静态资源。REST(Representational State Transfer)是一种软件架构风格,常用于Web服务设计,它强调通过HTTP方法(如GET、POST、PUT、...

    java mvc

    在Java中,我们通常使用Spring MVC框架来实现这一模式,它为开发者提供了强大的功能和灵活性。 **模型(Model)**: 模型是应用程序的核心,负责管理业务逻辑和数据。在Java MVC中,模型对象通常由Java beans或POJO...

    JAVA PLAY框架入门学习手册

    * MVC应用程序模型:Java PLAY框架采用了MVC(Model-View-Controller)模式, 将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这种模式使得应用程序的逻辑分离,提高了开发效率...

    REST风格的架构

    REST风格的架构是一种基于HTTP协议,使用统一的接口来交互数据和实现功能的软件设计模式。在Web服务领域,REST(Representational State Transfer,表述性状态转移)已经成为构建可伸缩、高性能网络应用的重要选择。...

    mavin spring4 mvc mybatis 整合 带REST风格

    【标题】"mavin spring4 mvc mybatis 整合 带REST风格"涉及到的知识点主要涵盖了Java Web开发中的三大核心框架:Maven、Spring 4 MVC以及MyBatis,以及RESTful服务的设计和实现。以下是这些技术的详细介绍: 1. ...

    java框架核心技术笔记

    6. RESTful API设计:在现代Web服务中,使用REST(Representational State Transfer)风格设计API已经成为标准。Java框架如Spring提供了一系列工具支持RESTful服务的开发,包括HTTP方法、资源URI和JSON数据交换格式...

    Spring Boot——2分钟构建spring web mvc REST风格HelloWorld

    REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以JSON或XML格式传输数据。在Spring Boot中,我们可以轻松地创建RESTful Web服务。 **Spring MVC** Spring MVC是...

    ssm框架整合及Rest风格接口实现

    SSM框架整合及Rest风格接口实现涉及到的技术领域主要包括Spring、SpringMVC、Mybatis三大流行Java框架的整合以及基于RESTful风格的接口设计与实现。 首先,Spring、SpringMVC、Mybatis是Java后端开发中经常组合使用...

    springmvc之rest风格的crud

    在Spring MVC框架中,REST(Representational State Transfer)风格是一种设计Web服务的常见方式,它强调资源的概念,并通过HTTP协议中的方法(GET、POST、PUT、DELETE)来操作这些资源。本教程主要针对初学者,讲解...

    毕业设计管理系统java服务端,采用spring mvc

    毕业设计管理系统是一个典型的Java Web应用,它利用Spring MVC框架来构建服务端逻辑。Spring MVC是Spring框架的一个模块,专门用于处理Web应用程序的请求-响应模型。这个系统可能包含了用户管理、项目分配、进度跟踪...

Global site tag (gtag.js) - Google Analytics