Servlet回顾
创一个空的maven父工程,导入相关依赖,测试的、spring的、servlet的、jsp以及jstl标签的。

创建一个空的maven子项目,并添加web支持


为了保险起见,在子项目中添加servlet和jsp的依赖

编写一个Servlet类,实现HttpServlet接口获取前端参数,以及重定向,这里为了方便先不做业务层调用。

根据重定向的地址在对应文件夹下编写相应jsp页面文件,直接在session里取msg的信息显示出来

在web.xml中配置我们刚编写的Servlet的路由

再编写一个表单提交页面,表单提交后跳转至我们刚才配置的Servlet的路由,这里信息不完全,应该还有个input的submit提交,这里input的name为method,也就是我们输入信息的名字为method,和我们Servlet中根据method获取到我们输入的信息一致


配置tomcat



启动项目,这里因为我们的表单页面没写好,我们就直接根据我们配置的Servlet路由/hello去访问Servlet,并且,我们把提交的名字为method的信息手动加上去,?method=add,这里Servlet根据method获取到信息为add。并将"执行了add方法"存到了session中并且名字为msg,重定向到了我们刚才定义的test.jsp页面,并在页面中取出session中的msg信息并显示了出来,所以我们得到了如下所示的页面。

理解SpringMVC小demo
Spring的web框架围绕DispatcherServlet设计。 DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解的controller声明方式。Spring MVC框架像许多其他MVC框架一样,以请求为驱动,围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet是一个实际的Servlet (它继承自HttpServlet 基类)。
1.新建一个Moudle , 添加web的支持!
2.确定导入了SpringMVC 的依赖!
3.配置web.xml注册DispatcherServlet

4,编写SpringMVC的配置文件! 名称: springmvc-servlet.xml
5.添加 处理映射器
6.添加 处理器适配器
7.添加 视图解析器

8.编写我们要操作业务Controller ,要么实现Controller接口,要么增加注解; 需要返回一个ModelAndView,装数据,封视图;


9.编写重定向的hello.jsp页面,从ModelAndView中取出我们在Controller中存的msg

10.将自己的类交给SpringloC容器,注册bean,在springmvc-servlet.xml中配置,id为访问该controller的路由

11.配置Tomcat启动测试


可能遇到的问题: 访问出现404,排查步骤
建立一个lib目录

在lib中加入依赖,应用后,再次运行即可
SpringMVC原理

1.DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求DispatcherServlet接收请求并拦截请求。
我们假设请求的url为:http://localhost:8080/SpringMVC/hello
如上url拆分成三部分:
http://localhost:8080服务器域名
SpringMVC部署在服务器上的web站点
hello表示控制器
通过分析,如上url表示为: 请求位于服务器localhost:8080上的SpringMVC站点的hello控
制器。
2.HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。
HandlerMapping在springmvc-servlet.xml中去对照相应的路由所对应的controller

3.HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为: hello。
就找到对应/hello的HelloController控制器
4. HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等
5.HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。
6.Handler让具体的Controller执行。

7.Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView.
8.HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet.
9. DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。
在springmvc-servlet.xml中配置了视图解析器,将ModelAndView中重定向的hello,拼接上具体的路由,/WEB-INF/jsp/hello.jsp,这是完整的重定向地址。
