springMVC的工作流程
- Spring MVC 框架主要由 前端控制器、处理器映射器、控制器、视图解析器、视图组成
客户端发送http请求,首先提交到前端控制器。 - 前端控制器根据处理器映射器,找到请求对应的控制器,将请求交给对应的控制器。
- 控制器完成具体的业务逻辑后,会返回ModelAndView。
- 然后前端控制器根据视图解析器,找到 对应的视图进行渲染。
- 最终把结果返回给前端。
- http请求—前端控制器—请求到处理器映射器—控制器control—返回modelandview—前端控制器—视图解析器—最终视图
springmvc相关注解
-
@Controller注解 将该类作为控制层的实例进行注入
-
@RequestBody注解 作用:如果作用在方法上,就表示该方法的返回结果是直接按写入到Http responsebody中
-
@RequsetMappring注解 该注解的作用就是用来处理请求地址映射的
-
@RequestMapping(value="/hello",method = RequestMethod.GET)
-
@RequestParam注解 作用:是将请求参数绑定到你的控制器的方法参数上
//required为true表示该参数必须要传否则报错,为false则不传默认为null
public String test(@RequestParam(required=true) String name){
String str = "name:"+name;
return str;
}
- @PathVaribale注解 作用:该注解是用于绑定url中的占位符 /user/{id}
@RequestMapping(value="/user/{id}",method = RequestMethod.GET)
public String getLogin(@PathVariable("userId") String userId,){
System.out.println("userid:" + userId);
return "";
}
- @requestBody注解 通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上
public void login(@requestBody User user){
System.out.println(userName+" :"+pwd);
}
springmvc获取请求数据的方法
- 可以直接使用原生servletAPI。
- 直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。
public String test(String username,String password) {
System.out.println("username is:"+username);
System.out.println("password is:"+password);
return "";
}
- 通过一个bean来接收,post方式和get方式都可以。
//?username=tom&age=18
public void test(User user) throws IOException {
System.out.println(user); //User{username='tom', age=18}
}
- 通过@PathVariable获取路径中的参数
@RequestMapping(value="/user/{id}",method = RequestMethod.GET)
public String getLogin(@PathVariable("userId") String userId,){
System.out.println("userid:" + userId);
return "";
}
- 使用@ModelAttribute注解获取POST请求的FORM表单数据
public String addUser5(@ModelAttribute("user") UserModel user) {
System.out.println("username is:"+user.getUsername());
System.out.println("password is:"+user.getPassword());
return "";
}
- 用注解@RequestParam绑定请求参数到方法入参
//required为true表示该参数必须要传否则报错,为false则不传默认为null
public String test(@RequestParam(required=true) String name){
String str = "name:"+name;
return str;
}