1.1 RequestParam

1.1.1 利用解释

浸染: 把要求中指定名称的参数给掌握器中的形参赋值。

jsp上传歌词SpringMVC常识 day02 常用注解u0026响应数据u0026文件上传 JavaScript

属性:

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 配置解析器