Skip to content
久久日记本
曾经年少爱追梦,一心只想往前飞
  • 首页
  • 博客
    • 博客历史
    • 主题
    • 个人文集
  • 关于
    • 正在读的书
    • 作品归档
    • 2018作品归档
    • 联系我
  • 友情链接
  • 留言板
❄
❅
❆
❄
❅
❆
❄
❅
❆
❄
Java

使用Spring MVC创建Restful API

Posted on 2017年11月9日 by 九九 / 3974 Views

使用Spring MVC创建Restful API

目录

最近刚好把一个前端模块写完,Angular1.5 component+TypeScript,比较简单,花了一个spring的三天做完,又遇到了身体上的不适,就索性看起java来。

正好之前改过java代码,一不做,二不休,直接撸起spring mvc,尝试写一个类似于.NET MVC那样的简单的api来。

从零开始^_^, 遇到一些配置上的坑,记录一下以供瞻仰。

多图超长预警…当然没上上篇博文那个AngularJS1实战那么长。。。

注意,我这里的是 Win7x64 环境。

  • 1.安装IntelliJ IDEA

  • 2.创建基于Spring MVC的项目

  • 3.配置tomcat本地服务器

  • 4.使用模板

  • 5.运行

  • 6.定义model和controller

  • 7.406错误

  • 8.配置mvc-dispatcher-servlet.xml

  • 9.spring mvc4关于pom.xml配置

  • 10.spring mvc3关于pom.xml配置

  • 11.tomcat配置

  • 12.参考资料

1.安装IntelliJ IDEA

出门左转,额,不,访问 官网 ,如果不会安装,请自己普及知识。

社区版似乎不带tomcat,当然可以自己下,然后配置到环境变量即可。我选择了企业版,试用30天,本来没打算会的。

2.创建基于Spring MVC的项目

File > New > Projec 在新开的选择New Project中选择项目模板:

选择Spring > Spring MVC

选择Spring MVC 截图

Next 不需要模板

是否需要模板 截图

Next 输入你要命名的项目名称和路径

Finish 等库下载完成

3.配置tomcat本地服务器

企业版的IDEA带了tomcat,当然你依然可以下载一个tomcat到某个文件夹设置一下。

edit configurations 截图

新建本地tomcat配置

+ 截图

可以自己命名改端口:

config 截图

切换到Deployment tab ,重点是这里的配置

选择 Artifact

config Deployment tab 截图

可以看到部署是打war包了。

config Deployment tab 截图

Apply > OK

点击 |> 开始运行刚才创建的demo

run 截图

可以看到状态栏目在make包,然而在报错。你需要加代码来完成了。

4.使用模板

在第二步创建基于Spring MVC的项目,假设我们使用模板,看下面截图:

使用模板 截图

Next下一步, 发现tomcat已经被配置好了,这样就不用浪费时间配置tomcat了。

配置 截图

5.运行

点击 |> run项目

运行 截图

demo已经打开了 http://localhost:8080/ ,你可以通过修改tomcat配置来指定端口,

hello word 截图

6.定义model和controller

好了,我们不用管自带的hello world页面了,我们要的效果,请求某接口,返回json数据。

在 com.springapp.mvc 下创建controller和model 文件夹,idea不能创建,就到项目所在的文件夹创建,实际这个路径是 SpringMVCDemo\src\main\java\com\springapp\mvc

创建文件夹 截图

在对应的文件夹中创建controller文件和model文件

blog

我们定义一个People类的model层,有name,age和children是它们的属性和内部方法(这一点实际上就是C#三层架构的model层)

People.java

package com.springapp.mvc.model;

/**
 * Created by flyher on 2017/11/9.
 */
public class People {
    String name;
    Integer age;
    String children[];

    /**
     * get
     * @return
     */
    public String getName(){
        return name;
    }
    public Integer getAge(){
        return age;
    }
    public String[] getChildren(){
        return children;
    }

    /**
     * set
     */
    public void setName(String name){
        this.name=name;
    }
    public void setAge(Integer age){
        this.age=age;
    }
    public void setChildren(String[] children){
        this.children=children;
    }
}

定义对应的controller层,引入model层(类比C#的引用和using命名空间):

PeopleController.java

package com.springapp.mvc.controller;

import org.springframework.stereotype.Controller;
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.ResponseBody;
import com.springapp.mvc.model.People;

/**
 * Created by flyher on 2017/11/9.
 */

@Controller
@RequestMapping("/people")  //路由
public class PeopleController {
    @RequestMapping(value = "{name}",method = RequestMethod.GET)
    public @ResponseBody
    com.springapp.mvc.model.People getPeople(@PathVariable String name){
        com.springapp.mvc.model.People people=new com.springapp.mvc.model.People();
        people.setName(name);
        people.setAge(99);
        people.setChildren(new String[]{"lucy","jack"});
        return people;
    }
}

blog

7.406错误

启动,访问 http://localhost:8080/people/test ,报406错。

blog

关于这个406错误,网上有各种说法,什么 get/set,我们这里类已经有,还有….百度搜出来的千篇一律的答案,抄来抄去。

8.配置mvc-dispatcher-servlet.xml

我们先不管上面的问题,先来修改一下需要的配置 SpringMVCDemo\src\main\webapp\WEB-INF目录下的mvc-dispatcher-servlet.xml.

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        ">

    <context:component-scan base-package="com.springapp.mvc.controller"/>

    <!--<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">-->
        <!--<property name="prefix" value="/WEB-INF/pages/"/>-->
        <!--<property name="suffix" value=".jsp"/>-->
    <!--</bean>-->

    <!--提示no bound 可以 ctrl+enter解决-->
    <mvc:annotation-driven />

</beans>
9.spring mvc4关于pom.xml配置

截止到当前项目中,最新版本的是spring version是4.1.1,

    <properties>
        <spring.version>4.1.1.RELEASE</spring.version>
        <jackson.version>2.8.5</jackson.version>
    </properties>

添加与spring mvc4匹配的转换json的包:

        <!--4 Jackson JSON Mapper -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>${jackson.version}</version>
        </dependency>

完成后点击 |> run,访问:http://localhost:8080/people/test,我们可以看到不再是406报错,而是返回的json对象。

返回json 截图

可见,406错误在这里是配置错误造成。

10.spring mvc3关于pom.xml配置

当然,如果你在这里使用的是spring mvc3,那么这儿的配置就要改改,用下面的配置替换上一步的:

    <properties>
        <spring.version>3.2.2.RELEASE</spring.version>
        <jackson.version>1.9.10</jackson.version>
    </properties>

添加与spring mvc3匹配的转换json的包:

        <!--3 Jackson JSON Mapper -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>${jackson.version}</version>
        </dependency>

11.tomcat配置

tomcat官网下载zip包或者按照文件,如果是安装文件,安装后会自动被添加到了环境变量,如果是下载的,解压缩包,然后在系统环境PATH变量中添加。

可以在Edit Configurations添加…

12.参考资料

本节源代码地址:SpringMVCDemo

spring mvc实现Restful返回json格式数据

Restful风格API接口开发springMVC篇

Getter & Setter: 使用还是废弃

Spring MVC 4 – 返回JSON

本文更新历史:

2019-11-14: 修改链接错误,文字错误

Java, MVC, Spring MVC
九九
过去的我们,现在的自己,往事,终会随风而逝。 View all posts by 九九 →

Post navigation

Older post
找回压缩包密码
Newer post
react-rative开发安卓应用配置实战

标签云

2019ncov Android ASP.NET C# C/C++ CSS Div DX11 flask front-end GAE Git Java JJProject JS Life MSSQL MVC OpenSource Oracle Python React React-Native Software Tools Vue Webpack Website Window WP7 乱记 十年旧梦 天气 宝宝成长日记 小说 工作 情感 故障 散文 日记 游戏开发 网新实训笔记 花落梧桐 诗间集 转载

时光机

  • 2022年12月
  • 2022年4月
  • 2022年3月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年5月
  • 2019年12月
  • 2019年10月
  • 2019年9月
  • 2019年6月
  • 2019年5月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年3月
  • 2018年2月
  • 2018年1月
  • 2017年11月
  • 2017年10月
  • 2017年9月
  • 2017年7月
  • 2017年3月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年10月
  • 2016年7月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年10月
  • 2015年9月
  • 2015年8月
  • 2015年7月
  • 2015年4月
  • 2015年3月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年11月
  • 2014年10月
  • 2014年9月
  • 2014年8月
  • 2014年7月
  • 2014年6月
  • 2014年5月
  • 2014年4月
  • 2014年3月
  • 2014年2月
  • 2014年1月
  • 2013年12月
  • 2013年11月
  • 2013年10月
  • 2013年9月
  • 2013年8月
  • 2013年7月
  • 2013年6月
  • 2013年5月
  • 2013年4月
  • 2013年3月
  • 2013年1月
  • 2012年11月
  • 2012年10月
  • 2012年9月
  • 2012年8月
  • 2012年7月
  • 2012年6月
  • 2012年5月
  • 2012年4月
  • 2012年3月
  • 2012年2月
  • 2012年1月
  • 2011年12月
  • 2011年11月
  • 2011年10月
  • 2011年9月
  • 2011年8月
  • 2011年6月
  • 2011年5月
  • 2011年4月
  • 2011年3月
  • 2011年2月
  • 2010年12月
  • 2010年11月
  • 2010年10月
  • 2010年9月
  • 2010年8月
  • 2010年6月
  • 2010年5月
  • 2010年2月
  • 2010年1月
  • 2009年12月
  • 2009年11月
  • 2009年10月
  • 2009年9月
  • 2009年8月
  • 2009年7月
  • 2009年6月
  • 2009年5月
  • 2009年4月
  • 2009年3月
  • 2009年2月
  • 2009年1月
  • 2008年8月
  • 2008年6月
  • 2008年5月
  • 2008年4月
  • 2008年2月
  • 2007年11月
  • 2007年8月
  • 2007年6月
  • 2007年5月
  • 2007年4月
  • 2007年3月
  • 2007年2月
  • 2007年1月
  • 2006年10月
  • 2006年8月
© 2006 - 2023 久久日记本
Powered by WordPress | Theme: Graphy for 99diary