继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

quincyye
关注TA
已关注
手记 235
粉丝 168
获赞 3550

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

我的构建环境
JDK 7
Maven 3
Servlet3容器

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

添加依赖
Java代码 收藏代码
<!-- servlet 3 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>

<!--spring context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.0.0.RELEASE</version>
</dependency>

<!--spring webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.0.0.RELEASE</version>
</dependency>

<!--jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.2.3</version>
</dependency>
servlet3依赖scope是provided表示环境提供,然后添加spring-context-support和spring-webmvc依赖,最后用于json的jackson依赖。非常简单明了。

添加maven插件
为了方便测试,添加jetty的maven插件,这样直接使用mvn jetty:run即可运行。
Java代码 收藏代码
<build>
<finalName>springmvc</finalName>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.8.v20121106</version>
<configuration>
<reload>manual</reload>
<webAppConfig>
<contextPath>/${project.build.finalName}</contextPath>
</webAppConfig>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>9080</port>
<!--<maxIdleTime>60000</maxIdleTime>-->
</connector>
</connectors>
</configuration>
</plugin>
</plugins>
</build>

实体
Java代码 收藏代码
package com.sishuok.entity;

import java.io.Serializable;

/**

  • <p>User: Zhang Kaitao
  • <p>Date: 13-12-19
  • <p>Version: 1.0
    */
    public class User implements Serializable {
    private Long id;
    private String name;

    public Long getId() {
    return id;
    }

    public void setId(Long id) {
    this.id = id;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    @Override
    public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    User user = (User) o;  
    
    if (id != null ? !id.equals(user.id) : user.id != null) return false;  
    
    return true;  

    }

    @Override
    public int hashCode() {
    return id != null ? id.hashCode() : 0;
    }
    }

控制器
Java代码 收藏代码
package com.sishuok.controller;

import com.sishuok.entity.User;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**

  • <p>User: Zhang Kaitao
  • <p>Date: 13-12-19
  • <p>Version: 1.0
    */
    @RestController
    @RequestMapping("/user")
    public class UserController {

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public User view(@PathVariable("id") Long id) {
    User user = new User();
    user.setId(id);
    user.setName("zhang");
    return user;
    }
    }
    具体就不多介绍了,请参考:《Spring4新特性——Web开发的增强》和《跟我学SpringMVC 》。

SpringMVC注解风格配置
Java代码 收藏代码
@Configuration
@EnableWebMvc
@ComponentScan
public class AppConfig {
}
具体含义请参考《Spring4新特性——Groovy Bean定义DSL》部分。

Servlet3容器启动初始化器
在Servlet容器启动时编程式注册Servlet
Java代码 收藏代码
package com.sishuok;

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;

/**

  • <p>User: Zhang Kaitao
  • <p>Date: 13-12-19
  • <p>Version: 1.0
    */
    public class AppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
    AnnotationConfigWebApplicationContext webApplicationContext =
    new AnnotationConfigWebApplicationContext();
    webApplicationContext.register(AppConfig.class);

    DispatcherServlet dispatcherServlet = new DispatcherServlet(webApplicationContext);  
    ServletRegistration.Dynamic dynamic = servletContext.addServlet("dispatcherServlet", dispatcherServlet);  
    dynamic.addMapping("/");  

    }
    }
    具体含义请参考《跟我学Spring3》的第12章 和《Spring4新特性——Groovy Bean定义DSL》和我的github中的《servlet3-showcase》部分。

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

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

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

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP