1、客户端点击链接会发送http://localhost:8080/SpringMVC_1_helloWord/hello 请求
2、来到tomcat服务器
3、SpringMVC的前端控制器收到所有请求
4、看请求地址和和@RequestMapping注解哪个匹配,来找到到底使用那个类的哪个方法来处理请求
5、前端控制器找到了目标处理器类和目标方法,直接利用反射执行目标方法
6、目标方法执行完成以后会有一个返回值,SpringMVC认为这返回值,就是要去的页面地址
7、拿到方法返回值后;用视图解析器进行拼串得到完整的页面地址
8、拿到页面地址后,前端控制器帮我们请求转发到页面
- 开发中大家需要注意的问题,总结如下:
① HelloWorld请求流程图解:
② 一般请求的映射路径名称和处理请求的方法名称最好一致(实质上方法名称任意)
@RequestMapping(value="/helloworld",method=RequestMethod.GET)
public String helloworld(){ //方法名和映射名最好一致!!!
//public String abc123(){
System.out.println("hello,world");
return "success";
}
④处理请求方式有哪几种
@RequestMapping(value="/helloworld",method=RequestMethod.XXX)
public enum RequestMethod {//重点注意:GET、POST
GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
}
⑤@RequestMapping可以应用在什么地方
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {…}
⑦url-pattern中的/和/的区别
/ 和/都是拦截所有请求;
/:会拦截所有请求,但是不会拦截 .jsp;保证jsp访问正常;
/:的范围更大;会拦截 * .jsp;一旦拦截jsp页面就不能正常显示
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
流程图分析:
基本步骤:
客户端请求提交到DispatcherServlet
由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
DispatcherServlet将请求提交到Controller(也称为Handler)
Controller调用业务逻辑处理后,返回ModelAndView
DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图