邹瑞20201130

总结

controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址

注意: 我们在页面上获取值使用的是 requestScope.username 取的,所以返回 ModelAndView 类型时,浏 览器跳转只能是请求转发。

转发和重定向

forward 转发

controller 方法在提供了 String 类型的返回值之后,默认就是请求转发。我们也可以写成:

@RequestMapping("/testForward")

public String testForward() {

System.out.println("TestReturnController 的 testForward 方法执行 了。。。。");

return "forward:/WEB-INF/pages/success.jsp"; }

需要注意的是,如果用了 forward: 则路径必须写成实际视图 url,不能写逻辑视图。 它相当于 request.getRequestDispatcher("url").forward(request,response) 。使用请求转 发,既可以转发到 jsp ,也可以转发到其他的控制器方法。

Redirect 重定向

contrller 方法提供了一个 String 类型返回值之后,它需要在返回值里使用:redirect:

@RequestMapping("/testRedirect")

public String testRedirect() { System.out.println("TestReturnController 的 testRedirect 方法执行 了。。。。");

return "redirect:testReturnModelAndView"; }

它相当于 response.sendRedirect(url) 。需要注意的是,如果是重定向到 jsp 页面,则 jsp 页面不能 写在 WEB-INF 目录中,否则无法找到。

ResponseBody 响应 json 数据

作用: 该注解用于将 Controller 的方法返回的对象,通过 HttpMessageConverter 接口转换为指定格式的数 据如:json,xml 等,通过 Response 响应给客户端

RestController

RestController 相当于将 ResponseBody 注解在一个注解有 Controller 的类上。这时,类中所有返 回的字符串都会解析为一个串返回,而不经过视图解析器,也就是说返回的字符串不再是一个逻辑视图 了。

SpringMVC 实现文件上传

文件上传的必要前提

  1. form 表单的 enctype 取值必须是: multipart/form-data (默认值是: application/x-www-formurlencoded ) enctype:是表单请求正文的类型
  2. method 属性取值必须是 Post
  3. 提供一个文件选择域

文件上传的原理分析

当 form 表单的 enctype 取值不是默认值后,request.getParameter()将失效。 enctype=”application/x-www-form-urlencoded”时,form 表单的正文内容是: key=value&key=value&key=value 当 form 表单的 enctype 取值为 Mutilpart/form-data 时,请求正文内容就变成: 每一部分都是 MIME 类型描述的正文

借助第三方组件实现文件上传

使用 Commons-fileupload 组件实现文件上传,需要导入该组件相应的支撑 jar 包: Commonsfileupload 和 commons-io 。 commons-io 不属于文件上传组件的开发 jar 文件,但 Commonsfileupload 组件从 1.1 版本开始,它工作时需要 commons-io 包的支持

标签

评论

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