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

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

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


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

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


      springmvc
      
           
                org.mortbay.jetty
                jetty-maven-plugin
                8.1.16.v20140903
                
                      manual
                      
                          /${project.build.finalName}
                      
                      
                          
                              8080
                          
                      
                
           
      
  

配置好了,保存的时候,会下载很多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开始运行。

3分钟快速构建SpringMVC Restful风格API_第1张图片

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出现在启动日志中,如下图所示,说明我们的配置生效了。

3分钟快速构建SpringMVC Restful风格API_第2张图片

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

你可能感兴趣的:(java)