您的位置:首页 > 编程语言 > Java开发

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

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


我的构建环境

JDK 7

Maven 3

Servlet3容器


创建项目

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


添加依赖

查看复制到剪贴板打印

<!-- 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即可运行。

查看复制到剪贴板打印

<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>


实体

查看复制到剪贴板打印

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;

}

}


控制器

查看复制到剪贴板打印

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注解风格配置

查看复制到剪贴板打印

@Configuration

@EnableWebMvc

@ComponentScan

public class AppConfig {

}

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


Servlet3容器启动初始化器

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

查看复制到剪贴板打印

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: