Springboot中控制器的使用

@RestController的使用,生成rest API

案例1

步骤:
(1)在model层,创建一个Result类,封装code(状态识别码)、msg(提示信息)、data(核心数据)。

public class Result<T> {
    private Integer code;  
    private String msg;    
    private T data; 
    //对应的getter、setter
    ......
}

(2)在model层,创建一个User实体类。

public class User {
    private Integer id;  
    private String username;    
    private String password;    
    //对应的getter、setter
    ......
}

(3)创建控制器UserController(相当于入口main)。

@RestController
public class UserController {
    @RequestMapping("/")
    public String index(){return "Hello World!";    }    //返回普通字符串
    @RequestMapping("/user")
    public Result<User> user(){     //返回json字符串
        Result<User> result=new Result<>();
        User user=new User();
        user.setId(1);
        user.setUsername("xxx");
        user.setPassword("123");
        result.setCode(1);
        result.setMsg("succuss");
        result.setData(user);
        return result;    
    }
    @RequestMapping("/users")
    public Result<List<User>> users(){    //返回带数组结构的json字符串
        Result<List<User>> result=new Result<>();
        List<User> userList=new ArrayList<>();
        User user=new User();
        user.setId(1);
        user.setUsername("xxx");
        user.setPassword("123");
        userList.add(user);
        Useruser2=newUser();
        user2.setId(1);
        user2.setUsername("yyy");
        user2.setPassword("123");
        userList.add(user2);
        result.setCode(1);
        result.setMsg("succuss");
        result.setData(userList);
        returnresult;    
    }
}

使用@Controller直接跳转html页面,配合@ResponseBody实现rest API

案例2

(1)在resources/static路径下创建一个静态页面view1.html。
(2)在application.properties中添加静态资源映射。

#服务端口号
server.port=8888//自己设置
#静态资源映射
spring.resources.static-locations=classpath:/static/
spring.mvc.static-path-pattern=/static/**

(3)使用springmvc自带的@Controller直接跳转html页面(不带模板引擎的),配合@ResponseBody实现rest API。

@Controller
public class ViewAndRestController {
    @RequestMapping("/myview")
    public String myview(){    //跳转页面
        System.out.println("myview");
        return"static/view1.html";    
    }
    @RequestMapping("/user2")
    @ResponseBody
    public Result<User> user(){     //输出json串
        Result<User> result=new Result<>();
        User user=new User();
        user.setId(1);
        user.setUsername("xxx");
        user.setPassword("123");
        result.setCode(1);
        result.setMsg("success");
        result.setData(user);
        return result;    
    }
}

(4)此时配置的静态文件映射不光只针对html页面,还有对图片、css、js等文件的映射。后面将静态文件放置到这个已经配置好的static文件夹下即可。当然也可以自行创建一个文件夹然后再来进行配置。

总结

1、@RestController是对class进行注解,该注解下的所有被@RequestMapping注解的方法最终输出结果都为字符串,不会跳转界面。
2、用@Controller注解的class,若将@RequestMapping注解的方法的返回值类型设置为String,则可以进行界面跳转。案例中是直接跳转html静态页面,所以需要配置静态资源访问映射。
3、在@Controller注解的class中,想输出字符串,可以在@RequestMapping注解的方法上再添加一个@ResponseBody注解。
4、如果在跳转界面的方法上加上了@ResponseBody注解,则不能跳转界面了,而是输出的字符串。
5、Json.cn查看json

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容