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

编程技术  /  houtizong 发布于 3年前   73

当然写本文的目的不是为了速度,只是表明现在构建一个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@ComponentScanpublic 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

 

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

 

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

 

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

 

 

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:514224527@qq.com;

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客