一.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注解驱动