I used WireShark to analyze the HTTP protocol, I found that a HTTP request which was large enough will be disassembled into several TCP packets like this: HTTP request method as a packet; HTTP request headers as a packet and HTTP content as a packet.
My question is: Is the TCP segments division decided by upper layer protocol or some other way?

It's extremely complicated, but tcp packet segmentation is controlled by the TCP protocol stack. Whatever is implementing that decides how and when to segment and route tcp packets to the next lower level (usually the IP layer).
–
Jason CocoAug 19 '11 at 9:16

Upper layer protocols are encapsulated insite TCP payload. TCP like any other level, is unaware of the above levels.
TCP packets has a maximum size (MTU: maximum transmission unit), when an HTTP (or other higher level protocols) need more space to transmit data, payload will be splitted on different TCP segments.