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 实现文件上传
  1. form 表单的 enctype 取值必须是: multipart/form-data (默认值是: application/x-www-formurlencoded ) enctype:是表单请求正文的类型
  2. method 属性取值必须是 Post
  3. 提供一个文件选择域
springmvc 跨服务器方式的文件上传
分服务器的目的

在实际开发中,我们会有很多处理不同功能的服务器。例如:

应用服务器:负责部署我们的应用

数据库服务器:运行我们的数据库

缓存和消息服务器:负责处理大并发访问的缓存和消息

文件服务器:负责存储用户上传文件的服务器。

<init-param>
    <param-name>readonly</param-name>
    <param-value>false</param-value>
</init-param>
<!--加入此行的含义是:接收文件的目标服务器可以支持写入操作。(如果是同一个服务器上的两个服务,
记得修改端口)
   -->

SpringMVC 中的拦截器

过滤器和拦截器区别:

  1. 拦截器是基于java的反射机制的,而过滤器是基于函数回调。
  2. 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
  3. 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
  4. 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
  5. 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
  6. 拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个 service,可以调用业务逻辑。

image-20201130232523301

心得

今天的学习还是挺充实的,但是练习还是太慢了,还有些没练习完,一个原因是上周六的占了些时间,其次就是解决错误的能力还有待提高。

标签

评论

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1