SpringMVC基础入门
配置版
1、新建一个Moudle , springmvc-01-hello , 添加web的支持!
1 | <dependency> |
3、配置web.xml , 注册DispatcherServlet;
1 |
|
4、编写SpringMVC的配置文件,名称:springmvc-servlet.xml;
1 |
|
5、添加处理映射器;
1 | <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> |
6、添加处理适配器;
1 | <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> |
7、添加视图解析器;
1 | <!--视图解析器:DispatcherServlet给他的ModelAndView--> |
8、编写我们要操作业务Controller,要么实现Controller接口,要么增加注解,需要返回一个ModelAndView,封装数据,封装视图;
1 | package com.asher.controller; |
9、将自己的类交给SpringIOC容器,注册bean;
1 | <!--Handler--> |
10、写要跳转的jsp页面,显示ModelAndView存放的数据,以及我们正常的页面;
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
11、配置Tomcat,启动测试
可能遇到的问题,出现访问404,排查步骤:
- 查看控制台输出,看一下是不是缺少了什么jar包。
- 如果jar包存在,显示无法输出,就在IDEA的项目发布中,添加lib依赖!
- 重启Tomcat 即可解决!
小结:
在这个过程中,我们仅仅是理解在SpringMVC中的入门知识,通过代码去理解其中的原理,实际开发中是不可能这样做的,在实际开发中, 我们使用的是注解版的开发,能简化大部分SpringMVC的配置版的步骤和优化代码。
注解版
1、新建一个Moudle,springmvc-02-hello-annotation 。添加web支持!
2、由于Maven可能存在资源过滤的问题,我们将配置完善
1 | <build> |
3、在pom.xml文件引入相关的依赖:主要有Spring框架核心库、Spring MVC、servlet , JSTL等。我们在父依赖中已经引入了!
1 | <dependency> |
4、配置web.xml
注意点:就做两步这两步都是写死的,第一步注册springMVC的servlet(DispatchServlet),关联配置文件springmvc-servlet.xml;第二步拦截请求;
1 |
|
/ 和 /* 的区别:
< url-pattern > / </ url-pattern > 不会匹配到.jsp, 只针对我们编写的请求;即:.jsp 不会进入spring的 DispatcherServlet类 。
< url-pattern > /* </ url-pattern > 会匹配 *.jsp,会出现返回 jsp视图时再次进入spring的DispatcherServlet 类,会再次拼接,导致找不到对应的controller所以报404错。
配置文件的注意点:
- 注意web.xml版本问题,要最新版!
- 注册DispatcherServlet
- 关联SpringMVC的配置文件
- 启动级别为1
- 映射路径为 / 【不要用/*,会404】
5、添加SpringMVC的配置文件
在resource目录下添加springmvc-servlet.xml配置文件,配置的形式与Spring容器配置基本类似,为了支持基于注解的IOC,设置了自动扫描包的功能,具体配置信息如下:
1 | <beans xmlns="http://www.springframework.org/schema/beans" |
简化配置信息:1、自动扫描注解,2、不处理静态资源,3、支持mvc注解驱动,4、配置视图解析器
1 | <beans xmlns="http://www.springframework.org/schema/beans" |
6、创建Controller
编写一个Java控制类com.asher.controller.HelloController , 注意编码规范
1 | import org.springframework.stereotype.Controller; |
- @Controller是为了让Spring IOC容器初始化时自动扫描到;
- @RequestMapping是为了映射请求路径,这里因为类与方法上都有映射所以访问时应该是/HelloController/hello;
- 方法中声明Model类型的参数是为了把Action中的数据带到视图中;
- 方法返回的结果是视图的名称hello,加上配置文件中的前后缀变成WEB-INF/jsp/hello.jsp。
7、创建视图层
在WEB-INF/ jsp目录中创建hello.jsp , 视图可以直接取出并展示从Controller带回的信息;
可以通过EL表示取出Model中存放的值,或者对象;
1 | <%@ page contentType="text/html;charset=UTF-8" language="java" %> |
8、配置Tomcat运行
配置Tomcat , 开启服务器 , 访问 对应的请求路径!
小结:
实现步骤非常简单:
- 新建一个web项目
- 导入相关jar包
- 编写web.xml , 注册DispatcherServlet
- 编写springmvc配置文件
- 接下来就是去创建对应的控制类 , controller
- 最后完善前端视图和controller之间的对应
- 测试运行调试
总结
使用SpringMVC必须配置的三大件:
处理器映射器、处理器适配器、视图解析器
通常,我们只需要手动配置视图解析器,而处理器映射器和处理器适配器只需要开启注解驱动即可,而省去了大段的xml配置。
回顾原理图可以更加清晰理解SpringMVC的运行机制