让我们来写一下我们的第一个 Spring MVC 程序:
新建一个Maven工程当做父工程!pom依赖!
主要有Spring框架核心库、Spring MVC、servlet , JSTL等。
由于Maven可能存在资源过滤的问题,我们将配置完善junit junit 4.12 org.springframework spring-webmvc 5.1.9.RELEASE javax.servlet servlet-api 2.5 javax.servlet.jsp jsp-api 2.2 javax.servlet jstl 1.2
新建一个Moudle , springmvc-02-hello,MavenWeb项目src/main/java ***.xml false src/main/resources ***.xml false
Spring MVC 是基于 Servlet 的,DispatcherServlet 是整个 Spring MVC 框架的核心,主要负责截获请求并将其分派给相应的处理器处理。所以配置 Spring MVC,首先要定义 DispatcherServlet。跟所有 Servlet 一样,用户必须在 web.xml 中进行配置。
注册DispatcherServlet中央调度器springmvc org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc-servlet.xml 1 springmvc /
上述代码配置了一个名为“springmvc”的 Servlet。该 Servlet 是 DispatcherServlet 类型,它就是 Spring MVC 的入口,并通过
Spring MVC 初始化时将在应用程序的 WEB-INF 目录下查找配置文件,该配置文件的命名规则是“servletName-servlet.xml”,例如 springmvc-servlet.xml。
也可以将 Spring MVC 的配置文件存放在应用程序目录中的任何地方,但需要使用 servlet 的 init-param 元素加载配置文件,通过 contextConfigLocation 参数来指定 Spring MVC 配置文件的位置,示例代码如下。
contextConfigLocation
classpath:springmvc-servlet.xml
此处使用 Spring 资源路径的方式进行指定,即 classpath:springmvc-servlet.xml。
在中添加的作用是,,标记是否在Web服务器(这里是Tomcat) 启动时会创建这个 Servlet 实例,即是否在 Web 服务器启动时调用执行该 Servlet 的 init()方法,而不是在真正访问时才创建。它的值必须是一个整数。
● 当值大于等于 0 时,表示容器在启动时就加载并初始化这个 servlet,数值越小,该 Servlet的优先级就越高,其被创建的也就越早;
● 当值小于 0 或者没有指定时,则表示该 Servlet 在真正被使用时才会去创建。
● 当值相同时,容器会自己选择创建顺序。
< url-pattern > / url-pattern > 不会匹配到.jsp, 只针对我们编写的请求;即:.jsp 不会进入spring的 DispatcherServlet类 。< url-pattern > /* url-pattern > 会匹配 *.jsp,会出现返回 jsp视图 时再次进入spring的DispatcherServlet 类,导致找不到对应的controller所以报404错。
创建Spring MVC配置文件在工程的类路径即 src 目录下创建 SpringMVC 的配置文件 springmvc.xml。
这个文件名的开头 springmvc与上面 web.xml 中的 元素配置的 springmvc 对应,这是 Spring MVC 的映射配置文件(xxx-servlet.xml)
添加 处理映射器
添加 处理器适配器
修改视图解析器的注册
SpringMVC 框架为了避免对于请求资源路径与扩展名上的冗余,在视图解析器 InternalResouceViewResolver 中引入了请求的前辍与后辍。而 ModelAndView 中只需给出要跳转页面的文件名即可,对于具体的文件路径与文件扩展名,视图解析器会自动完成拼接。
定义处理器该处理器需要实现 Controller 接口。
Controller 是控制器接口,接口中只有一个方法 handleRequest,用于处理请求和返回 ModelAndView。
ModelAndView 类中的 addObject()方法用于向其 Model 中添加数据。Model 的底层为一个 HashMap。
Model 中的数据存储在 request 作用域中,SringMVC 默认采用转发的方式跳转到视图,本次请求结束,模型中的数据被销毁。
注册处理器
在 springmvc.xml 中注册处理器。不过,需要注意处理器的 id 属性值为一个请求 URI。表示当客户端提交该请求时,会访问 class 指定的这个处理器。
将自己的类交给SpringIOC容器,注册bean
定义目标页面View
在 WEB-INF 目录下新建一个子目录 jsp,在其中新建一个 jsp 页面 hello.jsp。
写要跳转的jsp页面,显示ModelandView存放的数据,以及我们的正常页面;
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Kuangshen
${msg}
部署运行



