@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";
}