`
jinnianshilongnian
  • 浏览: 21513822 次
  • 性别: Icon_minigender_1
博客专栏
5c8dac6a-21dc-3466-8abb-057664ab39c7
跟我学spring3
浏览量:2420492
D659df3e-4ad7-3b12-8b9a-1e94abd75ac3
Spring杂谈
浏览量:3010248
43989fe4-8b6b-3109-aaec-379d27dd4090
跟开涛学SpringMVC...
浏览量:5640601
1df97887-a9e1-3328-b6da-091f51f886a1
Servlet3.1规范翻...
浏览量:260219
4f347843-a078-36c1-977f-797c7fc123fc
springmvc杂谈
浏览量:1597944
22722232-95c1-34f2-b8e1-d059493d3d98
hibernate杂谈
浏览量:250370
45b32b6f-7468-3077-be40-00a5853c9a48
跟我学Shiro
浏览量:5860604
Group-logo
跟我学Nginx+Lua开...
浏览量:702885
5041f67a-12b2-30ba-814d-b55f466529d5
亿级流量网站架构核心技术
浏览量:785755
社区版块
存档分类
最新评论

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

阅读更多

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

 

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

 

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

 

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

 

 

16
0
分享到:
评论
9 楼 石頭剪刀b 2015-11-23  
不错.已经关注.
8 楼 qxpidt 2015-07-26  
这个工程,我怎么跑不起来呢,
始终不知道是哪里加载了AppInitializer
7 楼 suansuaner 2014-07-13  
你好,按照这个做访问的时候
http://localhost:8080/study_foo1/user/1
报404
No mapping found for HTTP request with URI [/study_foo1/user/1] in DispatcherServlet with name 'dispatcherServlet'

这个是什么原因啊?
6 楼 jinnianshilongnian 2013-12-27  
cremains 写道
挺好的。顶一个。

5 楼 cremains 2013-12-27  
挺好的。顶一个。
4 楼 jinnianshilongnian 2013-12-27  
hngmduyi 写道
还在吧?这里有个springmvc rest的问题,http://www.oschina.net/question/99204_139192,请帮忙解答一下。

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="alwaysUseFullPath" value="true"></property> 
    </bean>
3 楼 jinnianshilongnian 2013-12-27  
keer2345 写道
紧跟开涛兄弟的步伐

2 楼 keer2345 2013-12-27  
紧跟开涛兄弟的步伐
1 楼 hngmduyi 2013-12-27  
还在吧?这里有个springmvc rest的问题,http://www.oschina.net/question/99204_139192,请帮忙解答一下。

相关推荐

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

    **Spring Boot概述** Spring Boot是由...总结来说,Spring Boot通过简化配置和集成Spring MVC,使得我们能在短短的几分钟内构建出一个RESTful Web服务。这个服务可以作为一个基础,进一步扩展成复杂的应用系统。

    Spring3MVC-REST-HelloWorld 实例简单代码

    Spring3MVC-REST-HelloWorld 是一个基础的示例,用于展示如何在Spring框架的MVC模块中实现RESTful Web服务。这个实例是初学者理解Spring MVC与REST结合使用的理想起点。REST(Representational State Transfer)是一...

    使用Spring MVC创建REST服务简单例子

    在IT行业中,Spring MVC是一个广泛使用的Java框架,用于构建Web应用程序,特别是对于处理HTTP请求和响应。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,它基于HTTP协议,实现了...

    精通Spring_Web_MVC优秀框架.pdf

    ### Spring Web MVC 框架核心知识点解析 #### 一、Spring Web MVC 概述 - **Spring Web MVC** 是...通过上述内容的学习,可以全面掌握Spring Web MVC框架的核心开发知识,为构建高质量的Web应用程序打下坚实的基础。

    spring3.0 MVC 中文教程

    Spring MVC是Spring框架的核心组成部分,专为构建高性能、模块化的Web应用程序而设计。其主要目标是提供一个灵活的架构,允许开发者以高度自定义的方式组织应用的各个逻辑和功能。Spring MVC的灵活性使得它可以轻松...

    Json website HelloWorld

    【标题】"Json website HelloWorld" 是一个以JSON数据格式为基础,使用Spring REST框架构建的简单Web应用程序示例。这个项目的核心目标是展示如何通过HTTP请求处理JSON数据,并以JSON响应返回,实现“Hello, World!...

    spring3.0 mvc使用入门,含具体例子

    Spring 3.0 MVC 是一个强大的、基于 Java 的框架,用于构建可维护和可扩展的 web 应用程序。在这个版本中,Spring 引入了 REST(Representational State Transfer)风格的编程,使得开发者可以更方便地使用注解来...

    使用-Spring-3-来创建-RESTful-Web-Services

    2. 无缝整合到 Spring 框架:Spring 3 的 REST 支持被无缝整合到 MVC 层中,可以很容易地应用到使用 Spring 构建的应用中。 3. 支持多种 MIME 类型表示:Spring 3 的 REST 支持可以支持多种 MIME 类型表示,例如 XML...

    基于webflux的helloworld的demo

    在本文中,我们将深入探讨基于WebFlux的“HelloWorld”示例,这是一个使用Java和Spring框架构建的响应式Web应用程序。WebFlux是Spring Framework 5中引入的一个新特性,它提供了非阻塞和反应式的Web编程模型,旨在...

    2_构建一个简单的spring-boot的RESTful Web Service项目.zip

    选择"Web"作为起步依赖,因为它包含了Spring Web MVC,这是构建RESTful服务的关键组件。 项目生成后,主要的结构会包括`src/main/java`和`src/main/resources`目录。在`src/main/java`下,你会看到一个主应用类,...

    spring4-mvc-docker-hello-world

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

    SpringMVC HelloWorld Restfull 项目

    在本项目中,“HelloWorld Restfull”意味着我们将构建一个基础的示例应用,它不仅会展示如何设置和运行 SpringMVC 项目,还会涉及到 RESTful 风格的 API 设计。 1. **SpringMVC 概述** - MVC 模式:将应用程序...

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

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

    史上最简单的spring boot程序

    Java是编程语言,Spring Boot是构建在这个语言上的框架,而“helloworld”则暗示了这是一个基础的教学示例,用来展示如何使用Spring Boot来开发简单的Java应用。 至于压缩包中的文件“helloworld-1”,根据命名习惯...

    hello-world-rest:Springboot Hello World REST服务

    "hello-world-rest:Springboot Hello World REST服务"是一个典型的入门级项目,它展示了如何使用Spring Boot创建一个简单的RESTful Web服务。REST(Representational State Transfer)是一种架构风格,常用于构建Web...

    springmvc-restful

    在IT行业中,Spring MVC是一个广泛使用的Java Web框架,它提供了构建高效、灵活和模块化的Web应用程序的能力。在处理RESTful API时,Spring MVC扮演着核心角色。本篇将深入探讨"springmvc-restful"主题,特别是关于...

    spring 小项目

    在这个"spring 小项目"中,你可能正在经历从零开始构建一个基于Spring Boot的应用程序的过程,包括设置基础环境、编写 HelloWorld 示例以及解决遇到的小问题。 首先,让我们深入了解一下Spring Boot的核心特点: 1...

    使用SpringBoot整合jersey 实现Restful web service.同时整合springmvc。

    在本文中,我们将深入探讨如何使用SpringBoot框架与Jersey集成来实现RESTful Web服务,并同时整合Spring MVC。SpringBoot以其简洁的配置和快速的开发能力受到广大开发者的喜爱,而Jersey作为JAX-RS规范的实现,是...

    Springboot_Tutorial:使用Spring创建“ Hello World” RESTful Web服务的教程

    在本教程中,我们将深入探讨如何使用Spring Boot创建一个简单的"Hello World" RESTful Web服务。Spring Boot是Java生态系统中的一个流行框架,它简化了设置和配置过程,使得开发人员可以快速启动和运行应用程序。 ...

    sprint rest例子

    Spring REST 是Spring框架的一部分,它提供了构建RESTful Web服务的能力。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,能够使客户端和服务器之间的交互变得更加...

Global site tag (gtag.js) - Google Analytics