文档章节

SpringFramework4系列之SpringMVC:搭建RestFul-注解加XML版

Garrry
 Garrry
发布于 2015/07/03 15:17
字数 502
阅读 93
收藏 1
  • requirements

    Maven

    JDK 1.7+

    Tomcat 8+

  • Maven

    maven dependency 需要的包 如下:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${project.dependency.spring.core}</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>${project.dependency.javax.servlet}</version>
    <scope>provided</scope>
</dependency>
  • Spring-Config.xml

    需要用到 spring-context 和spring-mvc

    namespace如下:

<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.xsd
       ">

    Spring 的配置文件用到 component-scan 和annotation-driven

    <context:component-scan base-package="com.company"/>  是为了自动将 pojo注册到 spring 的bean 容器中

    <mvc : annotation-driven/> 

        向 spring 容器中注册 DefaultAnnotationHandlerMapping。

        向 spring 容器中注册 AnnotationMethodHandlerAdapter。

        具体参考:Spring MVC 中的基于注解的 Controller

<!-- =============================================== -->
<!--             component Scanning                  -->
<!-- =============================================== -->
<context:component-scan base-package="com.company" />
<mvc:annotation-driven />
  • 定义web.xml

<!-- =============================================== -->
<!--             Context value                    -->
<!-- =============================================== -->
<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:spring-config.xml</param-value>
</context-param>

<!-- =============================================== -->
<!--             Filter for Encoding                 -->
<!-- =============================================== -->
<filter>
   <filter-name>encodingFilter</filter-name>
   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
   <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
   </init-param>
   <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
   </init-param>
</filter>
<filter-mapping>
   <filter-name>encodingFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- =============================================== -->
<!--             Listener                         -->
<!-- =============================================== -->
<listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
   <servlet-name>springMVC</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-config.xml</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
   <servlet-name>springMVC</servlet-name>
   <url-pattern>/*</url-pattern>
</servlet-mapping>
  • 构建restful 类

    @Controller变成了@RestController。@RestControllr是spring 4.x中的新注解,@RestController,表明该类的每个方法返回对象而不是视图。它实际就是@Controller和 @ResponseBody混合使用的简写方法。@ResponseBody的作用是将返回的对象放入响应消息体中

@RestController
public class RestControl {

    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public String testSearch() {
       return "OK"
    }


  • 接收和返回json

    如果需要接收和返回json格式的数据 需要在 spring的xml里面 添加Mapping Jackson View 并添加对应的 dependency

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.2.3</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.12</version>
</dependency>
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
       <property name="defaultViews">
              <list>
                     <!-- ModelAndView里的数据变成JSON -->
                     <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
              </list>
       </property>
</bean>

    在 restful 类中 需要使用注解 @RequestBody  和 定义 cosumes 类型

@RestController
public class RestFulClass {


    @RequestMapping(value = "/test", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    public Response test(@RequestBody Request request) {

        response.setCallType("test");
        response.setStatusCode(200);
        response.setStatusMessage("successfully");
        return response;
    }


© 著作权归作者所有

共有 人打赏支持
Garrry
粉丝 24
博文 46
码字总数 48703
作品 0
浦东
技术主管
私信 提问
SpringFramework4系列之SpringJMS:(四)异步接收消息 2.构建监听器

在Spring中,构建监听器 有三种方式: 实现监听器接口 适配器托管 注解监听器 其中,实现接口和注解监听器 都需要一个监听器容器的支持。 构建实现接口的监听器 编写监听器类并且实现监听器接...

Garrry
2015/07/07
0
2
SpringFramework4系列之SpringJMS:(一)搭建JMS-注解加XML版

Maven dependency maven的dependency用着 隐形的依赖传递性,如果只是用到 JMS这部分功能 引用一下Maven坐标即可 <dependency> <groupId>org.springframework</groupId> <artifactId>spring......

Garrry
2015/07/06
0
0
spring-mvc restful web services

spring可以轻松的集成多种restful风格的web-service,但其实spring-mvc中已经提供了这一支持。 可以根据需要生成xml、json、text等格式。 生成xml依赖于JAXB,主要是@XmlRootElement、@XmlA...

隆回水哥
2015/06/03
0
0
Spring MVC之基于xml配置的web应用构建

更多spring博文参考: http://spring.hhui.top/ 直接用SpringBoot构建web应用可以说非常非常简单了,在使用SpringBoot构建后端服务之前,一直用的是Spring + SpringMVC基于xml的配置方式来玩...

小灰灰Blog
03/17
0
0
Resty 1.1.0-SNAPSHOT 版,极简 restful 框架,快速接入 Spring

Resty从最初开发到现在已经经历了近10个月时间,在github的star数即将进入400,在没有任何推广的情况,目前的情况还是比较可观的,主要感谢关注restful发展的人们。 对于不理解restful的人其...

Dreampie
2015/10/12
3.6K
10

没有更多内容

加载失败,请刷新页面

加载更多

C++ vector和list的区别

1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。 因此能高效的进行随机存取,时间复杂度为o(1); 但因为内存空间是连续的,所以在进行插入和删除操作时,会造...

shzwork
今天
3
0
Spring之invokeBeanFactoryPostProcessors详解

Spring的refresh的invokeBeanFactoryPostProcessors,就是调用所有注册的、原始的BeanFactoryPostProcessor。 相关源码 public static void invokeBeanFactoryPostProcessors(Configu......

cregu
昨天
4
0
ibmcom/db2express-c_docker官方使用文档

(DEPRECIATED) Please check DB2 Developer-C Edition for the replacement. What is IBM DB2 Express-C ? ``IBM DB2 Express-C``` is the no-charge community edition of DB2 server, a si......

BG2KNT
昨天
3
0
Ubuntu 18.04.2 LTS nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic)

平台:Ubuntu 18.04.2 LTS nvidia-docker2 版本:2.0.3 错误描述:在安装nvidia-docker2的时候报dpkg依赖错误 nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic) 先看一下依......

Pulsar-V
昨天
4
0
学习笔记1-goland结构体(struct)

写在前面:若有侵权,请发邮件by.su@qq.com告知。 转载者告知:如果本文被转载,但凡涉及到侵权相关事宜,转载者需负责。请知悉! 本文永久更新地址:https://my.oschina.net/bysu/blog/3036...

不最醉不龟归
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部