Springboot中控制器的使用

@RestController的使用,生成rest API

案例1

步驟:
(1)在model層,創(chuàng)建一個(gè)Result類,封裝code(狀態(tài)識(shí)別碼)、msg(提示信息)、data(核心數(shù)據(jù))。

public class Result<T> {
    private Integer code;  
    private String msg;    
    private T data; 
    //對(duì)應(yīng)的getter、setter
    ......
}

(2)在model層,創(chuàng)建一個(gè)User實(shí)體類。

public class User {
    private Integer id;  
    private String username;    
    private String password;    
    //對(duì)應(yīng)的getter、setter
    ......
}

(3)創(chuàng)建控制器UserController(相當(dāng)于入口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(){    //返回帶數(shù)組結(jié)構(gòu)的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直接跳轉(zhuǎn)html頁面,配合@ResponseBody實(shí)現(xiàn)rest API

案例2

(1)在resources/static路徑下創(chuàng)建一個(gè)靜態(tài)頁面view1.html。
(2)在application.properties中添加靜態(tài)資源映射。

#服務(wù)端口號(hào)
server.port=8888//自己設(shè)置
#靜態(tài)資源映射
spring.resources.static-locations=classpath:/static/
spring.mvc.static-path-pattern=/static/**

(3)使用springmvc自帶的@Controller直接跳轉(zhuǎn)html頁面(不帶模板引擎的),配合@ResponseBody實(shí)現(xiàn)rest API。

@Controller
public class ViewAndRestController {
    @RequestMapping("/myview")
    public String myview(){    //跳轉(zhuǎn)頁面
        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)此時(shí)配置的靜態(tài)文件映射不光只針對(duì)html頁面,還有對(duì)圖片、css、js等文件的映射。后面將靜態(tài)文件放置到這個(gè)已經(jīng)配置好的static文件夾下即可。當(dāng)然也可以自行創(chuàng)建一個(gè)文件夾然后再來進(jìn)行配置。

總結(jié)

1、@RestController是對(duì)class進(jìn)行注解,該注解下的所有被@RequestMapping注解的方法最終輸出結(jié)果都為字符串,不會(huì)跳轉(zhuǎn)界面。
2、用@Controller注解的class,若將@RequestMapping注解的方法的返回值類型設(shè)置為String,則可以進(jìn)行界面跳轉(zhuǎn)。案例中是直接跳轉(zhuǎn)html靜態(tài)頁面,所以需要配置靜態(tài)資源訪問映射。
3、在@Controller注解的class中,想輸出字符串,可以在@RequestMapping注解的方法上再添加一個(gè)@ResponseBody注解。
4、如果在跳轉(zhuǎn)界面的方法上加上了@ResponseBody注解,則不能跳轉(zhuǎn)界面了,而是輸出的字符串。
5、Json.cn查看json

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容