3分钟快速构建SpringMVC Restful风格API

本文介绍如何使用Maven和Jetty快速搭建基于SpringMVC的REST风格API,包括项目配置、实体类定义及控制器编写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里介绍如何快速通过maven构建基于springmvc的rest风格api。

1、构建maven项目,这里没有必要构建web项目,可以构建一个非web的maven项目,配置上jetty的maven插件依赖,直接通过jetty插件来运行,加入spring-context-support,spring-webmvc,jackson-databind,javax.servlet-api,slf4j-log4j12(可选)依赖。

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
    </dependency>
    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-context-support</artifactId>
       <version>${spring.version}</version>
    </dependency>
    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-webmvc</artifactId>
       <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.8.6</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.4</version>
    </dependency>

在build节点中,配置jetty插件依赖:

<build>
      <finalName>springmvc</finalName>
      <plugins>
           <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>8.1.16.v20140903</version>
                <configuration>
                      <reload>manual</reload>
                      <webAppConfig>
                          <contextPath>/${project.build.finalName}</contextPath>
                      </webAppConfig>
                      <connectors>
                          <connector implementation="org.eclipse.jetty.server.nio
                           .SelectChannelConnector">
                              <port>8080</port>
                          </connector>
                      </connectors>
                </configuration>
           </plugin>
      </plugins>
  </build>

配置好了,保存的时候,会下载很多jar包,网络正常情况下,不出一分钟。

2、编写AppConfig.java,该类的作用类似于我们在web项目中配置springmvc-servlet.xml 指定我们需要开启mvc注解,扫描controller控制器所在文件夹。

package com.xxx.web;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@Configuration
@EnableWebMvc
@ComponentScan
public class AppConfig {}

AppInitializer.java,该类的作用相当于webapp中的web.xml文件,配置org.springframework.web.servlet.DispatchServlet。

package com.xxx.web;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration.Dynamic;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
public class AppInitializer implements WebApplicationInitializer {
	private static final Logger log = LoggerFactory.getLogger(AppInitializer.class);
	@Override
	public void onStartup(ServletContext context) throws ServletException {
		AnnotationConfigWebApplicationContext applicationContext = 
                            new AnnotationConfigWebApplicationContext();
		applicationContext.register(AppConfig.class);	
		DispatcherServlet dispatcherServlet = new DispatcherServlet(applicationContext);	
		Dynamic addServlet = context.addServlet("dispatcherServlet", dispatcherServlet);
		addServlet.addMapping("/");
		log.info("webapp initialized ok.");
	}
}

编写一个实体类User,用来做数据传输。

package com.xxx.web.domain;
import java.io.Serializable;
public class User implements Serializable {
	private static final long serialVersionUID = 1L;
	private Integer id;
	private String username;
	private boolean status=Boolean.TRUE;
	...省略get,set,toString,hashCode,equals方法
}

User类中主要就三个属性id,name,status。

编写主要的UserController.java

package com.xxx.web.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.RestController;
import com.xxx.web.domain.User;

@RestController
@RequestMapping("/user")
public class UserController {
	
	@RequestMapping(value="/{id}",method=RequestMethod.GET)
	public User get(@PathVariable("id") Integer id){
		User user = new User(id,"springmvc-restful");
		return user;
	}

}

就这样,所有的代码就编写完毕,如果编译没有报错的话,我们可以进行测试了。

3、在命令行下进入项目所在目录,输入mvn jetty:run开始运行。

4、打开浏览器,在地址栏中输入地址:http://localhost:8080/springmvc/user/1,即可看到返回的json数据。

5、如果启动jetty没有问题,访问http://localhost:8080/springmvc/user/1出现404 :No mapping found for HTTP request with URI [/springmvc/user/1] in dispatcherServlet with name 'dispatcherServlet'的问题,检查一下AppConfig.java所在包是否在controller包的外面,如果不在controller包的外面,需要在@ComponentScan注解上加上@ComponentScan(basePackages={"com.xxx.web.controller"})这样的配置,指向controller文件夹所在的位置。

最后,启动jetty,发现我们所需要访问的uri出现在启动日志中,如下图所示,说明我们的配置生效了。

至此,基于springmvc构建的Rest风格应用就完成了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值