控制器

@RestController注解,相当于@Controller+@ResponseBody两个注的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面 注意@RestController在Spring的4.0版本以后才有

当请求参数username不存在时会有异常发生,可以通过设置属性required=false解决,例如: @RequestParam(value=“username”, required=false)

无@RestController注解的控制器收到POST请求返回JSON

@Controller
@RequestMapping("/examinee")
public class HomeController{
    @Autowired
    XXX xxx;
    @RequestMapping(value = "/login", method = RequestMethod.POST) // 此方法接受的地址为/examinee/login
    public @ResponseBody DataResult login(@RequestBody UserVO userVO){
        try {
            控制业务...
        } catch (Exception e) {
            控制异常情况...
            return 返回异常数据...前端导向异常页面;
          }
        return 返回正常数据...前端导向正常页面;
}

无@RestController注解的控制器收到GET请求返回JSON

@Controller
@RequestMapping("/examinee")
public class HomeController{
    @Autowired
    XXX xxx;
    @RequestMapping(value = "/login", method = RequestMethod.GET) // 此方法接受的地址为/examinee/login
    public @ResponseBody DataResult login(@RequestParam("max") long max,@RequestParam("count") int count){
        try {
            控制业务...
        } catch (Exception e) {
            控制异常情况...
            return 返回异常数据...前端导向异常页面;
          }
        return 返回正常数据...前端导向正常页面;
}

有@RestController注解的控制器收到POST请求返回JSON

@RestController
@RequestMapping("/examinee")
public class HomeController{
    @Autowired
    XXX xxx;
    @RequestMapping(value = "/login", method = RequestMethod.POST) // 此方法接受的地址为/examinee/login
    public DataResult login(@RequestBody UserVO userVO){
        try {
            控制业务...
        } catch (Exception e) {
            控制异常情况...
            return 返回异常数据...前端导向异常页面;
          }
        return 返回正常数据...前端导向正常页面;
}

有@RestController注解的控制器收到GET请求返回JSON

@RestController
@RequestMapping("/examinee")
public class HomeController{
    @Autowired
    XXX xxx;
    @RequestMapping(value = "/login", method = RequestMethod.GET) // 此方法接受的地址为/examinee/login
    public  DataResult login(@RequestParam("max") long max,@RequestParam("count") int count){
        try {
            控制业务...
        } catch (Exception e) {
            控制异常情况...
            return 返回异常数据...前端导向异常页面;
          }
        return 返回正常数据...前端导向正常页面;
}

SpringMVC表单请求参数获取的几种方法

1.通过HttpServletRequest接收,post方式和get方式都可以

@RequestMapping("/addUser2")
    public String addUser2(HttpServletRequest request) {
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        System.out.println("username is:"+username);
        System.out.println("password is:"+password);
        return "demo/index";
    }

2.通过一个bean来接收,post方式和get方式都可以

package demo.model;

public class UserModel {
    
    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    
}


/**
     * 通过一个bean来接收
      * @param user
     * @return
     */
    @RequestMapping("/addUser3")
    public String addUser3(UserModel user) {
        System.out.println("username is:"+user.getUsername());
        System.out.println("password is:"+user.getPassword());
        return "demo/index";
    }

3、直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。

/**
     * 1.直接把表单的参数写在Controller相应的方法的形参中
      * @param username
     * @param password
     * @return
     */
    @RequestMapping("/addUser1")
    public String addUser1(String username,String password) {
        System.out.println("username is:"+username);
        System.out.println("password is:"+password);
        return "demo/index";
    }

你可能感兴趣的:(控制器)