SpringMVC基于模型-视图-控制器实现。
它能帮我们构建像Spring框架那样灵活的松耦合的web应用程序。
一.了解Spring MVC的请求过程:
1)请求会带有用户的所有请求内容的信息(请求的URL,表单信息等)发送到我们的前端控制器
DispatcherServlet中。
2)然后前端控制器到处理器映射中查询请求信息中的URL对应那个控制器。
3)然后将请求信息转发到指定的控制器中。
4)控制器会处理信息然后将处理后的信息打包成模型然后将模型信息和视图名发送到前端控制器。
5)前端控制器在视图解析器中找到视图显示路径。
6)将信息发送给具体的视图。
7)然后视图对用户进行响应。
二.学习搭建Spring MVC过程中的知识
在上篇博客中我们实现了SpringMVC的第一个程序,现在我们来解析下完成过程中涉及到的知识点:
1.在web中配置前端控制器。
<servlet>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
从上面看我们知道,这就是配置了一个servlet,但这个servlet对应的作用类不是我们自己写的,而在我们导入的Spring依赖包中。它的映射路径这里设为/表示它对所有请求都响应。
2.配置扫描控制器和视图解析器
<!-- 扫描找到控制层 -->
<context:component-scan base-package="com.yanjiadou.test"></context:component-scan>
<!-- 配置视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
通过这里我们知道Spring通过注解的方式把控制层简化成为了普通的java类。
上面视图解析器的意思是,控制器返回的视图名称将会和WEB-INF/view/视图名称.jsp作为视图显示路径输出。
3.控制器
@Controller
public class TestController {
@RequestMapping(value="hello")
public String hello()
{
System.out.println("Hello world");
return "success";
}
}
注解@Controller将上面的类标注成控制器,其中的hello()方法将会对名为hello的请求发生响应。
三.结合实例学习SpirngMVC工作过程
以上一篇的博客为例:
我们实现的功能是,在index.jsp中点击hello,控制台打印hello world,界面转到success.jsp
在这个过程中:
1.我们点击hello发送url为http://localhost:8080/SpringStudy/hello的请求到前端控制器
2.前端控制器在处理器映射中查询到有一个名为hello的@RequestMapping(value=“hello”)在控制器TestController中于是就将请求信息转发到这个控制器
3.控制器调用@RequestMapping(value=“hello”)对应的方法对请求进行处理,这时在控制台hello world
4.返回名为success的视图名给前端控制器。
5.前端控制器调用视图解析器生成响应url:
http://localhost:8080/SpringStudy/WEB-INF/view/success.jsp。
6.调用success.jsp作为响应页面呈现给我们。