Halo(十二)

@RequestBody @ResponseBody

@RequestBody
	
	1) 该注解用于读取 Request 请求的 body 部分数据,使用系统默认配置的 HttpMessageConverter 进行解析,
		把相应的数据绑定到要返回的对象上。

	2) 再把 HttpMessageConverter 返回的对象数据绑定到 controller 中方法的参数上。

	application/json, application/xml:这些格式的数据,必须使用 @RequestBody 来处理。


@ResponseBody

	将 Controller 的方法返回的对象通过适当的转换器转换为指定的格式后,
	写入到 response 对象的 body 区,通常用来返回 JSON数据 或 XML。

	注意:在使用 @RequestMapping 后,返回值通常解析为跳转路径,
		但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 
		比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。

JPQL查询

查询一个对象的所有属性时,并不能像 MySQL 那样使用 * 号标志。

"SELECT c.name, c.age FROM Customer c WHERE c.id > ?"

默认情况下, 若只查询部分属性, 则将返回 Object[] 类型的结果,或者 Object[] 类型的 List。

也可以在实体类中创建对应的构造器, 然后再 JPQL 语句中利用对应的构造器返回实体类的对象。

"SELECT new Customer(c.name, c.age) FROM Customer c WHERE c.id > ?"

JPA Specifications

使用Specifications,必须继承JpaSpecificationExecutor接口。

public interface Specification<T> extends Serializable {
	@Nullable
	Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder);
}

Root:
	是查询结果的一个实体对象,也就是查询结果返回的主要对象。

CriteriaQuery:
	是JPA标准,主要是构建查询条件的。
	里面的方法都是各种查询方式:distinct、select、where、groupby、having、orderby。

CriteriaBuilder:
	返回Predicate接口,其中包含between、gt(大于)、lt(小于)、not等操作。

Root:查询哪个表
CriteriaQuery:查询哪些字段,排序是什么
CriteriaBuilder:字段之间是什么关系,如何生成一个查询条件,每一个查询条件都是什么方式
Predicate:单独每一条查询条件的详细描述

URLDecoder URLEncoder 解决Get请求中文乱码问题

URLDecoder 和 URLEncoder:
	用于完成普通字符串 和 application/x-www-form-urlencoded MIME 字符串之间的相互转换。

浏览器中的地址栏中所输入的URL包含中文字符时(一般是URL携带的参数),
浏览器首先会将这些中文字符进行编码然后再发送给服务器。
实际上,浏览器会将它们转换为 application/x-www-form-urlencoded MIME 字符串。

URLEncoder类包含一个encode(String s,String enc)静态方法:
	它可以将普通字符串转换成application/x-www-form-urlencoded MIME字符串。

URLDecoder类包含一个decode(String s,String enc)静态方法:
	它可以将application/x-www-form-urlencoded MIME字符串转成普通字符串;


在 Java 代码中的 URLEncoder.encode() 的字符串
	可以在 JS 中用 decodeURIComponent() 还原成字符串。

在 JS 中用 encodeURIComponent() 的参数
	可以在 Java 代码中可以用 URLDecoder.decode(request.getParameter("param"),"UTF-8") 还原成字符串。

RSS

RSS 指 Really Simple Syndication(真正简易联合)
RSS 使您有能力聚合(syndicate)网站的内容
RSS 定义了非常简单的方法来共享和查看标题和内容
RSS 文件可被自动更新
RSS 允许为不同的网站进行视图的个性化
RSS 使用 XML 编写


通过 RSS feed(RSS 通常被称为 News feed 或 RSS feed),
用户们可以使用 RSS 聚合器来更快地检查您的网站更新(RSS 聚合器是用来聚集并分类 RSS feed 的网站或软件)。

feed:
	信源,英文是feed。
	信息发布网站将网站全部或者部分信息整合到一个 RSS 文件中,这个文件就被称之为 feed 。
	信源中包含的数据都是标准的 XML 格式,不但能直接被其他站点调用,也能在其他的终端和服务中使用。

RSS Feed

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">

<channel>
	<title>博客标题</title>
	<link>博客地址</link>
	<description>网站描述</description>
    <item>  
		<title>第一篇</title>  
		<description>摘要</description>  
		<author>作者</author>  
		<pubDate>发布时间</pubDate>  
		<link>链接</link>  
    </item>  
</channel>

</rss>


<channel> 元素用于描述 RSS feed。<channel> 元素有三个必需的子元素:
	<title> - 定义频道的标题
	<link> - 定义到达频道的超链接
	<description> - 描述此频道

每个 <channel> 元素可拥有一个或多个 <item> 元素,用于定义 RSS feed 中的一篇文章或 "story"。

<item> 元素拥有三个必需的子元素:
	<title> - 定义项目的标题
	<link> - 定义到达项目的超链接
	<description> - 描述此项目

发布自己的 RSS feed

只能当其他人能够找到您的 RSS 文档时,它才是有用的。

把您的 RSS 发布到 Web 上:

	1. 编写 RSS feed,为您的 RSS feed 命名(请注意文件必须有 .xml 的后缀)。

	2. 验证您的 RSS 文件(可以在 http://www.feedvalidator.org 找到很好的验证器)。

	3. 把 RSS 文件上传到您的 web 服务器上的 web 目录。

	4. 把页面按钮 RSS Logo 或  XML Logo 添加指向 RSS 文件的链接。

网站更新内容后,需要即时更新 RSS feed。
原文地址:https://www.cnblogs.com/loveer/p/11983880.html