如何运行springmvc rest

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何运行springmvc 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应用就搭建完了,接下来再完善即可。
参考技术A 使用springMVC也可以代替struts2,当然只是代替业务分发的功能,struts2的一些其他功能它是没有的,不然要struts2有什么用。
下面我用springMVC代替struts2去整合hibernate实现简单的员工查询功能。
使用springMVC有两个配置文件需要配置,一个是applicationContext.xml、另一个是web.xml,在applicationContext.xml里面配置事务管理器以及属性注入等。web.xml里面要添加一个springMVC的servlet的注册和映射(DispatcherServlet),这个servlet是springMVC的核心控制器,专门处理各个请求的,然后根据相应的参数分发给相应的业务控制器处理,业务控制器处理完之后就会返回一字符串给核心控制器,核心控制器再根据该字符串重定向或者转发到相应的页面。还必须给该核心控制器建一个配置文件,其形式为:核心控制器servlet名-servlet.xml,如springMVC-servlet.xml.该配置文件放在WEB-INF下面。

Spring mvc HandlerInterceptor 怎样获取 rest 参数值

参考技术A 参数在request对象中就可以取到: String username = request.getParameter("username"); String password = request.getParameter("password");

以上是关于如何运行springmvc rest的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC概述+SpringMVC运行流程+SpringMVC搭建

不得不看的SpringMVC篇!!!(概述+SpringMVC运行流程+SpringMVC搭建)

如何让 Intellij 中的 Spring MVC 运行 HTML

在运行springmvc项目时报了一个错 请求解答

如何让spring mvc web应用启动时就执行特定处理

深入底层,仿SpringMVC自己写框架