1.1 RequestParam
1.1.1 利用解释
浸染: 把要求中指定名称的参数给掌握器中的形参赋值。
属性:
value:要求参数中的名称。
required:要求参数中是否必须供应此参数。默认值:true。表示必须供应,如果不供应将报错。
1.1.2 利用示例
1.2 RequestBody
1.2.1 利用解释
浸染:
用于获取要求体内容。直策应用得到是 key=value&key=value...构造的数据。 get 要求办法不适用。
属性:
required:是否必须有要求体。默认值是true。当取值为 true 时,get 要求办法会报错。如果取值为false,get 要求得到是 null。
1.2.2 利用示例
1.3 PathVaribale
1.3.1 利用解释
浸染:
用于绑定 url 中的占位符。例如:要求url中/delete/{id},这个{id}便是url占位符。是springmvc 支持 rest 风格 URL 的一个主要标志。
属性:
value:用于指定 url 中占位符名称。
required:是否必须供应占位符。
1.3.2 利用示例
1.3.3 REST 风格 URL
什么是 rest:
REST(英文:Representational State Transfer,简称 REST)描述了一个架构样式的网络系统, 比如 web 运用程序。它首次涌如今 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的紧张编写者之 一。在目前主流的三种 Web 做事交互方案中,REST 比较于 SOAP(Simple Object Access protocol,大略工具访问协议)以及 XML-RPC 更加大略明了,无论是对 URL 的处理还是对 Payload 的编码,REST 都方向于用更加大略轻量的方法设计和实现。值得把稳的是 REST 并没有一个明确的标准,而更像是一种设计的风格。
它本身并没有什么实用性,其核心代价在于如何设计出符合 REST 风格的网络接口。
restful 的优点:它构造清晰、符合标准、易于理解、扩展方便,以是正得到越来越多网站的采取。
restful 的特性:
资源(Resources):网络上的一个实体,或者说是网络上的一个详细信息。 它可以是一段文本、一张图片、一首歌曲、一种做事,总之便是一个详细的存在。可以用一个 URI(统一资源定位符)指向它,每种资源对应一个特定的 URI 。要获取这个资源,访问它的 URI 就可以,因此 URI 即为每一个资源的独一无二的识别符。
表现层(Representation):把资源详细呈现出来的形式,叫做它的表现层 (Representation)。 比如,文本可以用 txt 格式表现,也可以用 HTML 格式、XML 格式、JSON 格式表现,乃至可以采取二 进制格式。
状态转化(State Transfer):每发出一个要求,就代表了客户端和做事器的一次交互过程。 HTTP 协议,是一个无状态协议,即所有的状态都保存在做事器端。因此,如果客户端想要操作做事器, 必须通过某种手段,让做事器端发生“状态转化”(State Transfer)。而这种转化是建立在表现层之上的,以是便是 “表现层状态转化”。详细说,便是 HTTP 协议里面,四个表示操作办法的动词:GET 、POST 、PUT、 DELETE。它们分别对应四种基本操作:GET 用来获取资源,POST 用来新建资源,PUT 用来更新资源,DELETE 用来删除资源。
1.3.4 基于 HiddentHttpMethodFilter 的示例
浸染: 由于浏览器 form 表单只支持 GET 与 POST 要求,而 DELETE、PUT 等 method 并不支持,Spring3.0 添 加了一个过滤器,可以将浏览器要求改为指定的要求办法,发送给我们的掌握器方法,使得支持 GET、POST、PUT 与 DELETE 要求。
利用方法:
第一步:在 web.xml 中配置该过滤器。
第二步:要求办法必须利用 post 要求。
第三步:按照哀求供应_method 要求参数,该参数的取值便是我们须要的要求办法。
1.4 RequestHeader
1.4.1 利用解释
浸染: 用于获取要求头。
属性: value:供应头名称
required:是否必须有此头
注: 在实际开拓中一样平常不怎么用。
1.5 CookieValue
1.5.1 利用解释
浸染: 用于把指定 cookie 名称的值传入掌握器方法参数。
属性: value:指定 cookie 的名称。
required:是否必须有此 cookie。
1.5.2 利用举例:
1.6 ModelAttribute
1.6.1 利用解释
浸染:
该表明是 SpringMVC4.3 版本往后新加入的。它可以用于润色方法和参数。 涌如今方法上,表示当前方法会在掌握器的方法实行之前,先实行。它可以润色没有返回值的方法,也可以润色有详细返回值的方法。
涌如今参数上,获取指定的数据给参数赋值。
属性:
value:用于获取数据的 key。key 可以是 POJO 的属性名称,也可以是 map 构造的 key。
运用处景:
当表单提交数据不是完全的实体类数据时,担保没有提交数据的字段利用数据库工具原来的数据。
例如: 我们在编辑一个用户时,用户有一个创建信息字段,该字段的值是不许可被修正的。在提交表单数据是肯定没有此字段的内容,一旦更新会把该字段内容置为 null,此时就可以利用此表明办理问题。
1.7 SessionAttribute
1.7.1 利用解释
浸染: 用于多次实行掌握器方法间的参数共享。
属性: value:用于指定存入的属性名称
type:用于指定存入的数据类型。
二、相应数据和结果视图
2.1 返回值分类
2.1.1 字符串
2.1.2 void
Servlet 原始 API 可以作为掌握器中方法的参数: @RequestMapping("/testReturnVoid")
public void testReturnVoid(HttpServletRequest request,HttpServletResponse response) throws Exception { }
在 controller 方法形参上可以定义 request 和 response,利用 request 或 response 指定相应结果:
1、利用 request 转向页面,如下:
request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request, response);
2、也可以通过 response 页面重定向: response.sendRedirect("testRetrunString")
3、也可以通过 response 指定相应结果,例如相应 json 数据: response.setCharacterEncoding("utf-8"); response.setContentType("application/json;charset=utf-8"); response.getWriter().write("json 串");
2.1.3 ModelAndView
ModelAndView 是 SpringMVC 为我们供应的一个工具,该工具也可以用作掌握器方法的返回值。
示例代码:
@RequestMapping("/testReturnModelAndView")
public ModelAndView testReturnModelAndView() {
ModelAndView mv = new ModelAndView();
mv.addObject("username", "张三");
mv.setViewName("success");
return mv;
}
2.2 转发和重定向
2.2.1 forward 转发
controller 方法在供应了 String 类型的返回值之后,默认便是要求转发。我们也可以写成:
@RequestMapping("/testForward")
public String testForward() {
System.out.println("AccountController 的 testForward 方法实行了");
return "forward:/WEB-INF/pages/success.jsp";
}
把稳:如果用了formward:则路径必须写成实际视图url,不能写逻辑视图。
它相称于“request.getRequestDispatcher("url").forward(request,response)”利用要求 转发,既可以转发到 jsp,也可以转发到其他的掌握器方法。
2.2.2 Redirect 重定向
2.3 ResponseBody 相应 json 数据
2.3.1 利用解释
浸染: 该表明用于将 Controller 的方法返回的工具,通过 HttpMessageConverter 接口转换为指定格式的数据,如:json,xml 等,通过Response相应给客户端
2.3.2 利用示例
需求: 利用@ResponseBody 表明实现将 controller 方法返回工具转换为 json 相应给客户端。
前置知识点: Springmvc 默认用 MappingJacksonHttpMessageConverter 对 json 数据进行转换,须要加入 jackson 的包。
jsp 中的代码:
掌握器中的代码:
三、SpringMVC 实现文件上传
3.1 文件上传的回顾
3.1.1 文件上传的必要条件
3.1.2 文件上传的事理剖析
3.1.3 借助第三方组件实现文件上传
3.2 springmvc 传统办法的文件上传
3.2.1 解释
传统办法的文件上传,指的是我们上传的文件和访问的运用存在于同一台做事器上。 并且上传完成之后,浏览器可能跳转。
3.2.2 实现步骤
3.2.2.1 第一步:拷贝文件上传的 jar 包到工程的 lib 目录
3.2.2.2 第二步:编写 jsp 页面
3.2.2.3 第三步:编写掌握器
3.2.2.4 第四步:配置文件解析器
3.3 springmvc 跨做事器办法的文件上传
3.3.1 分做事器的目的
在实际开拓中,我们会有很多处理不同功能的做事器。例如:
运用做事器:卖力支配我们的运用
数据库做事器:运行我们的数据库
缓存和做事器:卖力处理大并发访问的缓存和
文件做事器:卖力存储用户上传文件的做事器。
分做事器处理的目的是让做事器各司其职,从而提高我们项目的运行效率。
3.3.2 准备两个 tomcat 做事器,并创建一个用于存放图片的 web 工程
3.3.3 拷贝 jar 包
3.3.4 编写掌握器实现上传图片
3.3.5 编写 jsp 页面
3.3.6 配置解析器