20201130+袁鑫
学习日志
知识总结
响应数据和结果视图
字符串
controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址
void
注入request/response进行重定向以及请求转发操作。
ModelAndView
ModelAndView 是 SpringMVC 为我们提供的一个对象,该对象也可以用作控制器方法的返回值。
ModelAndView.addObject(); 键值对的形式存储到request域中
ModelAndView.serViewName();设置物理视图,用于返回时返回。ModelAndView本身有带物理视图值的构造函数,可以在创建实例对象的时候就传值。
转发和重定向
forward 转发
return "forward:/WEB-INF/pages/success.jsp";
需要注意的是,如果用了 forward: 则路径必须写成实际视图 url,不能写逻辑视图。
Redirect 重定向
return "redirect:testReturnModelAndView";
需要注意的是,如果是重定向到 jsp 页面,则 jsp 页面不能 写在 WEB-INF 目录中,否则无法找到。
ResponseBody 响应 json 数据
该注解用于将 Controller 的方法返回的对象,通过 HttpMessageConverter 接口转换为指定格式的数 据如:json,xml 等,通过 Response 响应给客户端
@RequestBody获取json数据
将获取到的json字符串转换为预期的对象
@RestController
RestController 相当于将 ResponseBody 注解在一个注解有 Controller 的类上。这时,类中所有返 回的字符串都会解析为一个串返回,而不经过视图解析器,也就是说返回的字符串不再是一个逻辑视图了。
SpringMVC 实现文件上传
- form 表单的 enctype 取值必须是: multipart/form-data (默认值是: application/x-www-formurlencoded ) enctype:是表单请求正文的类型
- method 属性取值必须是 Post
- 提供一个文件选择域
springmvc 跨服务器方式的文件上传
分服务器的目的
在实际开发中,我们会有很多处理不同功能的服务器。例如:
应用服务器:负责部署我们的应用
数据库服务器:运行我们的数据库
缓存和消息服务器:负责处理大并发访问的缓存和消息
文件服务器:负责存储用户上传文件的服务器。
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
<!--加入此行的含义是:接收文件的目标服务器可以支持写入操作。(如果是同一个服务器上的两个服务,
记得修改端口)
-->
SpringMVC 中的拦截器
过滤器和拦截器区别:
- 拦截器是基于java的反射机制的,而过滤器是基于函数回调。
- 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
- 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
- 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
- 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
- 拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个 service,可以调用业务逻辑。
心得
今天的学习还是挺充实的,但是练习还是太慢了,还有些没练习完,一个原因是上周六的占了些时间,其次就是解决错误的能力还有待提高。
近期评论