一.springmvc简介
 
1.springmvc是什么?
 
①mvc解释
 
- m:模型层(javabean处理数据)例如pojo类 Service或Dao
 - v:视图层(页面展示数据)
 - c:控制层(接受请求和响应浏览器)
 
 
②web三层架构
 
- 表述层:jsp和servlet
 - 业务层:service
 - 数据访问层:dao
 
 
③springmvc
 
- springmvc是开发表述层的一套完整方案(即视图层和控制层)
 
 
2.springmvc的特点是什么?
 
- 与IOC容器无缝衔接
 - 功能强大的前端控制器DispatcherServlet对请求和响应统一处理
 
 
二.入门环节
 
1.引入依赖
 
2.配置web.xml
 
①配置springMVC的前端控制器
 
- 注意:对所有请求进行控制
 - / 所匹配的是全部除了jsp请求,因为jsp请求tomocat有控制器
 - /*是全部包括jsp请求
 - 这里设置为/
 
 
3.设置springmvc的配置文件
 
①web.xml中配置springmvc的路径
 
- 因为配置文件都需放在resources下
 - 故我们需要在web.xml中声明springmvc的配置文件的查找路径
 
 
②具体配置sprignmvc的文件
 
- 配置IOC容器(注解加扫描)
 - 配置thymeleaf视图解析器 
  
- 视图前缀:可以在访问视图时自动加上视图前缀 /WEB-INF/templates/(网页放在该路径下)
 - 视图后缀:可以在访问视图时自动加上视图后缀 .html(网页用html来写)
 
  - 开启mvc注解驱动(利用mvc的注解来实现访问controller)
 
 
4.controller类的编写
 
①加入IOC容器扫描的注解
 
 
②加入处理请求的注解
 
 
③测试跳转
 
- 在超链接中:@{/hello} 来声明跳转位置
 - 在@requestMapping(“/hello”) 来声明处理的地址
 
 
5.执行情况总结
 
①执行过程
 
- 浏览器发送请求
 - 请求地址符合web.xml中配置url-pattern中配置的前端控制器,请求被前端控制器处理
 - 前端控制器读取springmvc的核心配置文件 
  
- 通过扫描组件找到控制器
 - 将请求地址和控制器中的@requestMapping(“”) 注解的value匹配,匹配成功,则处理请求
 
  - 处理请求返回一个字符串视图名称
 - 字符串被视图解析器解析
 - 加上前缀和后缀,通过thymeleaf渲染,最终转发到相应的页面
 
 
②注意
 
 
三.requestMapping注解
 
1.注解架构
 

 
2.注解细节
 
①路径占位符
 
- 目的:地址中不需要以键值对的形式传入数据,只需传入一个值(值),在注解处声明该值的键(键)即可
 
 
<a th:href="@{/testRest/1/admin}">测试路径中的占位符-->/testRest</a><br>
@RequestMapping("/testRest/{id}/{username}")
public String testRest(@PathVariable("id") String id, @PathVariable("username")
String username){
System.out.println("id:"+id+",username:"+username);
return "success";
}
//最终输出的内容为-->id:1,username:admin
 
②
 
四.获取请求参数
 
1.框架
 

 
2.注意点
 
①解决获取请求参数乱码问题
 
- 解决获取请求参数的乱码问题,可以使用SpringMVC提供的编码过滤器CharacterEncodingFilter,但是必须在web.xml中进行注册
 
 
②创建请求参数和形参的映射关系的三个属性(作用在形参上)
 
- value:指定为形参赋值的请求参数的参数名
 - required:设置是否必须传输该参数
 - defaultValue:如果没传值或传输为“”则赋值为默认值
 
 
五.域对象共享数据
 
1.框架
 

 
2.注意点
 
①如何实现共享数据(最后都封装为ModelAndView)
 
- 形参设置为 request,session,model,map,modelmap 
  
- setAttribute(request,session)
 - addAttribute(model,modelmap),put(map)
 
  - 返回值设置为 ModelAndView 
   
 
 
②如何实现页面跳转
 
- 返回值设置为String 直接返回页面名称(其他交给视图解析器)
 - 返回值设置为ModelAndView 
   
 
 
六.SpringMVC视图
 
1.框架
 

 
2.注意点
 
①thymeleaf和转发视图的区别
 
- 有前缀时,此时创建名为internalresourceview视图,不会被springmvc文件中的视图解析器解析
 - 无前缀时,此时创建名为ThymeleafViewResolver视图,会被springmvc文件中的视图解析器解析
 - 故有前缀时,访问网页需要写全绝对路径
 
 
②redirect(绝对路径默认为 http://localhost:8080无上下文路径)
 
- redirect创建redirectview视图,重定向视图会被自动在绝对路径前加上下文路径
 - 重定向访问网页也许写全绝对路径
 
 
②视图控制器
 
- 设置视图控制器后,其他控制器上的所有映射全部消失,此时需要设置开启mvc注解驱动