-
客户端发HTTP请求,由DispatcherServlet来处理请求
-
根据请求路径查找对应的处理器(处理器是:Controller里的方法)
-
DispatcherServlet让HandlerMapping根据路径查找对应的方法
-
把找到的方法返回给DispatcherServlet
-
-
调用处理器方法
-
DispatcherServlet让HandlerAdapter来调用目标处理器方法,方法返回视图路径和数据
-
HandlerAdapter把方法返回值封装成ModelAndView,再返回给DispatcherServlet
-
-
查找视图页面
-
DispatcherServlet让ViewResolver来根据视图路径,查找真实的视图页面
-
返回结果视图对象View(页面里还是
${}
等含有EL表达式的内容,数据还没有填充)
-
-
渲染视图:把数据填充到页面里
-
最终把渲染的结果返回给客户端
-
-
客户端得到HTTP响应
SpringMVC的三大组件
-
HandlerMapping:处理器的映射器
-
用于:根据请求路径,查找处理器(即:查询Controller里的方法)
-
-
HandlerAdapter:处理器的适配器
-
用于:调用目标处理器方法,封装结果
-
-
ViewResolver:视图解析器
-
用于:根据视图路径,查找真实的视图页面
-
需要我们做的事情有
1) 物理视图的配置方式
@RequestMapping("/quickstart")
public String quickstart(){
System.out.println("quickstart......");
return "/success.jsp";
}
2) 逻辑视图的配置方式
@Controller
public class Demo01QuickStartController {
@RequestMapping("/quickstart")
public String quickstart(){
System.out.println("quickstart......");
return "success";
}
}
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>
-
编写代码:
-
编写
Handler
控制器,即web层的Controller
-
编写
View
视图,即页面
-
-
提供配置:只要配置一次就可以了
-
提供
springmvc.xml
配置文件,用于:-
开启组件扫描:
<context:component-scan ... />
-
其它配置
-
-
修改web.xml配置文件
-
用于配置
DispatcherServlet
核心控制器,并读取Spring配置文件 -
其它配置
-
-
-
视图解析器配置
-
SpringMVC把显示层的内容称为视图,例如JSP页面就是视图。在
Controller
的方法中,返回的字符串就是跳转的视图路径 -
视图的路径有两种写法:
-
物理视图:
/success.jsp
,即:视图的真实路径(完整路径)-
直观,但是写起来麻烦
-
-
逻辑视图:
success
,需要配合视图解析器,才能得到真实路径-
不直观,但是写起来简单
-
-
-
在
Controller
的方法中,直接返回物理视图路径。 -
不需要再在xml里配置视图解析器、前缀和后缀
-
在
springmvc.xml
中增加以下内容: -
在
Controller
中修改代码,简化方法返回值 -
由视图解析器,帮我们把
prefix + "success" + suffix
,拼接成物理视图/success.jsp