《Springboot+SpringCloud实战 05-第五章电子课件.ppt》由会员分享,可在线阅读,更多相关《Springboot+SpringCloud实战 05-第五章电子课件.ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Springboot+SpringCloud实战05-第五章电子课件第五章 Spring Boot Web应用开发学习目标l 掌握Spring Boot Web应用开发常用注解、JSR-303校验工具的使用。l 掌握JSP以及基于Thymeleaf的开发过程。l 了解Spring Boot中访问静态资源的原理和方式。通过第4章,我们了解了Spring Boot项目的自动装配过程和启动过程。本章我们来深入讲解Spring Boot在Web应用开发中的使用。Spring Boot Web开发常用注解12JSR-303校验的使用3Spring Boot实现JSP页面的Web应用开发4Spring B
2、oot实现基于Thymeleaf模板的Web应用开发5Thymeleaf的使用6访问静态资源Spring Boot Web开发常用注解回顾第2章,在编写HelloController应用时我们使用了3个注解Controller、RequestMapping、ResponseBody,相信读者都已经清楚它们的含义,这里不赘述。下面我们介绍另一个常用注解:RestController。RestController用在类上,它和Controller的含义类似,只是多了一层含义。在类上加上这个注解,表示此类中的所有方法都返回JSON格式的数据,它的作用等同于ResponseBody。所以,RestCo
3、ntroller相当于Controller和ResponseBody的结合,使用RestController后就不用在每个方法上写ResponseBody。为了验证RequestMapping和RestController注解的作用,我们创建一个名为HelloController2的类,如程序清单5-1所示。然后启动demo项目,在浏览器中进行验证,如图5-1所示,成功返回“hello2”。Spring Boot Web开发常用注解Spring Boot Web开发常用注解常用的注解还有GetMapping、PostMapping、DeleteMapping、PutMapping。GetMap
4、ping相当于RequestMapping(value=“/”,method=RequestMethod.GET)。RequestMapping中我们仅写了value,没写method(默认GET和POST都支持)。同理,另外3个也是类似的。这4个注解主要用于RESTful风格开发。RESTful是一种互联网软件架构设计的风格,它提出了一组客户端和服务器交互时的架构理念和设计原则,基于这种理念和原则设计的接口更简洁、更有层次。举一个简单的例子,我们要访问一个接口“http:/localhost:8080/order?id=1”,采用RESTful风格则地址为“http:/localhost/o
5、rder/1”。实现RESTful风格最重要的就是PathVariable,使用它将URL中占位符参数绑定到控制器处理方法的参数中。下面我们通过实际的例子来理解。编写hello3方法。注意,URL中作为参数的“word”要使用花括号标注。然后,我们重启demo项目,在浏览器中进行验证。Spring Boot Web开发常用注解在传统开发中,我们通常只使用GET和POST方式来实现增删改查,所以URL中通常是动词。例如,获取ID为1的学生的URL为“http:/localhost:8080/getStudent?id=1”,而RESTful风格则使用名词,即“http:/localhost:80
6、80/student/1”。并且增删改查都使用这一个URL,那么怎样区分操作类型呢?答案是通过请求方式。这4个注解PostMapping、DeleteMapping、PutMapping和GetMapping刚好分别对应增删改查,即对应POST请求、DELETE请求、PUT请求和GET请求。Spring Boot Web开发常用注解12JSR-303校验的使用3Spring Boot实现JSP页面的Web应用开发4Spring Boot实现基于Thymeleaf模板的Web应用开发5Thymeleaf的使用6访问静态资源JSR-303校验的使用日常开发的业务中难免遇到对数据的校验,例如,登录/
7、注册的手机号是否规范、密码长度是否符合要求、账号是否为空等。而数据校验不能只在前端页面进行,在后端同样需要对数据进行校验,以确保通过其他方式调用接口也能正常工作。如果我们在Controller中使用if-else语句来判断,代码会很多且逻辑复杂,因此我们可以使用JSR-303校验工具来实现数据校验。JSR-303是Java EE 6 中的一项规范,叫作Bean Validation。Spring从3.x版本开始就已经支持JSR-303。JSR-303通过在实体类的属性上添加注解的方式实现数据的校验。使用JSR-303校验工具的步骤如下。添加spring-boot-starter-validat
8、ion 依赖,如程序清单5-3所示。创建实体类,如程序清单5-4所示。我们在demo的entity包下创建一个User类,它有3个属性,分别是“name”(用户名)、“age”(密码)和“phone”(手机号)。其中,“message”表示在不符合校验规则时向用户展示的提示信息。我们在controller包下创建一个UserController类,写一个注册接口“regist”,用于模拟接收用户注册的表单数据,如程序清单5-5所示。JSR-303校验的使用注册请求访问此接口时,JSR-303对标注有Valid的实体类进行校验,并将校验结果封装在BindingResult对象中。hasError
9、s方法返回一个布尔值,只要有一个校验规则不符合便返回true。getFieldErrors方法返回不符合校验规则的FieldError的集合,FieldError用于存储属性名和message信息。然后,我们通过forEach循环遍历FieldError的集合,把错误信息封装进返回结果。JSR-303校验的使用JSR-303校验的使用最后,我们启动demo项目并打开浏览器,先输入不符合校验规则的表单数据进行验证,结果如图5-3所示。然后,输入符合校验规则的表单数据进行验证,结果如图5-4所示。JSR-303校验的使用读者实际操作时可能会疑惑,为什么和我们测试返回的数据显示不一样,这是因为我们给
10、Chrome浏览器安装了一个插件JSONView,它的作用是以更直观的格式展示JSON字符串,推荐读者安装。Spring Boot Web开发常用注解12JSR-303校验的使用3Spring Boot实现JSP页面的Web应用开发4Spring Boot实现基于Thymeleaf模板的Web应用开发5Thymeleaf的使用6访问静态资源Spring Boot实现JSP页面的Web应用开发Spring Boot默认是不支持JSP(Java Server Pages,Java服务器页面)的,需要添加依赖,如程序清单5-6所示。然后,在main中创建webapp目录,在webapp中创建WEB-
11、INF目录,在WEB-INF中创建在jsp目录,如图5-5所示。接下来需要修改webapp为Web资源目录。首先,打开IDEA,单击“File”菜单,选择“Project Structure”,如图5-6所示。然后,在打开的对话框的左边选择“Modules”,单击“Web”中的“Web Resource Directories”处的加号,如图5-7所示。最后,选择项目中的webapp目录再单击“OK”按钮,便指定好了Web资源目录,如图5-8和图5-9所示。Spring Boot实现JSP页面的Web应用开发Spring Boot实现JSP页面的Web应用开发然后,需要在YAML中配置JSP的
12、prefix(前缀)和suffix(后缀),如程序清单5-7所示。接着,为了验证,我们在webapp的WEB-INF/jsp下创建一个JSP文件,并将其命名为“hello.jsp”,文件内容如程序清单5-8所示。然后,在HelloController中创建一个“helloJSP”接口,该接口指向这个JSP,如程序清单5-9所示。注意,HelloController上不能有RestController注解,并且它和这个接口方法上都不能有ResponseBody注解。最后重启demo项目,在浏览器中访问hello.jsp,如图5-10所示。Spring Boot实现JSP页面的Web应用开发Spr
13、ing Boot Web开发常用注解12JSR-303校验的使用3Spring Boot实现JSP页面的Web应用开发4Spring Boot实现基于Thymeleaf模板的Web应用开发5Thymeleaf的使用6访问静态资源Spring Boot实现基于Thymeleaf模板的Web应用开发在Spring Boot中不推荐使用JSP,因为JSP其实是JSP引擎动态生成的Servlet类,所以需要用本地空间webapp来保存,而Spring Boot程序往往是以jar包的形式脱离容器独立运行的,如果设置额外的空间去保存JSP可能存在安全问题。因此,Spring Boot提供了另外两种支持自动
14、装配的模板引擎,分别是Thymeleaf和FreeMarker。因为Thymeleaf更容易上手,所以这里我们学习使用基于Thymeleaf模板的Web应用开发。首先,添加Thymeleaf依赖。然后,在resources/templates目录下创建一个名为“hello.html”的文件。注意,如果不打算在templates中创建,则需要在YAML中配置Thymeleaf的前缀。接着,在HelloController中创建一个名为“helloThymeleaf”的接口,其中Model对象用于传值。最后,我们重启demo项目,在浏览器中访问hello.html。Spring Boot Web开
15、发常用注解12JSR-303校验的使用3Spring Boot实现JSP页面的Web应用开发4Spring Boot实现基于Thymeleaf模板的Web应用开发5Thymeleaf的使用6访问静态资源Thymeleaf的使用Thymeleaf的主要作用是把Model对象中的数据渲染到HTML中,它采用的是和JSTL(JPS Standard Tag Library,JSP标准标签库)中类似的一系列标签,这些标签可以用于逻辑判断、循环遍历、动态赋值等。另外,需要知道它常用的两个表达式。一个是变量表达式$,用于获取Model对象中的数据。另外一个是URL表达式,用于标注资源路径,包括静态资源、H
16、TTP链接以及后端接口。Spring Boot Web开发常用注解12JSR-303校验的使用3Spring Boot实现JSP页面的Web应用开发4Spring Boot实现基于Thymeleaf模板的Web应用开发5Thymeleaf的使用6访问静态资源访问静态资源Spring Boot提供了不通过Controller接口,直接访问静态资源的方式。静态资源指的是HTML、JS、CSS等前端文件,以及图片、视频等多媒体文件。我们只需把静态资源放在Spring Boot默认的静态资源目录下,便可通过文件名直接访问文件。Spring Boot默认的静态资源目录有4个,它们在ResourcePro
17、perties类的属性CLASSPATH_RESOURCE_LOCATIONS定义中,如图5-12所示。注意,这4个目录的优先级从前往后排列,我们通常用static就可以了。如图5-13所示,在resources/static中放一张图片。然后我们重启demo项目,在浏览器中直接根据文件名就能访问该图片,如图5-14所示。访问静态资源我们也可以自定义静态资源目录。自定义静态资源目录有两种方式。第一种方式是在YAML中配置,如程序清单5-13所示。“static-path-pattern”表示静态资源映射路径,这里表示访问静态资源时需要加上“boot”。“static-locations”表示自
18、定义静态资源路径,可以定义多个,中间用逗号分隔。然后,在resources下创建一个mystatic目录,并放一张图片,如图5-15所示。最后重启demo项目,进入浏览器中进行验证,如图5-16所示。访问静态资源访问静态资源第二种方式是配置类,只需要实现WebMvcConfigurer接口中的addResourceHandlers方法即可,如程序清单5-14所示。调用ResourceHandlerRegistry 对象的addResourceHandler方法添加静态资源映射路径,调用addResourceLocations方法添加自定义静态资源路径,最终效果和在YAML中配置的效果一致。程序清单5-14 实现WebMvcConfigurer接口中的addResourceHandlers方法求自定义谢 谢