`

5分钟构建spring web mvc REST风格HelloWorld

 
阅读更多

 

当然写本文的目的不是为了速度,只是表明现在构建一个Spring web mvc Rest风格的HelloWorld应用会很简单。不过如果看过Spring Boot这个项目,可能只需要最多3分钟就能构建一个简单的Rest风格应用。回头研究下,然后分享下。

 

我的构建环境

JDK 7

Maven 3

Servlet3容器

 

创建项目

首先使用Maven创建一个普通Maven应用即可,不必是web的。

 

添加依赖

Java代码  收藏代码
  1. <!-- servlet 3 -->  
  2. <dependency>  
  3.     <groupId>javax.servlet</groupId>  
  4.     <artifactId>javax.servlet-api</artifactId>  
  5.     <version>3.0.1</version>  
  6. </dependency>  
  7.   
  8. <!--spring context -->  
  9. <dependency>  
  10.     <groupId>org.springframework</groupId>  
  11.     <artifactId>spring-context-support</artifactId>  
  12.     <version>4.0.0.RELEASE</version>  
  13. </dependency>  
  14.   
  15. <!--spring webmvc -->  
  16. <dependency>  
  17.     <groupId>org.springframework</groupId>  
  18.     <artifactId>spring-webmvc</artifactId>  
  19.     <version>4.0.0.RELEASE</version>  
  20. </dependency>  
  21.   
  22. <!--jackson -->  
  23. <dependency>  
  24.     <groupId>com.fasterxml.jackson.core</groupId>  
  25.     <artifactId>jackson-databind</artifactId>  
  26.     <version>2.2.3</version>  
  27. </dependency>  

 servlet3依赖scope是provided表示环境提供,然后添加spring-context-support和spring-webmvc依赖,最后用于json的jackson依赖。非常简单明了。

 

添加maven插件

为了方便测试,添加jetty的maven插件,这样直接使用mvn jetty:run即可运行。

Java代码  收藏代码
  1. <build>  
  2.     <finalName>springmvc</finalName>  
  3.     <plugins>  
  4.         <plugin>  
  5.             <groupId>org.mortbay.jetty</groupId>  
  6.             <artifactId>jetty-maven-plugin</artifactId>  
  7.             <version>8.1.8.v20121106</version>  
  8.             <configuration>  
  9.                 <reload>manual</reload>  
  10.                 <webAppConfig>  
  11.                     <contextPath>/${project.build.finalName}</contextPath>  
  12.                 </webAppConfig>  
  13.                 <connectors>  
  14.                     <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">  
  15.                         <port>9080</port>  
  16.                         <!--<maxIdleTime>60000</maxIdleTime>-->  
  17.                     </connector>  
  18.                 </connectors>  
  19.             </configuration>  
  20.         </plugin>  
  21.     </plugins>  
  22. </build>  

  

实体 

Java代码  收藏代码
  1. package com.sishuok.entity;  
  2.   
  3. import java.io.Serializable;  
  4.   
  5. /** 
  6.  * <p>User: Zhang Kaitao 
  7.  * <p>Date: 13-12-19 
  8.  * <p>Version: 1.0 
  9.  */  
  10. public class User implements Serializable {  
  11.     private Long id;  
  12.     private String name;  
  13.   
  14.     public Long getId() {  
  15.         return id;  
  16.     }  
  17.   
  18.     public void setId(Long id) {  
  19.         this.id = id;  
  20.     }  
  21.   
  22.     public String getName() {  
  23.         return name;  
  24.     }  
  25.   
  26.     public void setName(String name) {  
  27.         this.name = name;  
  28.     }  
  29.   
  30.     @Override  
  31.     public boolean equals(Object o) {  
  32.         if (this == o) return true;  
  33.         if (o == null || getClass() != o.getClass()) return false;  
  34.   
  35.         User user = (User) o;  
  36.   
  37.         if (id != null ? !id.equals(user.id) : user.id != nullreturn false;  
  38.   
  39.         return true;  
  40.     }  
  41.   
  42.     @Override  
  43.     public int hashCode() {  
  44.         return id != null ? id.hashCode() : 0;  
  45.     }  
  46. }  

 

控制器

Java代码  收藏代码
  1. package com.sishuok.controller;  
  2.   
  3. import com.sishuok.entity.User;  
  4. import org.springframework.web.bind.annotation.PathVariable;  
  5. import org.springframework.web.bind.annotation.RequestMapping;  
  6. import org.springframework.web.bind.annotation.RequestMethod;  
  7. import org.springframework.web.bind.annotation.RestController;  
  8.   
  9. /** 
  10.  * <p>User: Zhang Kaitao 
  11.  * <p>Date: 13-12-19 
  12.  * <p>Version: 1.0 
  13.  */  
  14. @RestController  
  15. @RequestMapping("/user")  
  16. public class UserController {  
  17.   
  18.     @RequestMapping(value = "/{id}", method = RequestMethod.GET)  
  19.     public User view(@PathVariable("id") Long id) {  
  20.         User user = new User();  
  21.         user.setId(id);  
  22.         user.setName("zhang");  
  23.         return user;  
  24.     }  
  25. }  

 

pringMVC注解风格配置

Java代码  收藏代码
  1. @Configuration  
  2. @EnableWebMvc  
  3. @ComponentScan  
  4. public class AppConfig {  
  5. }  

具体含义请参考《Spring4新特性——Groovy Bean定义DSL》部分。

 

Servlet3容器启动初始化器

在Servlet容器启动时编程式注册Servlet

Java代码  收藏代码
  1. package com.sishuok;  
  2.   
  3. import org.springframework.web.WebApplicationInitializer;  
  4. import org.springframework.web.context.WebApplicationContext;  
  5. import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;  
  6. import org.springframework.web.servlet.DispatcherServlet;  
  7.   
  8. import javax.servlet.ServletContext;  
  9. import javax.servlet.ServletException;  
  10. import javax.servlet.ServletRegistration;  
  11.   
  12. /** 
  13.  * <p>User: Zhang Kaitao 
  14.  * <p>Date: 13-12-19 
  15.  * <p>Version: 1.0 
  16.  */  
  17. public class AppInitializer implements WebApplicationInitializer {  
  18.   
  19.     @Override  
  20.     public void onStartup(ServletContext servletContext) throws ServletException {  
  21.         AnnotationConfigWebApplicationContext webApplicationContext =  
  22.                 new AnnotationConfigWebApplicationContext();  
  23.         webApplicationContext.register(AppConfig.class);  
  24.   
  25.   
  26.         DispatcherServlet dispatcherServlet = new DispatcherServlet(webApplicationContext);  
  27.         ServletRegistration.Dynamic dynamic = servletContext.addServlet("dispatcherServlet", dispatcherServlet);  
  28.         dynamic.addMapping("/");  
  29.   
  30.     }  
  31. }   

然后运行 mvn jetty:run运行即可,浏览器输入如下地址即可得到我们的json数据。

http://localhost:9080/springmvc/user/1

 参考示例的github地址:springmvc-rest-helloworld

 

非常简单的一个Rest风格的web应用就搭建完了,接下来再完善即可。

 

下一篇将介绍使用Spring Boot 2分钟构建spring mvc REST风格HelloWorld。

 

 

分享到:
评论

相关推荐

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

    NULL 博文链接:https://jinnianshilongnian.iteye.com/blog/1997192

    Spring3MVC-REST-HelloWorld 实例简单代码

    Spring3MVC-REST-HelloWorld 实例简单代码

    Spring Web MVC入门教程

    包括:注解式开发HelloWorld、处理器定义、请求映射、REST风格支持、请求数据映射、数据绑定等诸多内容 第四章:数据类型转换 包括:简介、内建类型转换器、自定义类型转换器等 第五章:数据格式化 包括:简介、...

    spring4-mvc-docker-hello-world

    spring4-mvc-docker-hello-world Spring Mvc 4 Docker Hello世界示例,带有jsp视图和rest控制器以及自动装配服务。 乌尔 运行IT测试 mvn clean verify 作者 Juan EnriqueAlcázarSolomando-初期工作 执照 此项目...

    spring加载restful(文档+程序源码)

     本节中的例子将演示Spring 3环境的创建过程,并创建一个可以部署到Tomcat中的“Hello World”应用。然后我们再完成一个更复杂的应用来了解Spring 3 REST支持的重要概念,如多种MIME类型表示支持和JAXB支持。另外,...

    hellorest-iut:TP Spring MVC - Rest - JavaConfig IUT - 学生

    你好休息使用 Spring 4 和 Gradle 的 Hello World 应用程序。 使用./gradlew eclipse项目加载到./gradlew eclipse 使用./gradlew idea项目加载到 Intellij 使用./gradlew tomcatRun在 tomcat 上运行

    gs-rest-hateoas:构建超媒体驱动的RESTful Web服务

    本指南将引导您完成使用Spring创建“ Hello,World”超媒体驱动的REST Web服务的过程。 是REST的重要方面。 它使您可以构建使客户端和服务器在很大程度上分离并使其独立发展的服务。 为REST资源返回的表示形式不仅...

    Spring.3.x企业应用开发实战(完整版).part2

     Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架、REST风格的Web编程模型等。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是JavaWeb应用开发的难度,同时有效提升...

    Spring3.x企业应用开发实战(完整版) part1

     Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架、REST风格的Web编程模型等。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是JavaWeb应用开发的难度,同时有效提升...

    Spring 3 Reference中文

    4.8.1.1 示例:BeanPostProcessor 风格的Hello World.. 79 4.8.1.2 示例:RequiredAnnotationBeanPostProcessor 81 4.8.2 使用BeanFactoryPostProcessor 自定义配置元数据. 81 4.8.2.1 示例:...

    WebTrainingPile:Java WebApp(TRAINIDEA桩)

    路线图: 1 Hello world(简单的JSP) 2 Hello world(简单servlet) 3 Hello world(Spring MVC) 4 Rest Hello World(Spring MVC) 5 WebSocket服务6 Angular(或其他框架)前端Web应用程序。 7 WebApp的“ hello...

    spring-framework-reference-4.1.2

    3.7. General Web Improvements ............................................................................... 19 3.8. WebSocket, SockJS, and STOMP Messaging ..............................................

    spring3.1中文参考文档

    spring3.1中文参考文档,南磊翻译,现在有4章,目录如下: 第一部分 Spring framework概述.......................................................................................................................

    spring-framework-reference4.1.4

    3.7. General Web Improvements ............................................................................... 19 3.8. WebSocket, SockJS, and STOMP Messaging ..............................................

    JAVA上百实例源码以及开源项目

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    JAVA上百实例源码以及开源项目源代码

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

Global site tag (gtag.js) - Google Analytics