360SDN.COM

Spring 3.0支持基于rest的Web服务学习总结

来源:Java学习网  2017-09-11 13:29:13    评论:0点击:

Java学习网(www.javalearns.com)提拱

尽管RESTful功能被添加到Spring MVC框架非常早期通过注释和其他API功能,支持基于rest的Web服务是Spring MVC有点晚。几个jax - rs(RESTful Web服务的Java API)实现,比如Restlet RESTEasy和球衣支持rest风格的Web服务,但Spring社区没有添加到Spring 3.0支持rest风格的Web服务功能。在这篇文章中,我讨论了Spring 3.0支持开发RESTful Web服务,检查类和注释。

快速复习,RESTful Web服务的Web服务创建和访问使用REST(REpresentational State Transfer)原则。RESTful Web服务,使用HTTP方法的操作执行,可以很容易地访问使用统一资源标识符(uri)。HTTP方法 POST, GET, PUT DELETE可以映射到创建、读取、更新和删除(CRUD)操作。

RESTful Web服务使用jax - rs

jax - rs是一个Java编程API(JSR 311)作为Java EE平台的一部分。jax - rs是为了方便开发Java应用程序使用REST原则和架构,使用注释,jax - rs开发人员可以简单的pojo公开为Web资源。jax - rs应用程序打包为WAR文件和其他在Java和Web应用程序部署在一个容器,它支持Java Servlet API。

在Java开发jax - rs应用程序的方法之一是使用泽西岛一个开源,生产型jax - rs的参考实现。泽西实现的所有api,它提供了快速便捷的创建Java注释使用REST样式的Web服务。它还提供了很多附加功能有自己的API喜欢Jersey客户端API。RESTful Web服务,泽使用HTTP Web服务器被称为灰熊。请求这个容器被灰熊Servlet处理,与com.sun.jersey.spi.container.servlet.ServletContainer全限定名。

RESTful Web服务使用Spring

与Spring MVC支持rest式Web服务、Java开发人员可以构建RESTful应用程序使用注释,注释的继承Spring的Web MVC框架。客户端支持RESTful应用程序创建RestTemplate提供的API,这是概念上非常类似于像JdbcTemplate和JmsTemplate类。HttpConverters类提供的其他功能,这有助于将对象转换为他们在HTTP请求和响应的表征,反之亦然。为了实现对象和XML之间的映射,Spring提供了MarshallingHttpMessageConverter类。

Spring Web MVC使用DispatcherServlet调度请求处理程序。默认的处理程序是确定使用 @Controller @RequestMapping注释。这些注释发挥重要作用在开发RESTful应用程序春天,实际上是基本(连同 @PathVariable在春天注释)RESTful的功能。的 @Controller注释是用来标记一个POJO作为控制器,而 @RequestMapping注释用于将请求映射到一个类或一个处理程序的方法。

春天控制器和基于rest的Web服务

在Spring Web MVC控制器代表了“C”。他们帮助处理用户输入,并将其转换为一个模型为用户通过视图。控制器可以使用声明 @Controller注释。通常,使用该注释的类标记特定类作为一个控制器。

@Controller
public class StockController {
  private final Stock stock;

  @AutoWired
  public StockController(Stock stock) {
     this.stock = stock;
  }

  @RequestMapping("/")
  public void stockInfo() {
  }

  @RequestMapping("/stockdetails")
  public String getStockDetails() {
     return this.stock.getStockDetails();
  }
}

注释 @RequestMapping不需要在类级别,它可以提到在方法级别。调用适当的方法处理程序根据绝对路径。

URI模板

URI模板是一个模板来保存一个URI字符串。通常,一个URI模板变量,这些变量替换值时,他们成为实际的URI。URI模板允许提及一个模板@RequestMapping注释。

例如,URI http://www.helloworld.com/users/ { username }提到一个URI模板,允许一个替代用户的用户名与实际名称比如http://www.helloworld.com/users/john。处理程序比较实际的URI与URI模板和适当的替代品的参数。

@RequestMapping(value="/users/{username}", method=RequestMethod.GET)
public String sayHello(Model model) {
  ......
  return "Hello, Welcome!";
}

Spring注释:@PathVariable

注释 @PathVariable用于绑定URI模板变量方法参数。在上一个示例中,URI模板变量用户名可以绑定到用户名的方法参@PathVariable注释。方法参数类型声明 @PathVariable不是只限制字符串;他们可以是任何原始数据类型,如int,长,双等。

@RequestMapping(value="/users/{username}", method=RequestMethod.GET)
public String sayHello(@PathVariable("username") String userName, Model model) {
  ......
  return "Hello "+userName+", Welcome!";
}

可以绑定多个URI模板变量方法参数。

@RequestMapping(value="/users/{username}/city/{cityname}", method=RequestMethod.GET)
public String sayHello(@PathVariable("username") String userName, @PathVariable("cityname")  String cityName, Model model) {
  ......
}

URI模板变量也可以来自于相对路径。

@Controller
@RequestMapping(value="/users/{username}")
public class SayHelloController {

  @RequestMapping(value="/city/{cityname}")
  public String sayHello(@PathVariable("username") String userName, @PathVariable("cityname")  String cityName, Model model) {
  ......
  }
}

像myParam = paramValue也支持参数化的条件,在请求映射只有参数给定paramValue。

Spring注释:@RequestParam

注释 @RequestParam用于将请求参数绑定到一个方法参数的控制器。同样,注释 @RequestBody用于显示参数绑定到HTTP请求中的值的身体。同时发送响应,注释 @ResponseBody也可以用来返回HTTP响应中的值的身体。

@Controller
@RequestMapping("/stockquote")
public class StockController {
  .....

  @RequestMapping(method=RequestMethod.GET)
  public double getStockPrice(@RequestParam("stockSymbol") String stockSymbol, Model model) {
     ...
     model.setAttribute("stockSymbol", stockSymbol);
     ...
  }
  .....
  .....
}

美德  
请↙↙↙点击阅读原文” ….

阅读原文

为您推荐

友情链接 |九搜汽车网 |手机ok生活信息网|ok生活信息网|ok微生活
 Powered by www.360SDN.COM   京ICP备11022651号-4 © 2012-2016 版权