springMVC学习--2 常用注解

@Controller:注解控制器,注解在类上。
@RestController:注解控制器,该控制器的方法自动包含@ResponseBody注解,注解到类上,主要用于无视图的数据交换。
@RequestMapping:注解映射请求到方法,注解到方法上。
@ResponseBody:注解到方法的返回值或方法上,表明返回的不是逻辑视图,而是数据,即不会被ViewResolver解析。
@PathVariable:接受路径参数,注解在方法的参数前。

示例:

1. 依赖

在springMVC学习–1中pom.xml的基础上,添加以下依赖:

<!-- 对json和xml的支持 -->
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>2.5.3</version>
    </dependency>

该组件包括了对json和xml格式的支持,如果仅需要json格式支持,使用如下依赖:

 <!-- 对json和xml的支持 -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.5.3</version>
    </dependency>

2. 控制器

该控制器中演示了映射路径,接受参数、路径参数、接受参数到对象(jackson支持),以及多路径映射方法的使用。
首先创建一个类,jackson可将该类实例化的对象与json或xml之间进行转换。

package com.object;

/**此类用于演示获取request的参数,和返回对象到response。
 * @author apple
 *
 */
public class DemoObj {
    private Long id;
    private String name;

    public DemoObj() { //jackson对对象和json进行转换必须用到此空的构造函数
        super();
    }

    public DemoObj(Long id, String name) {
        this.id = id;
        this.name = name;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

控制器:

package com.controller;

import javax.servlet.http.HttpServletRequest;

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.ResponseBody;

import com.object.DemoObj;

@Controller
@RequestMapping("/anno")  // path mapping to this class is  "/anno"
public class DemoAnnoController {

    @RequestMapping(produces="text/plain;charset=UTF-8")
    public @ResponseBody String index(HttpServletRequest request) {
        return "url: " + request.getRequestURL() + " can access"; 
    }

    /** 演示接受路径参数
     * @param str
     * @param request
     * @return
     */
    @RequestMapping(value="/pathvar/{str}", produces=
            "text/plain;charset=UTF-8")
    public @ResponseBody String demoPathVar(@PathVariable String str, 
            HttpServletRequest request) {
        return "url: " + request.getRequestURL() + " can access, str: " + str; 
    }

    /** 演示获取参数
     * @param id
     * @param request
     * @return
     */
    @RequestMapping(value="/requestParam", produces=
            "text/plain;charset=UTF-8") 
    public @ResponseBody String  passRequestParam(Long id, 
            HttpServletRequest request) {
        return "url: " + request.getRequestURL() + " can access, id: "  + id;
    }

    /** 演示解释接受参数到对象
     * @param obj
     * @param request
     * @return
     */
    @RequestMapping(value="/obj", produces=
            "application/json;charset=UTF-8") 
    @ResponseBody
    public String passObject(DemoObj obj, HttpServletRequest request) {
        return "url: " + request.getRequestURL() 
                            + " can access, obj id: " + obj.getId() + " obj name: " + obj.getName();
    }

    /** 演示映射不同路径到相同方法
     * @param request
     * @return
     */
    @RequestMapping(value={"/name1", "/name2"}, produces=
            "text/plain;charset=UTF-8")
    @ResponseBody
    public String remove(HttpServletRequest request) {
        return "url: " + request.getRequestURL() + " can access"; 
    }
}

3. RestController

package com.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.object.DemoObj;

/**演示RestController注解的控制器,该注解包含@ResponseBody,
 * 因此无需再在方法上再注解@ResponseBody
 * @author apple
 *
 */
@RestController
@RequestMapping(value = "/rest")
public class DemoRestController {

    /**演示用jackson将对象转换成json
     * @param obj
     * @return
     */
    @RequestMapping(value = "/getjson", produces = "application/json;charset=UTF-8")
    public DemoObj getjson(DemoObj obj) {
        return new DemoObj(obj.getId() + 1, obj.getName() + "yy");
    }

    /**演示用jackson将对象转换成xml
     * @param obj
     * @return
     */
    @RequestMapping(value = "/getxml", produces = "application/xml;charset=UTF-8")
    public DemoObj getxml(DemoObj obj) {
        return new DemoObj(obj.getId() + 1, obj.getName() + "yy");
    }
}

猜你喜欢

转载自blog.csdn.net/xiewz1112/article/details/80544137